# Code patches for TotK 1.2.1 main (recomp/patches.py). Ported from MacNativeGames games/totk/runtime/game_patches.c
# (MIT, Copyright (c) 2026 MacNativeGames contributors) at upstream ebe621d; 1.2.1 sites from its game_version.h
# (2db612b), each original word checked against the 1.2.1 main. The patch page holds two floats the runtime writes at
# every present (frame_rate.c): +0 the 30 Hz ratio (seconds * 30), +4 the frame step in seconds.

set fps60    TOTK_FPS60          1
set realtime TOTK_REALTIME       1
set cloth    TOTK_CLOTH_REALTIME 1
set bounce   TOTK_HIGHFPS_FIX    1
set output   TOTK_PATCH_OUTPUT   0
set scene    TOTK_PATCH_SCENE    0
set shadow   TOTK_PATCH_SHADOW   0

# 60 fps: the adaptive present-interval controller (main+0x8f26c8, 1.0.0 0x8f6bec) gets the minimum interval 1.
site fps60 main 8f273c 6b08015f 7100055f   # clamp: cmp w10, #1 (was cmp w10, w8 = minimum)
site fps60 main 8f2740 1a89b10a 1a9fa52a   # clamp: csinc w10, w9, wzr, ge (desired = max(desired, 1))
site fps60 main 8f2764 b9401a8a d503201f   # lower trigger: nop the stored-candidate load
site fps60 main 8f27f4 6b08015f 7100055f   # raise path: cmp w10, #1
site fps60 main 8f2804 1a88c1ac 1a9fc5ac   # raise path: csinc w12, w13, wzr, gt (next lower candidate floors at 1)
site fps60 main 8f2858 b9400288 52800028   # lower path: mov w8, #1 (minimum interval 1)
site fps60 main 8f2874 2a0a03f5 1a9fa555   # lower path: csinc w21, w10, wzr, ge (result never below 1)

# Real-time step: the VFR step (main+0x7ede6c, 1.0.0 0x7a83e4) and the global ratio after the controller call
# (main+0x8f2394, 1.0.0 0x8f68b8) read ratio and seconds from the patch page instead of interval * 0.5 and interval / 60.
site realtime main 7ede7c 1e220020 @page:x9   # scvtf s0, w1 -> adrp x9, page
site realtime main 7ede80 52a84e08 bd400120   # mov w8, #60.0 -> ldr s0, [x9] (ratio)
site realtime main 7ede84 1e270101 bd400521   # fmov s1, w8 -> ldr s1, [x9, #4] (seconds)
site realtime main 7ede88 1e2c1002 d503201f   # fmov s2, #0.5 -> nop
site realtime main 7ede94 1e211801 d503201f   # fdiv s1, s0, s1 -> nop
site realtime main 7ede98 1e220800 d503201f   # fmul s0, s0, s2 -> nop
site realtime main 8f2394 bd425e60 @page:x9   # ldr s0, [x19, #0x25c] -> adrp x9, page
site realtime main 8f2398 1e2c1001 bd400120   # fmov s1, #0.5 -> ldr s0, [x9] (global ratio)
site realtime main 8f23a8 5e21d800 d503201f   # scvtf s0, s0 -> nop
site realtime main 8f23ac 1e210800 d503201f   # fmul s0, s0, s1 -> nop

# Equipment-switch cooldown (issue #18, found by JieML1100 on 1.4.3): the player update (main+0x852d24) steps the
# countdown at player state +0x109c through the timer step (main+0xec98cc) only while it is above FLT_EPSILON, but the
# equipment gate (main+0xcae6f8) blocks weapon, shield and bow changes while it is above 0. A measured ratio can leave
# a remainder in (0, FLT_EPSILON] that is never stepped again; stepping while above 0 takes it below 0.
site realtime main 852d28 1e270101 1e2703e1   # fmov s1, w8 (FLT_EPSILON) -> fmov s1, wzr

# Hair and cloth (upstream 290ec9f, 8f8022f): the actor animation update builds a second clock {seconds = factor / 30,
# ratio = factor} per rendered frame. Three inlined places: at the fmul, seconds = measured seconds * factor; at the
# store of the factor into the ratio slot, measured ratio * factor. The call of the shared update (main+0x89822c)
# scales s2 (seconds) and s3 (ratio) by the measured ratio. Upstream's veneer bodies, inlined at the site.
site cloth main 82192c 1e200900 f81f0fe9 @page:x9 bd400520 1e200900 f84107e9   # fmul s0, s8, s0
site cloth main 821928 bd0127e8 d10083ff f90003e9 3d8007ff @page:x9 bd40013f 1e3f091f bd0147ff 3dc007ff f94003e9 910083ff   # str s8, [sp, #0x124]
site cloth main 822a64 1e200900 f81f0fe9 @page:x9 bd400520 1e200900 f84107e9   # fmul s0, s8, s0
site cloth main 822a40 bd0127e8 d10083ff f90003e9 3d8007ff @page:x9 bd40013f 1e3f091f bd0147ff 3dc007ff f94003e9 910083ff   # str s8, [sp, #0x124]
site cloth main 83182c 1e210801 f81f0fe9 @page:x9 bd400521 1e210801 f84107e9   # fmul s1, s0, s1
site cloth main 831830 bd0137e0 d10083ff f90003e9 3d8007ff @page:x9 bd40013f 1e3f081f bd0157ff 3dc007ff f94003e9 910083ff   # str s0, [sp, #0x134]
site cloth main 8222f0 9401d7cf @page:x8 bd400104 1e240842 1e240863 9401d7cf   # bl 0x89822c

# Trampolines (upstream 27c3b43): the slow-motion check compares time object +0x28 (30 / (ratio * time scale)) with
# 100; compare +0x28 * +0x38 (30 / time scale) instead, the same value at 30 Hz and independent of the frame rate.
site bounce main bda798 bd402900 bd402900 bd403901 1e210800   # ldr s0, [x8, #0x28]; ldr s1, [x8, #0x38]; fmul s0, s0, s1

# Climbing (issues #35, #276, #1001): the climb controller's velocity step (main+0x1918220, the same code as 1.4.3
# main+0x1f49754) multiplies the requested velocity by a factor that makes up for a movement loss growing with the
# frame rate: 1.272 - 0.362 (r - 1) clamped to [0.5, 1.5] (r = VFR +0, the 30 Hz ratio times the time scale). Right at
# 30 fps, 78% of the speed at 60 and 30% at 240. Below r = 1 use 1.4.3's factor, 1.272 + 1.189 (1 - r) at most 2
# (Nintendo's 60 fps fit), and below r = 0.5 the 1.4.3 set climb's g(r) = 0.66265 / r + 0.4982 + 0.0848 r, at most 8.
# Without flags: h = max(min(1.4.3 factor, 2), g - 16 max(r - 0.5, 0)), s0 = max(s0, h), s1 = max(1.5, h), and the
# following fmin s1, s0, s1 gives max(min(s0, 1.5), h). For r >= 1 h is at most the shipping value, so 30 fps and
# slower keep the factor bit for bit. x8 is dead after the load at 0x19182c0; s5-s7 and s16 are written before any
# later read in this function.
# g takes u = max(page +0, r): the patch page's 30 Hz frame ratio without the time scale (runtime/frame_rate.c), so
# slow motion at 30 or 60 fps keeps the shipping factor and only a real frame rate above 60 raises it; the runtime
# switches the set off without the real-time step, where the page is not written.
set climb    TOTK_CLIMB_FIX      1
site climb main 19182cc 1e2f1001 @page:x8 bd400111 1e296a31 1e2e1005 1e3138a5 52862508 72a7e308 1e270106 1e2608a5 1e2528a5 529a1ca8 72a7f448 1e270106 1e2628a5 1e201006 1e2678a5 52946dc8 72a7e528 1e270106 1e3118c6 52828248 72a7dfe8 1e270107 1e2728c6 529573e8 72a7b5a8 1e270107 1f1118e6 1e283a27 2f00e410 1e3068e7 1e261010 1f1098e6 1e241010 1e3078c6 1e2668a5 1e256800 1e2f1001 1e256821   # fmov s1, #1.5 -> s5 = h(r); s0 = max(s0, s5); s1 = max(1.5, s5)

# Cursor and aim steps (upstream game_patches.c patch_cursor_speed, 363a6eb). These updates read the game's 30 Hz frame
# ratio for their smoothing but leave it out of the step itself, so the map cursor and the vertical Ultrahand aim moved
# 2x as fast at 60 fps and 4x at 120 as at the shipping 30 fps (issue #44). Each site multiplies the step by that ratio,
# so the speed is the shipping one at any frame rate. x9 and s16 are free: the next read of x9 follows a write, the
# function does not touch s16, and x20 keeps the update's frame object for the whole function.
set cursor   TOTK_HIGHFPS_FIX    1
site cursor main ec3d9c bd400361 f94002e9 bd400930 1e300800 bd400361   # map pan speed s0 *= [[x23] + 8], then ldr s1, [x27]
site cursor main 1d48d64 1e2a198c 1e2a198c bd400a90 1e30098c   # fdiv s12, s12, s10, then s12 *= [x20 + 8]: vertical Ultrahand aim
site cursor main 1d484e4 1e200923 1e200923 bd400a90 1e300863   # fmul s3, s9, s0, then s3 *= [x20 + 8]: vertical gyro aim (Recall)

# Gear rotation check (issues #330, #984). The update of ActorCheckRotateModule (main+0x21350c0; vtable +0x110, called
# by the AI node dispatchers main+0x11f5a40 / 0x2adbcf8 with x1 = the update context) reports a gear or water wheel as
# turning when the angle it turned since the previous update is above RotateStartDeg / 30, the angle of one 30 Hz
# frame. Above 30 fps a gear turns less per update than that, reads as stopped, and the shrine doors that wait on it
# (Riogok, Turakamik, the Wind Temple) never open. 1.4.3 (main+0x273d080) divides the angle by the context's +8, the
# frame delta in 30 Hz frames (the AI root sets it from its owner's virtual +0x30, main+0x106acc4, and the frame
# counter node SelectorGenericFrameCounter, main+0x10b66f8, adds it up per update). 1.2.1 gets the same context and
# ignores it: the update overwrites x1 with its first instruction. The first site keeps ctx+8 in s12 (the prologue has
# saved d12, the function first writes it at the second site, and callees preserve it); the second multiplies the
# threshold by it, which is 1.4.3's test with both sides multiplied by the delta. s4 is free after the fdiv: the next
# read follows a write in the callee main+0x11c2014. The context follows the measured step with the set realtime and is
# the whole-vsync ratio without it (0.25 at 120 fps, 0.5 at 60 fps measured), so the set works either way.
set gears    TOTK_HIGHFPS_FIX    1
site gears main 21350e0 f9402001 bd40082c f9402001   # ldr x1, [x0, #0x40], after ldr s12, [x1, #8] (frame delta)
site gears main 21352d0 1e24180c 1e241804 1e2c088c   # fdiv s12, s0, s4 -> fdiv s4, s0, s4; fmul s12, s4, s12

# Output size (upstream games/totk/runtime/game_patches.c patch_output_res; runtime/resolution.c switches the set on).
# The swapchain size nnMain writes before NvInitializeGraphics comes from page +48 ({w, h} as one 64-bit value), and
# the output size the renderer lays out its canvas, crop and UI in (main+0xcc3f00, read from the graphics parameters
# through main+0xcc4160) from page +32; the renderer itself goes to page +40.
site output main e7aa3c d280f008 @page:x8   # mov x8, #0x780 -> adrp x8, page
site output main e7aa40 f2c08708 f9401908   # movk x8, #0x438, lsl #32 -> ldr x8, [x8, #48]
site output main cc3f50 aa1403e0 @page:x21  # mov x0, x20 -> adrp x21, page
site output main cc3f54 94000083 f90016b3   # bl 0xcc4160 -> str x19, [x21, #40]
site output main cc3f58 f9400015 f94012b5   # ldr x21, [x0] -> ldr x21, [x21, #32]

# Scene render size (upstream patch_render_res): the renderer's +0xcc4 / +0xcc8, which size every scene render target,
# take two floats from page +16 instead of the graphics parameters' docked 1600x900.
site scene main cc3f68 5e21d900 @page:x9    # scvtf s0, s8 -> adrp x9, page
site scene main cc3f70 bd0cc660 2d420520    # str s0, [x19, #0xcc4] -> ldp s0, s1, [x9, #16]
site scene main cc3f74 5e21d921 bd0cc660    # scvtf s1, s9 -> str s0, [x19, #0xcc4]

# Fixed scene size (MacNativeGames game_patches_v143.c patch_fixed_res, 1.4.3 main+0x5848a8; runtime/resolution.c
# res_dynres_live switches the set on unless TOTK_DYNAMIC_RES=1). The game's dynamic resolution controller
# (main+0xcc26f4, called once per frame from the renderer at main+0xcc0fa0) steps the scene through tiers of 100, 90 and
# 80 % by a cost model that grows with the scene width squared (runtime/resolution.c res_dynres_live), and the renderer stores scene width * tier / output width at +0xccc (main+0xcc1150).
# Every path leaves through one epilogue, where the tier's scale moves into the result: 1.0 there makes every tier 100 %.
set fixres   TOTK_FIXED_RES_PATCH 0
site fixres main cc2c00 2a1703e9 52a7f009   # mov w9, w23 -> mov w9, #0x3f800000 (1.0f)

# Camera aspect ratio for a game resolution that is not 16:9 (upstream game_patches.c, the 1.2.1 sites of aspect_install;
# runtime/resolution.c res_init writes the output's width / height to page +56 and switches the set on). The same four
# sites as patches-v143.txt, with the same original words: two camera sites (update and setup) load the camera's copy of
# DefaultAspect 1.777778, two viewport routines divide width by height. The replacement loads the ratio from the page
# instead (Hor+). x10 is kept on the stack, so no register liveness is assumed.
set aspect   TOTK_ASPECT_PATCH   0
site aspect main cb4b10 bd414260 f81f0fea @page:x10 bd403940 f84107ea   # ldr s0, [x19, #0x140] (camera update)
site aspect main 12521cc bd414260 f81f0fea @page:x10 bd403940 f84107ea  # ldr s0, [x19, #0x140] (camera setup)
site aspect main 19b36f0 1e211800 f81f0fea @page:x10 bd403940 f84107ea  # fdiv s0, s0, s1 (viewport)
site aspect main 1ecdf68 1e211800 f81f0fea @page:x10 bd403940 f84107ea  # fdiv s0, s0, s1 (viewport)

# Texture pool offsets past 2 GiB (MacNativeGames ca311e2d). The texture loader keeps a texture's place in its pool as a
# 32-bit offset (main+0xad4294: sub x25, x9, x10, stored as the word w25) and widens it as a signed number for
# nvnTextureBuilderSetStorage's offset and for SetPackagedTextureData's source (the pool's CPU address + offset). The
# shipped heap table keeps every pool far below 2 GiB; a texture pack's heap table with TOTK_APP_POOL raised can make
# one larger (MacNativeGames saw a 3.58 GiB pool), and every texture past 2 GiB then got storage 4 GiB below its pool.
# The offset is widened unsigned instead, the same value below 2 GiB, right up to 4 GiB. 1.4.3 needs no patch: its
# loaders (main+0x583c34, main+0x27ed214) keep the offset in 64 bits.
set pooloff  TOTK_POOL_OFFSET_PATCH 1
site pooloff main ad43f0 93407f22 2a1903e2   # sxtw x2, w25 -> mov w2, w25 (SetStorage offset)
site pooloff main ad440c 8b39c101 8b394101   # add x1, x8, w25, sxtw -> add x1, x8, w25, uxtw (packaged data source)

# Direct mouse camera (runtime/mouse_direct.c; the same hooks as patches-v143.txt, mapped by enclosing function to the
# 1.2.1 main, each original word checked). The camera input update (main+0xd18088, 1.4.3 0x874c1c) after its dead zone,
# clamp and StickExponent keeps x in s11 (1.4.3 s9); the host callback performs the displaced store and adds raw mouse
# counts. The free orbit (main+0xae28b8) keeps its final angles at [sp+0x3c] / [sp+0x40], Ultrahand's curve results
# (main+0x1768ebc) are s9 and s15. The host functions are at page +0xfd0 .. +0xf80; the page is main+0x472b000.
set mouse_direct TOTK_MOUSE_DIRECT_PATCH 1
site mouse_direct main d18140 bd04228b 94e84fa4   # camera input: str s11, [x20, #0x420]
site mouse_direct main d181fc 6d4123e9 94e84f71   # camera input activity: ldp d9, d8, [sp, #0x10]
site mouse_direct main ae28e8 f9400408 94f125b2   # free orbit begin: ldr x8, [x0, #8]
site mouse_direct main ae355c bd403fed 94f12291   # free orbit angles: ldr s13, [sp, #0x3c]
site mouse_direct main 176949c b9001be9 94bf0abd   # Ultrahand input: str w9, [sp, #0x18]
# The aiming, scope, ability, horse and Purah Pad cameras: per axis, the stick load and the angle the turn is added to,
# each a bl to page +0xf80 told apart by the return address (runtime/mouse_direct.c load_sites_121). Where 1.2.1 adds
# the turn in a shared helper (main+0x1bb70e8, 0x1bd0d00: *p = wrap(*p + s0)), the hook is on the turn the helper takes
# (Horse) or on the store of the helper's result (Aiming's pitch target). Every enclosing function saves x30 in its
# prologue and reads it only to return.
site mouse_direct main 1d34338 bd4426c1 94a7df12   # Aiming: ldr s1, [x22, #0x424] (stick y)
site mouse_direct main 1d34374 bd015660 94a7df03   # Aiming: str s0, [x19, #0x154] (pitch target: +0x15c + turn from a helper)
site mouse_direct main 1d34584 bd4422c1 94a7de7f   # Aiming: ldr s1, [x22, #0x420] (stick x)
site mouse_direct main 1d345d0 bc5b83a1 94a7de6c   # Aiming: ldur s1, [x29, #-0x48] (yaw)
site mouse_direct main 1d35fd4 bd4422e0 94a7d7eb   # AimingTelescope: ldr s0, [x23, #0x420] (stick x)
site mouse_direct main 1d35fe0 bd4426e9 94a7d7e8   # AimingTelescope: ldr s9, [x23, #0x424] (stick y)
site mouse_direct main 1d36280 bd416260 94a7d740   # AimingTelescope: ldr s0, [x19, #0x160] (pitch)
site mouse_direct main 1d36224 bd405be1 94a7d757   # AimingTelescope: ldr s1, [sp, #0x58] (yaw)
site mouse_direct main 1d48478 bd4422cf 94a78ec2   # SpecialPower: ldr s15, [x22, #0x420] (stick x)
site mouse_direct main 1d48480 bd4426cc 94a78ec0   # SpecialPower: ldr s12, [x22, #0x424] (stick y)
site mouse_direct main 1d48bb4 bd416262 94a78cf3   # SpecialPower: ldr s2, [x19, #0x160] (pitch)
site mouse_direct main 1d48b38 bc5a83a1 94a78d12   # SpecialPower: ldur s1, [x29, #-0x58] (yaw)
site mouse_direct main 1d4070c bd442288 94a7ae1d   # Horse: ldr s8, [x20, #0x420] (stick x)
site mouse_direct main 1d40740 bd401be0 94a7ae10   # Horse: ldr s0, [sp, #0x18] (yaw turn, which a helper adds to +0x68)
site mouse_direct main 1d408f8 bd4426a8 94a7ada2   # Horse: ldr s8, [x21, #0x424] (stick y)
site mouse_direct main 1d409ac bd406661 94a7ad75   # Horse: ldr s1, [x19, #0x64] (pitch)
site mouse_direct main 1d48ccc bd4422c9 94a78cad   # SpecialPower offset mode: ldr s9, [x22, #0x420] (stick x)
site mouse_direct main 1d48cf0 bd41da61 94a78ca4   # SpecialPower offset mode: ldr s1, [x19, #0x1d8] (offset x)
site mouse_direct main 1d48cfc bd4426c9 94a78ca1   # SpecialPower offset mode: ldr s9, [x22, #0x424] (stick y)
site mouse_direct main 1d48d18 bd41de61 94a78c9a   # SpecialPower offset mode: ldr s1, [x19, #0x1dc] (offset y)
site mouse_direct main 1d485f8 bd400400 94a78e62   # SpecialPower: ldr s0, [x0, #0x4] (offset scale, read only)
site mouse_direct main 1d37b44 bd4426ad 94a7d10f   # CameraFinder: ldr s13, [x21, #0x424] (stick y)
site mouse_direct main 1d37b68 bd405261 94a7d106   # CameraFinder: ldr s1, [x19, #0x50] (pitch)
site mouse_direct main 1d37bcc bd4422ad 94a7d0ed   # CameraFinder: ldr s13, [x21, #0x420] (stick x)
site mouse_direct main 1d37bf4 bd405be1 94a7d0e3   # CameraFinder: ldr s1, [sp, #0x58] (yaw)
# The other player cameras. ClimbObj, EventMultiTalk and EventTalkManual load an angle with a pre-indexed load whose
# write-back the code after it needs; the mov before it adds the offset instead and the hook loads [base] (no register
# between the two words, no branch into them). Wakeboard, ShieldSurfing and Tail read the stick twice, once for its
# length and once for its angle: the first pair gives the same values without degrees of its own (REPEAT).
site mouse_direct main 1d38e08 bd442301 94a7cc5e   # ClimbObj: ldr s1, [x24, #0x420]
site mouse_direct main 1d38e10 bd409261 94a7cc5c   # ClimbObj: ldr s1, [x19, #0x90] (yaw)
site mouse_direct main 1d38dac bd442701 94a7cc75   # ClimbObj: ldr s1, [x24, #0x424]
site mouse_direct main 1d38da4 aa1303f6 91022276   # ClimbObj: mov x22, x19 -> add x22, x19, #0x88
site mouse_direct main 1d38db8 bc488ec1 94a7cc72   # ClimbObj: ldr s1, [x22, #0x88]! (pitch), as ldr s1, [x22]
site mouse_direct main 1d50738 bd4422c0 94a76e12   # Wakeboard: ldr s0, [x22, #0x420] (x for the length, REPEAT)
site mouse_direct main 1d50740 bd4426c1 94a76e10   # Wakeboard: ldr s1, [x22, #0x424] (y for the length, REPEAT)
site mouse_direct main 1d50768 bd4426c0 94a76e06   # Wakeboard: ldr s0, [x22, #0x424] (stick y, kept)
site mouse_direct main 1d5076c bd4422c1 94a76e05   # Wakeboard: ldr s1, [x22, #0x420]
site mouse_direct main 1d50e5c bd40da60 94a76c49   # Wakeboard: ldr s0, [x19, #0xd8] (pitch)
site mouse_direct main 1d508bc bd401fa0 94a76db1   # Wakeboard: ldr s0, [x29, #0x1c] (pitch turn, cut to the pad)
site mouse_direct main 1d50f20 bd403bec 94a76c18   # Wakeboard: ldr s12, [sp, #0x38] (yaw)
site mouse_direct main 1d51e10 bd4422cd 94a7685c   # WaterfallClimb: ldr s13, [x22, #0x420]
site mouse_direct main 1d51fb8 b9403be8 94a767f2   # WaterfallClimb: ldr w8, [sp, #0x38] (yaw)
site mouse_direct main 1d51f48 bd4426c9 94a7680e   # WaterfallClimb: ldr s9, [x22, #0x424]
site mouse_direct main 1d4a11c bd442280 94a78799   # Tail: ldr s0, [x20, #0x420] (x for the length, REPEAT)
site mouse_direct main 1d4a124 bd442681 94a78797   # Tail: ldr s1, [x20, #0x424] (y for the length, REPEAT)
site mouse_direct main 1d4a14c bd442680 94a7878d   # Tail (climbing): ldr s0, [x20, #0x424] (stick y)
site mouse_direct main 1d4a150 bd442281 94a7878c   # Tail: ldr s1, [x20, #0x420]
site mouse_direct main 1d4a4a0 bd40c260 94a786b8   # Tail (climbing): ldr s0, [x19, #0xc0] (yaw)
site mouse_direct main 1d4a514 bd40b661 94a7869b   # Tail (climbing): ldr s1, [x19, #0xb4] (pitch)
site mouse_direct main 1d4c930 bd442320 94a77d94   # LockOn / Target: ldr s0, [x25, #0x420]
site mouse_direct main 1d4c958 bd442321 94a77d8a   # LockOn / Target: ldr s1, [x25, #0x420] (stick x)
site mouse_direct main 1d4c97c bd402be0 94a77d81   # LockOn / Target: ldr s0, [sp, #0x28] (yaw turn)
site mouse_direct main 1d4c98c bd402be9 94a77d7d   # LockOn / Target: ldr s9, [sp, #0x28] (yaw turn)
site mouse_direct main 1d4cd5c bd442721 94a77c89   # LockOn / Target: ldr s1, [x25, #0x424] (stick y)
site mouse_direct main 1d4cd80 bd402be0 94a77c80   # LockOn / Target: ldr s0, [sp, #0x28] (pitch turn)
site mouse_direct main 1d4cd90 bd402beb 94a77c7c   # LockOn / Target: ldr s11, [sp, #0x28] (pitch turn)
site mouse_direct main 1d443e8 bd4426a9 94a79ee6   # LockOnAimingAt: ldr s9, [x21, #0x424] (stick y)
site mouse_direct main 1d44430 bd419a61 94a79ed4   # LockOnAimingAt: ldr s1, [x19, #0x198] (pitch offset)
site mouse_direct main 1d44444 bd4422a9 94a79ecf   # LockOnAimingAt: ldr s9, [x21, #0x420] (stick x)
site mouse_direct main 1d44490 bd419e61 94a79ebc   # LockOnAimingAt: ldr s1, [x19, #0x19c] (yaw offset)
site mouse_direct main 1d418dc bd44234b 94a7a9a9   # HorseLockOnEmpty: ldr s11, [x26, #0x420]
site mouse_direct main 1d3a484 bd44230b 94a7c6bf   # EventMultiTalk: ldr s11, [x24, #0x420]
site mouse_direct main 1d3a3f8 bd44270b 94a7c6e2   # EventMultiTalk: ldr s11, [x24, #0x424] (stick y)
site mouse_direct main 1d3a418 aa1303f7 91017277   # EventMultiTalk: mov x23, x19 -> add x23, x19, #0x5c
site mouse_direct main 1d3a420 bc45cee1 94a7c6d8   # EventMultiTalk: ldr s1, [x23, #0x5c]! (pitch), as ldr s1, [x23]
site mouse_direct main 1d3a4dc aa1303f6 91019276   # EventMultiTalk: mov x22, x19 -> add x22, x19, #0x64
site mouse_direct main 1d3a4e4 bc464ec1 94a7c6a7   # EventMultiTalk: ldr s1, [x22, #0x64]! (yaw), as ldr s1, [x22]
site mouse_direct main 1d3e2b0 bd442729 94a7b734   # EventTalkManual: ldr s9, [x25, #0x424] (stick y)
site mouse_direct main 1d3e2d4 aa1303f8 9101d278   # EventTalkManual: mov x24, x19 -> add x24, x19, #0x74
site mouse_direct main 1d3e2d8 bc474f01 94a7b72a   # EventTalkManual: ldr s1, [x24, #0x74]! (pitch), as ldr s1, [x24]
site mouse_direct main 1d3e33c bd442329 94a7b711   # EventTalkManual: ldr s9, [x25, #0x420] (stick x)
site mouse_direct main 1d3e360 aa1303f6 9101f276   # EventTalkManual: mov x22, x19 -> add x22, x19, #0x7c
site mouse_direct main 1d3e364 bc47cec1 94a7b707   # EventTalkManual: ldr s1, [x22, #0x7c]! (yaw), as ldr s1, [x22]
site mouse_direct main 1d46108 bd4422e0 94a7979e   # ShieldSurfing: ldr s0, [x23, #0x420] (x for the length, REPEAT)
site mouse_direct main 1d46110 bd4426e1 94a7979c   # ShieldSurfing: ldr s1, [x23, #0x424] (y for the length, REPEAT)
site mouse_direct main 1d46138 bd4426e0 94a79792   # ShieldSurfing: ldr s0, [x23, #0x424] (stick y, kept)
site mouse_direct main 1d4613c bd4422e1 94a79791   # ShieldSurfing: ldr s1, [x23, #0x420] (stick x)
site mouse_direct main 1d46788 bd40de60 94a795fe   # ShieldSurfing: ldr s0, [x19, #0xdc] (pitch)
site mouse_direct main 1d46910 bd401fa0 94a7959c   # ShieldSurfing: ldr s0, [x29, #0x1c] (pitch turn, cut to the pad)
site mouse_direct main 1d467b4 bd403bec 94a795f3   # ShieldSurfing: ldr s12, [sp, #0x38] (yaw)

# Spin waits, from tools/spin_waits.py --exefs build/extracted/v121/exefs --patches recomp/patches-v121.txt: loops that only
# another thread can end; their back-edges pass rt_spin_gate (runtime/kernel.c), TOTK_SPIN=0 keeps the core.
spin main ac600 ac620 ac630   # 13 instructions; loads
spin main ac680 ac6a8 ac6b8   # 15 instructions; loads
spin main ac6f0 ac718 ac728   # 15 instructions; loads
spin main e8544 e854c   # 3 instructions; loads
spin main 2457f0 245804   # 6 instructions; loads
spin main 634d3c 634d50   # 6 instructions; loads
spin main 65ddf8 65de0c   # 6 instructions; loads
spin main 65fe1c 65fe30   # 6 instructions; loads
spin main 664350 664364   # 6 instructions; loads
spin main 664558 66456c   # 6 instructions; loads
spin main 66764c 667660   # 6 instructions; loads
spin main 66fce0 66fcf4   # 6 instructions; loads
spin main 66fe64 66fe78   # 6 instructions; loads
spin main 670af8 670b0c   # 6 instructions; loads
spin main 670ee8 670efc   # 6 instructions; loads
spin main 671214 671228   # 6 instructions; loads
spin main 673a3c 673a50   # 6 instructions; loads
spin main 673a80 673a94   # 6 instructions; loads
spin main 673ac4 673ad8   # 6 instructions; loads
spin main 673b08 673b1c   # 6 instructions; loads
spin main 678774 678788   # 6 instructions; loads
spin main 678814 678828   # 6 instructions; loads
spin main 67a270 67a284   # 6 instructions; loads
spin main 67a5c8 67a5dc   # 6 instructions; loads
spin main 67b8a4 67b8b8   # 6 instructions; loads
spin main 67dde8 67ddfc   # 6 instructions; loads
spin main 682650 682664   # 6 instructions; loads
spin main 683c5c 683c70   # 6 instructions; loads
spin main 68b1fc 68b210   # 6 instructions; loads
spin main 68ff0c 68ff20   # 6 instructions; loads
spin main 6917ec 691800   # 6 instructions; loads
spin main 6a5338 6a534c   # 6 instructions; loads
spin main 6a55b4 6a55c8   # 6 instructions; loads
spin main 6a9488 6a949c   # 6 instructions; loads
spin main 6a98b8 6a98cc   # 6 instructions; loads
spin main 6ac5bc 6ac5d0   # 6 instructions; loads
spin main 6afad0 6afae4   # 6 instructions; loads
spin main 6bb02c 6bb040   # 6 instructions; loads
spin main 6bb078 6bb08c   # 6 instructions; loads
spin main 6c8680 6c8694   # 6 instructions; loads
spin main 6ca094 6ca0a8   # 6 instructions; loads
spin main 6d1404 6d1418   # 6 instructions; loads
spin main 6d8280 6d8294   # 6 instructions; loads
spin main 6de7b4 6de7c8   # 6 instructions; loads
spin main 6e0740 6e0754   # 6 instructions; loads
spin main 6ec574 6ec588   # 6 instructions; loads
spin main 6ec6d4 6ec6e8   # 6 instructions; loads
spin main 708250 708264   # 6 instructions; loads
spin main 708d1c 708d30   # 6 instructions; loads
spin main 7090dc 7090f0   # 6 instructions; loads
spin main 7093ec 709400   # 6 instructions; loads
spin main 709754 709768   # 6 instructions; loads
spin main 709b2c 709b40   # 6 instructions; loads
spin main 709dd0 709de4   # 6 instructions; loads
spin main 709e64 709e78   # 6 instructions; loads
spin main 70a444 70a458   # 6 instructions; loads
spin main 70a718 70a72c   # 6 instructions; loads
spin main 70bb8c 70bba8   # 8 instructions; loads
spin main 70bc3c 70bc58   # 8 instructions; loads
spin main 70d6e4 70d6f8   # 6 instructions; loads
spin main 70d8c4 70d8d8   # 6 instructions; loads
spin main 70db14 70db28   # 6 instructions; loads
spin main 70e7b4 70e7d0   # 8 instructions; loads
spin main 70ec04 70ec18   # 6 instructions; loads
spin main 70f140 70f154   # 6 instructions; loads
spin main 70fd10 70fd24   # 6 instructions; loads
spin main 70fe4c 70fe60   # 6 instructions; loads
spin main 7101b8 7101cc   # 6 instructions; loads
spin main 7109a4 7109b8   # 6 instructions; loads
spin main 710f04 710f18   # 6 instructions; loads
spin main 7111a4 7111b8   # 6 instructions; loads
spin main 711424 711438   # 6 instructions; loads
spin main 71144c 711460   # 6 instructions; loads
spin main 711474 711488   # 6 instructions; loads
spin main 711ccc 711ce0   # 6 instructions; loads
spin main 711cf4 711d08   # 6 instructions; loads
spin main 712cd0 712ce4   # 6 instructions; loads
spin main 712dc0 712dd4   # 6 instructions; loads
spin main 7130f8 71310c   # 6 instructions; loads
spin main 716398 7163ac   # 6 instructions; loads
spin main 7163c0 7163d4   # 6 instructions; loads
spin main 7163e8 7163fc   # 6 instructions; loads
spin main 717b40 717b54   # 6 instructions; loads
spin main 7180fc 718110   # 6 instructions; loads
spin main 71819c 7181b0   # 6 instructions; loads
spin main 7187c8 7187dc   # 6 instructions; loads
spin main 719124 719138   # 6 instructions; loads
spin main 71a638 71a64c   # 6 instructions; loads
spin main 71cec8 71cedc   # 6 instructions; loads
spin main 71cef0 71cf04   # 6 instructions; loads
spin main 71fcac 71fcc0   # 6 instructions; loads
spin main 71fcd4 71fce8   # 6 instructions; loads
spin main 71fcfc 71fd10   # 6 instructions; loads
spin main 71fd24 71fd38   # 6 instructions; loads
spin main 71fd4c 71fd60   # 6 instructions; loads
spin main 71fd74 71fd88   # 6 instructions; loads
spin main 71fd9c 71fdb0   # 6 instructions; loads
spin main 71fdc4 71fdd8   # 6 instructions; loads
spin main 71fdec 71fe00   # 6 instructions; loads
spin main 71fe14 71fe28   # 6 instructions; loads
spin main 71fe3c 71fe50   # 6 instructions; loads
spin main 71fe64 71fe78   # 6 instructions; loads
spin main 71fe8c 71fea0   # 6 instructions; loads
spin main 720678 72068c   # 6 instructions; loads
spin main 7206a0 7206b4   # 6 instructions; loads
spin main 7206c8 7206dc   # 6 instructions; loads
spin main 7206f0 720704   # 6 instructions; loads
spin main 720b0c 720b20   # 6 instructions; loads
spin main 720f40 720f54   # 6 instructions; loads
spin main 7214d0 7214e4   # 6 instructions; loads
spin main 721a90 721aa4   # 6 instructions; loads
spin main 721f28 721f3c   # 6 instructions; loads
spin main 721f50 721f64   # 6 instructions; loads
spin main 72590c 725920   # 6 instructions; loads
spin main 726340 726354   # 6 instructions; loads
spin main 7265d4 7265e8   # 6 instructions; loads
spin main 726620 726634   # 6 instructions; loads
spin main 727d28 727d3c   # 6 instructions; loads
spin main 727d50 727d64   # 6 instructions; loads
spin main 729da0 729db4   # 6 instructions; loads
spin main 729de8 729dfc   # 6 instructions; loads
spin main 72aa08 72aa1c   # 6 instructions; loads
spin main 72aa30 72aa44   # 6 instructions; loads
spin main 72aef4 72af08   # 6 instructions; loads
spin main 72b4cc 72b4e0   # 6 instructions; loads
spin main 732c8c 732ca0   # 6 instructions; loads
spin main 732cd0 732ce4   # 6 instructions; loads
spin main 732cf8 732d0c   # 6 instructions; loads
spin main 733be8 733bfc   # 6 instructions; loads
spin main 737fc4 737fd8   # 6 instructions; loads
spin main 7395fc 739610   # 6 instructions; loads
spin main 73a8b8 73a8cc   # 6 instructions; loads
spin main 73a8f8 73a90c   # 6 instructions; loads
spin main 73add0 73ade4   # 6 instructions; loads
spin main 73aff4 73b008   # 6 instructions; loads
spin main 73b074 73b088   # 6 instructions; loads
spin main 73b3f0 73b404   # 6 instructions; loads
spin main 73bd4c 73bd60   # 6 instructions; loads
spin main 73d330 73d344   # 6 instructions; loads
spin main 73ea0c 73ea20   # 6 instructions; loads
spin main 7877ac 7877c0   # 6 instructions; loads
spin main 78c7b0 78c7c4   # 6 instructions; loads
spin main 78c8ac 78c8c0   # 6 instructions; loads
spin main 78d5ec 78d600   # 6 instructions; loads
spin main 78d7d0 78d7e4   # 6 instructions; loads
spin main 78db70 78db84   # 6 instructions; loads
spin main 78dbe0 78dbf4   # 6 instructions; loads
spin main 78e298 78e2ac   # 6 instructions; loads
spin main 78ebb8 78ebcc   # 6 instructions; loads
spin main 791164 791178   # 6 instructions; loads
spin main 7911b8 7911cc   # 6 instructions; loads
spin main 791c28 791c3c   # 6 instructions; loads
spin main 791cac 791cc0   # 6 instructions; loads
spin main 7923dc 7923f0   # 6 instructions; loads
spin main 7946f8 79470c   # 6 instructions; loads
spin main 79474c 794760   # 6 instructions; loads
spin main 795dfc 795e10   # 6 instructions; loads
spin main 795f58 795f6c   # 6 instructions; loads
spin main 79632c 796348   # 8 instructions; loads
spin main 7a23ac 7a23c0   # 6 instructions; loads
spin main 7a23d4 7a23e8   # 6 instructions; loads
spin main 7a267c 7a2690   # 6 instructions; loads
spin main 7a26d8 7a26ec   # 6 instructions; loads
spin main 7a3a5c 7a3a70   # 6 instructions; loads
spin main 7aec90 7aeca4   # 6 instructions; loads
spin main 7b5c70 7b5c84   # 6 instructions; loads
spin main 7bc3b8 7bc3cc   # 6 instructions; loads
spin main 7bc60c 7bc620   # 6 instructions; loads
spin main 7db040 7db054   # 6 instructions; loads
spin main 7ddfb0 7ddfc4   # 6 instructions; loads
spin main 809758 80976c   # 6 instructions; loads
spin main 825de4 825df8   # 6 instructions; loads
spin main 825e68 825e7c   # 6 instructions; loads
spin main 825fb4 825fc8   # 6 instructions; loads
spin main 826080 826094   # 6 instructions; loads
spin main 828158 82816c   # 6 instructions; loads
spin main 838340 838354   # 6 instructions; loads
spin main 842fbc 842fd0   # 6 instructions; loads
spin main 8440e8 8440fc   # 6 instructions; loads
spin main 8464f4 846508   # 6 instructions; loads
spin main 84cbb0 84cbc4   # 6 instructions; loads
spin main 84cbf8 84cc0c   # 6 instructions; loads
spin main 84d430 84d444   # 6 instructions; loads
spin main 85db98 85dbac   # 6 instructions; loads
spin main 85ed2c 85ed40   # 6 instructions; loads
spin main 860d64 860d78   # 6 instructions; loads
spin main 867f4c 868048   # 4 instructions; loads
spin main 8876e0 8876f4   # 6 instructions; loads
spin main 887c50 887c64   # 6 instructions; loads
spin main 892ff4 893008   # 6 instructions; loads
spin main 893448 89345c   # 6 instructions; loads
spin main 893a04 893a18   # 6 instructions; loads
spin main 893b14 893b28   # 6 instructions; loads
spin main 895210 895224   # 6 instructions; loads
spin main 895238 89524c   # 6 instructions; loads
spin main 8b6b60 8b6b74   # 6 instructions; loads
spin main 8b7ff0 8b8010   # 9 instructions; loads
spin main 8ceed8 8ceeec   # 6 instructions; loads
spin main 8cf204 8cf218   # 6 instructions; loads
spin main 8cf520 8cf534   # 6 instructions; loads
spin main 8cf6b8 8cf6cc   # 6 instructions; loads
spin main 8cf940 8cf954   # 6 instructions; loads
spin main 8cfb94 8cfba8   # 6 instructions; loads
spin main 8e763c 8e764c   # 5 instructions; loads
spin main 8e7898 8e78c4   # 12 instructions; loads
spin main 8e78d8 8e78e8   # 5 instructions; loads
spin main 8e8114 8e8128   # 6 instructions; loads
spin main 90750c 907520   # 6 instructions; loads
spin main 907534 907548   # 6 instructions; loads
spin main 90755c 907570   # 6 instructions; loads
spin main 907584 907598   # 6 instructions; loads
spin main 908a84 908a98   # 6 instructions; loads
spin main 909250 909264   # 6 instructions; loads
spin main 91b3f4 91b408   # 6 instructions; loads
spin main 91b41c 91b430   # 6 instructions; loads
spin main 91dc0c 91dc20   # 6 instructions; loads
spin main 91dfbc 91dfd0   # 6 instructions; loads
spin main 91e390 91e3a4   # 6 instructions; loads
spin main 91e764 91e778   # 6 instructions; loads
spin main 923cc4 923cd8   # 6 instructions; loads
spin main 95517c 9551ac   # 13 instructions; loads
spin main 9551c0 9551d0   # 5 instructions; loads
spin main 95f63c 95f66c   # 13 instructions; loads
spin main 95f680 95f690   # 5 instructions; loads
spin main 96bb74 96bb84   # 5 instructions; loads
spin main 97266c 972688   # 8 instructions; loads
spin main 972738 972754   # 8 instructions; loads
spin main 9b677c 9b6790   # 6 instructions; loads
spin main 9d73b8 9d73cc   # 6 instructions; loads
spin main 9e10ac 9e10c0   # 6 instructions; loads
spin main 9e9470 9e9484   # 6 instructions; loads
spin main 9ed71c 9ed730   # 6 instructions; loads
spin main 9f7adc 9f7af0   # 6 instructions; loads
spin main 9f7b04 9f7b18   # 6 instructions; loads
spin main 9f7b2c 9f7b40   # 6 instructions; loads
spin main a06cd8 a06cec   # 6 instructions; loads
spin main a0cfe8 a0cffc   # 6 instructions; loads
spin main a2abc0 a2abd4   # 6 instructions; loads
spin main a6d6f8 a6d70c   # 6 instructions; loads
spin main a6edec a6ee00   # 6 instructions; loads
spin main a6ee30 a6ee44   # 6 instructions; loads
spin main a6ee74 a6ee88   # 6 instructions; loads
spin main a6f560 a6f574   # 6 instructions; loads
spin main a7e134 a7e1bc   # 35 instructions; loads
spin main a84b24 a84b38   # 6 instructions; loads
spin main a84e3c a84e50   # 6 instructions; loads
spin main a84eec a84f00   # 6 instructions; loads
spin main a84f8c a84fa0   # 6 instructions; loads
spin main a8503c a85050   # 6 instructions; loads
spin main ab8898 ab88ac   # 6 instructions; loads
spin main ac3cd8 ac3cec   # 6 instructions; loads
spin main ac3d64 ac3d78   # 6 instructions; loads
spin main ac3fe4 ac3ff8   # 6 instructions; loads
spin main ac40e4 ac40f8   # 6 instructions; loads
spin main ac4740 ac4754   # 6 instructions; loads
spin main ac4890 ac48a4   # 6 instructions; loads
spin main ac5604 ac5618   # 6 instructions; loads
spin main ac58e0 ac58f4   # 6 instructions; loads
spin main ac798c ac79a0   # 6 instructions; loads
spin main ac79b4 ac79c8   # 6 instructions; loads
spin main ae567c ae5690   # 6 instructions; loads
spin main ae6da0 ae6db4   # 6 instructions; loads
spin main b1267c b12690   # 6 instructions; loads
spin main b12d5c b12d70   # 6 instructions; loads
spin main b15df0 b15e04   # 6 instructions; loads
spin main b1afbc b1b014   # 7 instructions; loads
spin main b2fa8c b2faa0   # 6 instructions; loads
spin main b35374 b35388   # 6 instructions; loads
spin main b386f4 b38708   # 6 instructions; loads
spin main b3871c b38730   # 6 instructions; loads
spin main b38744 b38758   # 6 instructions; loads
spin main b38780 b38794   # 6 instructions; loads
spin main b387a8 b387bc   # 6 instructions; loads
spin main b387d0 b387e4   # 6 instructions; loads
spin main b53ce8 b53cfc   # 6 instructions; loads
spin main b53e04 b53e18   # 6 instructions; loads
spin main b54178 b5418c   # 6 instructions; loads
spin main b54688 b5469c   # 6 instructions; loads
spin main b599f0 b59a04   # 6 instructions; loads
spin main b59a18 b59a2c   # 6 instructions; loads
spin main b5f4ec b5f4fc   # 5 instructions; loads
spin main b6f988 b6f99c   # 6 instructions; loads
spin main b6faa4 b6fab8   # 6 instructions; loads
spin main b6fe28 b6fe3c   # 6 instructions; loads
spin main b707b0 b707c4   # 6 instructions; loads
spin main b70814 b70828   # 6 instructions; loads
spin main b70974 b70988   # 6 instructions; loads
spin main b70b08 b70b1c   # 6 instructions; loads
spin main b74104 b74118   # 6 instructions; loads
spin main b7426c b74280   # 6 instructions; loads
spin main b7e57c b7e590   # 6 instructions; loads
spin main b940fc b94110   # 6 instructions; loads
spin main b973a0 b973b4   # 6 instructions; loads
spin main b97998 b979ac   # 6 instructions; loads
spin main b97be4 b97bf8   # 6 instructions; loads
spin main bbaaf4 bbab08   # 6 instructions; loads
spin main bbab1c bbab30   # 6 instructions; loads
spin main bc1fd8 bc1fec   # 6 instructions; loads
spin main bc2078 bc208c   # 6 instructions; loads
spin main bc20a0 bc20b4   # 6 instructions; loads
spin main bc2168 bc217c   # 6 instructions; loads
spin main be3d24 be3d38   # 6 instructions; loads
spin main bf9fc4 bf9fd8   # 6 instructions; loads
spin main bfb184 bfb198   # 6 instructions; loads
spin main c1e5c0 c1e5d4   # 6 instructions; loads
spin main c4657c c46590   # 6 instructions; loads
spin main c50574 c50588   # 6 instructions; loads
spin main c51810 c51824   # 6 instructions; loads
spin main cb300c cb3020   # 6 instructions; loads
spin main cb3f68 cb3f7c   # 6 instructions; loads
spin main cb3fac cb3fc0   # 6 instructions; loads
spin main cb4694 cb46a8   # 6 instructions; loads
spin main cb46d8 cb46ec   # 6 instructions; loads
spin main cb48c4 cb48d8   # 6 instructions; loads
spin main cb59ec cb5a00   # 6 instructions; loads
spin main cb6f68 cb6f7c   # 6 instructions; loads
spin main cba458 cba46c   # 6 instructions; loads
spin main cce918 cce92c   # 6 instructions; loads
spin main cd0144 cd0150 cd019c cd01b4   # 29 instructions; loads
spin main cd1fc0 cd1fd4   # 6 instructions; loads
spin main cf3c94 cf3ca8   # 6 instructions; loads
spin main d0b2a8 d0b2bc   # 6 instructions; loads
spin main d105b4 d105c8   # 6 instructions; loads
spin main d11018 d1102c   # 6 instructions; loads
spin main d1109c d110b0   # 6 instructions; loads
spin main d11148 d1115c   # 6 instructions; loads
spin main d113a0 d113b4   # 6 instructions; loads
spin main d113c8 d113dc   # 6 instructions; loads
spin main d113fc d11410   # 6 instructions; loads
spin main d11644 d11658   # 6 instructions; loads
spin main d12028 d12044   # 8 instructions; loads
spin main d129a8 d129bc   # 6 instructions; loads
spin main d12d80 d12d94   # 6 instructions; loads
spin main d12dc8 d12ddc   # 6 instructions; loads
spin main d12df0 d12e04   # 6 instructions; loads
spin main d12e18 d12e2c   # 6 instructions; loads
spin main d12e84 d12e98   # 6 instructions; loads
spin main d12eb0 d12ec4   # 6 instructions; loads
spin main d12ed8 d12eec   # 6 instructions; loads
spin main d12fe0 d12ff4   # 6 instructions; loads
spin main d17248 d1725c   # 6 instructions; loads
spin main d17f58 d17f6c   # 6 instructions; loads
spin main d189d0 d189e4   # 6 instructions; loads
spin main d18bac d18bc0   # 6 instructions; loads
spin main d2d2a0 d2d2b4   # 6 instructions; loads
spin main d2d430 d2d444   # 6 instructions; loads
spin main d337e4 d337f8   # 6 instructions; loads
spin main d33e1c d33e30   # 6 instructions; loads
spin main d34178 d3418c   # 6 instructions; loads
spin main d34278 d3428c   # 6 instructions; loads
spin main d3472c d34740   # 6 instructions; loads
spin main d3486c d34880   # 6 instructions; loads
spin main d35a9c d35ab0   # 6 instructions; loads
spin main d365a8 d365bc   # 6 instructions; loads
spin main d365d4 d365e8   # 6 instructions; loads
spin main d38898 d388ac   # 6 instructions; loads
spin main d3d6c0 d3d6d4   # 6 instructions; loads
spin main d3d6e8 d3d6fc   # 6 instructions; loads
spin main d3f05c d3f070   # 6 instructions; loads
spin main d54c90 d54ca4   # 6 instructions; loads
spin main d54e14 d54e28   # 6 instructions; loads
spin main d55940 d55954   # 6 instructions; loads
spin main d56848 d5685c   # 6 instructions; loads
spin main d5ef1c d5ef30   # 6 instructions; loads
spin main d5ef80 d5ef94   # 6 instructions; loads
spin main d66218 d6622c   # 6 instructions; loads
spin main d69544 d69558   # 6 instructions; loads
spin main d6956c d69580   # 6 instructions; loads
spin main d7663c d76650   # 6 instructions; loads
spin main d7b1e4 d7b1f8   # 6 instructions; loads
spin main d7ca84 d7caa0   # 8 instructions; loads
spin main d808f4 d80908   # 6 instructions; loads
spin main d82a8c d82aa0   # 6 instructions; loads
spin main d82c10 d82c24   # 6 instructions; loads
spin main d85fc8 d86000   # 8 instructions; loads
spin main d86030 d86068   # 8 instructions; loads
spin main d8bb9c d8bbb0   # 6 instructions; loads
spin main d8be7c d8be90   # 6 instructions; loads
spin main d8dfe4 d8dff8   # 6 instructions; loads
spin main d8f9d4 d8f9e8   # 6 instructions; loads
spin main d90a58 d90a6c   # 6 instructions; loads
spin main d90e74 d90e88   # 6 instructions; loads
spin main d92afc d92b10   # 6 instructions; loads
spin main d93320 d93334   # 6 instructions; loads
spin main d93b10 d93b24   # 6 instructions; loads
spin main d9cbe8 d9cbfc   # 6 instructions; loads
spin main d9fe88 d9fe9c   # 6 instructions; loads
spin main dc8368 dc837c   # 6 instructions; loads
spin main de3ec0 de3ed4   # 6 instructions; loads
spin main dec308 dec31c   # 6 instructions; loads
spin main dfe0bc dfe0d0   # 6 instructions; loads
spin main e3ef08 e3ef1c   # 6 instructions; loads
spin main e3f1ec e3f200   # 6 instructions; loads
spin main e3f4d0 e3f4e4   # 6 instructions; loads
spin main e3f7b4 e3f7c8   # 6 instructions; loads
spin main e42c54 e42c68   # 6 instructions; loads
spin main e4a83c e4a850   # 6 instructions; loads
spin main e4ab60 e4ab74   # 6 instructions; loads
spin main e5413c e54150   # 6 instructions; loads
spin main e56300 e56314   # 6 instructions; loads
spin main e599b8 e599cc   # 6 instructions; loads
spin main e59cc4 e59cd8   # 6 instructions; loads
spin main e59db0 e59dc4   # 6 instructions; loads
spin main e5dea0 e5deb4   # 6 instructions; loads
spin main e5eb04 e5eb18   # 6 instructions; loads
spin main e602c4 e602d8   # 6 instructions; loads
spin main e64d84 e64d98   # 6 instructions; loads
spin main e67d5c e67d70   # 6 instructions; loads
spin main e686b8 e686cc   # 6 instructions; loads
spin main e6bd64 e6bd78   # 6 instructions; loads
spin main e75788 e7579c   # 6 instructions; loads
spin main e7a790 e7a7a4   # 6 instructions; loads
spin main e892bc e892d0   # 6 instructions; loads
spin main e892f4 e89308   # 6 instructions; loads
spin main e894b4 e894c8   # 6 instructions; loads
spin main e8959c e895b0   # 6 instructions; loads
spin main e92610 e92624   # 6 instructions; loads
spin main e99480 e99494   # 6 instructions; loads
spin main e995d4 e995e8   # 6 instructions; loads
spin main e99b84 e99b98   # 6 instructions; loads
spin main e9a670 e9a684   # 6 instructions; loads
spin main e9a8c4 e9a8d8   # 6 instructions; loads
spin main e9aa38 e9aa4c   # 6 instructions; loads
spin main e9abac e9abc0   # 6 instructions; loads
spin main e9ae58 e9ae6c   # 6 instructions; loads
spin main e9b338 e9b34c   # 6 instructions; loads
spin main e9b4a4 e9b4b8   # 6 instructions; loads
spin main e9bc7c e9bc90   # 6 instructions; loads
spin main e9c268 e9c27c   # 6 instructions; loads
spin main e9c294 e9c2a8   # 6 instructions; loads
spin main e9d21c e9d230   # 6 instructions; loads
spin main e9d5e8 e9d5fc   # 6 instructions; loads
spin main e9d610 e9d624   # 6 instructions; loads
spin main e9f978 e9f98c   # 6 instructions; loads
spin main e9f9b8 e9f9cc   # 6 instructions; loads
spin main e9f9e0 e9f9f4   # 6 instructions; loads
spin main e9fa08 e9fa1c   # 6 instructions; loads
spin main e9ffec ea0000   # 6 instructions; loads
spin main ea0014 ea0028   # 6 instructions; loads
spin main ea1454 ea1468   # 6 instructions; loads
spin main eacd8c eacda0   # 6 instructions; loads
spin main eb8ec0 eb8ed4   # 6 instructions; loads
spin main ed2f5c ed2f70   # 6 instructions; loads
spin main ed34f0 ed3504   # 6 instructions; loads
spin main ed3dc0 ed3dd4   # 6 instructions; loads
spin main ed3df0 ed3e04   # 6 instructions; loads
spin main ed43b4 ed43c8   # 6 instructions; loads
spin main ed43e4 ed43f8   # 6 instructions; loads
spin main ed7870 ed7878   # 3 instructions; loads
spin main ed7880 ed7884   # 2 instructions; loads
spin main ed78ac ed78b4   # 3 instructions; loads
spin main ed85a8 ed85bc   # 6 instructions; loads
spin main ed9ff8 eda00c   # 6 instructions; loads
spin main eda1bc eda1d0   # 6 instructions; loads
spin main f0dcc4 f0dcd8   # 6 instructions; loads
spin main f0e598 f0e5ac   # 6 instructions; loads
spin main f11920 f11934   # 6 instructions; loads
spin main f11f7c f11f90   # 6 instructions; loads
spin main f11fa8 f11fbc   # 6 instructions; loads
spin main f17f98 f17fac   # 6 instructions; loads
spin main f1c328 f1c33c   # 6 instructions; loads
spin main f2403c f24050   # 6 instructions; loads
spin main f36b5c f36b70   # 6 instructions; loads
spin main f36b84 f36b98   # 6 instructions; loads
spin main f36dd4 f36de8   # 6 instructions; loads
spin main f36e68 f36e7c   # 6 instructions; loads
spin main f36e90 f36ea4   # 6 instructions; loads
spin main f36eb8 f36ecc   # 6 instructions; loads
spin main f3b5dc f3b5f0   # 6 instructions; loads
spin main f3b7e8 f3b7fc   # 6 instructions; loads
spin main f3c3b4 f3c3c8   # 6 instructions; loads
spin main f3dcc8 f3dcdc   # 6 instructions; loads
spin main f4181c f41830   # 6 instructions; loads
spin main f41978 f4198c   # 6 instructions; loads
spin main f41ad4 f41ae8   # 6 instructions; loads
spin main f41c30 f41c44   # 6 instructions; loads
spin main f46af0 f46b04   # 6 instructions; loads
spin main f487d8 f487ec   # 6 instructions; loads
spin main f4f108 f4f11c   # 6 instructions; loads
spin main f4f7f4 f4f808   # 6 instructions; loads
spin main f4f880 f4f894   # 6 instructions; loads
spin main f53f9c f53fb0   # 6 instructions; loads
spin main f5df2c f5df40   # 6 instructions; loads
spin main f5f458 f5f46c   # 6 instructions; loads
spin main f6f51c f6f530   # 6 instructions; loads
spin main f6f840 f6f854   # 6 instructions; loads
spin main f70270 f70284   # 6 instructions; loads
spin main f70294 f702a8   # 6 instructions; loads
spin main f70828 f7083c   # 6 instructions; loads
spin main f7947c f79490   # 6 instructions; loads
spin main f794a4 f794b8   # 6 instructions; loads
spin main f7e318 f7e32c   # 6 instructions; loads
spin main f8db54 f8db68   # 6 instructions; loads
spin main f8f9f4 f8fa08   # 6 instructions; loads
spin main f90178 f9018c   # 6 instructions; loads
spin main f96a00 f96a14   # 6 instructions; loads
spin main f96c40 f96c54   # 6 instructions; loads
spin main f96e64 f96e78   # 6 instructions; loads
spin main f96fdc f96ff0   # 6 instructions; loads
spin main f97158 f9716c   # 6 instructions; loads
spin main fa26d4 fa26e8   # 6 instructions; loads
spin main fa5a18 fa5a2c   # 6 instructions; loads
spin main faa880 faa894   # 6 instructions; loads
spin main faab1c faab30   # 6 instructions; loads
spin main fabc28 fabc3c   # 6 instructions; loads
spin main fac5d0 fac5e4   # 6 instructions; loads
spin main faece4 faecf8   # 6 instructions; loads
spin main faf014 faf028   # 6 instructions; loads
spin main fb4494 fb44b0   # 8 instructions; loads
spin main fb68f0 fb6904   # 6 instructions; loads
spin main fb7130 fb7144   # 6 instructions; loads
spin main fb7590 fb75a4   # 6 instructions; loads
spin main fb75f8 fb760c   # 6 instructions; loads
spin main fb8ea4 fb8f90   # 4 instructions; loads
spin main fb9598 fb9620   # 4 instructions; loads
spin main fbfb8c fbfba0   # 6 instructions; loads
spin main fcbea0 fcbeb4   # 6 instructions; loads
spin main fcc110 fcc124   # 6 instructions; loads
spin main fd281c fd2830   # 6 instructions; loads
spin main fda1c4 fda1d8   # 6 instructions; loads
spin main fe7c74 fe7c88   # 6 instructions; loads
spin main fe802c fe8040   # 6 instructions; loads
spin main fe837c fe8390   # 6 instructions; loads
spin main fe867c fe8690   # 6 instructions; loads
spin main fe8bd4 fe8be8   # 6 instructions; loads
spin main fe8f6c fe8f80   # 6 instructions; loads
spin main fe92ec fe9300   # 6 instructions; loads
spin main fe9360 fe9374   # 6 instructions; loads
spin main fea288 fea29c   # 6 instructions; loads
spin main fea5d4 fea5e8   # 6 instructions; loads
spin main feaa58 feaa6c   # 6 instructions; loads
spin main feaca4 feacb8   # 6 instructions; loads
spin main feba88 feba9c   # 6 instructions; loads
spin main febb20 febb34   # 6 instructions; loads
spin main fecce4 feccf8   # 6 instructions; loads
spin main fed1f8 fed20c   # 6 instructions; loads
spin main fed830 fed844   # 6 instructions; loads
spin main fed8ec fed900   # 6 instructions; loads
spin main fed9a8 fed9bc   # 6 instructions; loads
spin main feda64 feda78   # 6 instructions; loads
spin main fee228 fee23c   # 6 instructions; loads
spin main ff0314 ff0328   # 6 instructions; loads
spin main ff05c4 ff05d8   # 6 instructions; loads
spin main ff08b0 ff08c4   # 6 instructions; loads
spin main ff0b64 ff0b78   # 6 instructions; loads
spin main ff0e28 ff0e3c   # 6 instructions; loads
spin main ff112c ff1140   # 6 instructions; loads
spin main ff118c ff11a0   # 6 instructions; loads
spin main ff26d0 ff26ec   # 8 instructions; loads
spin main ff38e0 ff38f4   # 6 instructions; loads
spin main ff3920 ff3934   # 6 instructions; loads
spin main ff3960 ff3974   # 6 instructions; loads
spin main ff39a0 ff39b4   # 6 instructions; loads
spin main ff39e0 ff39f4   # 6 instructions; loads
spin main ff65b0 ff65c4   # 6 instructions; loads
spin main ff96ec ff9700   # 6 instructions; loads
spin main 1017c00 1017c14   # 6 instructions; loads
spin main 101a9e4 101a9f8   # 6 instructions; loads
spin main 101c0b8 101c0cc   # 6 instructions; loads
spin main 10242b0 10242c4   # 6 instructions; loads
spin main 102bc78 102bcc0   # 3 instructions; loads
spin main 1036db4 1036dc8   # 6 instructions; loads
spin main 1042cf0 1042cf8   # 3 instructions; loads
spin main 1042d00 1042d04   # 2 instructions; loads
spin main 1042d6c 1042d74   # 3 instructions; loads
spin main 10587c4 10587d8   # 6 instructions; loads
spin main 1059808 105981c   # 6 instructions; loads
spin main 1059d2c 1059d40   # 6 instructions; loads
spin main 105beb0 105bec4   # 6 instructions; loads
spin main 105e700 105e714   # 6 instructions; loads
spin main 1066350 1066364   # 6 instructions; loads
spin main 1075340 1075354   # 6 instructions; loads
spin main 1086b00 1086b14   # 6 instructions; loads
spin main 1086b48 1086b5c   # 6 instructions; loads
spin main 10a671c 10a6730   # 6 instructions; loads
spin main 10a9640 10a9654   # 6 instructions; loads
spin main 10ab2e8 10ab2fc   # 6 instructions; loads
spin main 10ab310 10ab324   # 6 instructions; loads
spin main 10af3b8 10af3cc   # 6 instructions; loads
spin main 10af9a8 10af9bc   # 6 instructions; loads
spin main 10b6d0c 10b6d20   # 6 instructions; loads
spin main 10c765c 10c7670   # 6 instructions; loads
spin main 10d588c 10d58a0   # 6 instructions; loads
spin main 10dabd4 10dabe8   # 6 instructions; loads
spin main 10dafa8 10dafbc   # 6 instructions; loads
spin main 10db6e0 10db6f4   # 6 instructions; loads
spin main 10dbc78 10dbc8c   # 6 instructions; loads
spin main 10de660 10de674   # 6 instructions; loads
spin main 10ebcac 10ebcc0   # 6 instructions; loads
spin main 10ebd28 10ebd3c   # 6 instructions; loads
spin main 10f3274 10f3288   # 6 instructions; loads
spin main 10f329c 10f32b0   # 6 instructions; loads
spin main 10f9384 10f94b8   # 4 instructions; loads
spin main 10f9408 10f949c   # 4 instructions; loads
spin main 1106318 110632c   # 6 instructions; loads
spin main 1106860 1106874   # 6 instructions; loads
spin main 1111040 1111054   # 6 instructions; loads
spin main 1111b8c 1111ba0   # 6 instructions; loads
spin main 1111dec 1111e00   # 6 instructions; loads
spin main 111256c 1112580   # 6 instructions; loads
spin main 1115ca4 1115cb8   # 6 instructions; loads
spin main 1117c88 1117c9c   # 6 instructions; loads
spin main 111b654 111b668   # 6 instructions; loads
spin main 113bf9c 113bfb0   # 6 instructions; loads
spin main 113bfc4 113bfd8   # 6 instructions; loads
spin main 11404a0 11404b4   # 6 instructions; loads
spin main 114f7e8 114f7fc   # 6 instructions; loads
spin main 115891c 1158930   # 6 instructions; loads
spin main 1159860 1159874   # 6 instructions; loads
spin main 116b594 116b5a8   # 6 instructions; loads
spin main 116b9ec 116ba00   # 6 instructions; loads
spin main 116ba14 116ba28   # 6 instructions; loads
spin main 1173168 117317c   # 6 instructions; loads
spin main 1178e1c 1178e30   # 6 instructions; loads
spin main 117af24 117af38   # 6 instructions; loads
spin main 118444c 1184460   # 6 instructions; loads
spin main 1184828 118483c   # 6 instructions; loads
spin main 1185b8c 1185ba0   # 6 instructions; loads
spin main 1186c48 1186c5c   # 6 instructions; loads
spin main 118ba50 118ba64   # 6 instructions; loads
spin main 118ca3c 118ca50   # 6 instructions; loads
spin main 1191f94 1191fa8   # 6 instructions; loads
spin main 1191fbc 1191fd0   # 6 instructions; loads
spin main 1192b18 1192b2c   # 6 instructions; loads
spin main 119b934 119b948   # 6 instructions; loads
spin main 119d40c 119d420   # 6 instructions; loads
spin main 11b1d80 11b1d94   # 6 instructions; loads
spin main 11b4ca0 11b4cb4   # 6 instructions; loads
spin main 11b6300 11b6314   # 6 instructions; loads
spin main 11b8e58 11b8e6c   # 6 instructions; loads
spin main 11bea60 11bea74   # 6 instructions; loads
spin main 11d8218 11d822c   # 6 instructions; loads
spin main 11db090 11db0a4   # 6 instructions; loads
spin main 11db0b8 11db0cc   # 6 instructions; loads
spin main 1201688 120169c   # 6 instructions; loads
spin main 12048a4 12048b8   # 6 instructions; loads
spin main 12048cc 12048e0   # 6 instructions; loads
spin main 1205868 120587c   # 6 instructions; loads
spin main 1206350 1206364   # 6 instructions; loads
spin main 1226308 122631c   # 6 instructions; loads
spin main 1226898 12268ac   # 6 instructions; loads
spin main 12374a8 12374bc   # 6 instructions; loads
spin main 1252260 1252274   # 6 instructions; loads
spin main 1252688 125269c   # 6 instructions; loads
spin main 1252968 125297c   # 6 instructions; loads
spin main 1271260 1271274   # 6 instructions; loads
spin main 127b710 127b724   # 6 instructions; loads
spin main 127b778 127b78c   # 6 instructions; loads
spin main 127b928 127b93c   # 6 instructions; loads
spin main 127b954 127b968   # 6 instructions; loads
spin main 127b980 127b994   # 6 instructions; loads
spin main 127b9ac 127b9c0   # 6 instructions; loads
spin main 127c150 127c164   # 6 instructions; loads
spin main 127c178 127c18c   # 6 instructions; loads
spin main 12816c8 12816dc   # 6 instructions; loads
spin main 1282010 1282024   # 6 instructions; loads
spin main 1282078 128208c   # 6 instructions; loads
spin main 1285674 1285688   # 6 instructions; loads
spin main 12877c8 12877dc   # 6 instructions; loads
spin main 128dd24 128dd38   # 6 instructions; loads
spin main 128f04c 128f060   # 6 instructions; loads
spin main 12af6ac 12af6c0   # 6 instructions; loads
spin main 12af6d4 12af6e8   # 6 instructions; loads
spin main 12ba674 12ba688   # 6 instructions; loads
spin main 12cc354 12cc368   # 6 instructions; loads
spin main 12fc134 12fc148   # 6 instructions; loads
spin main 12fc798 12fc7ac   # 6 instructions; loads
spin main 13098cc 13098e0   # 6 instructions; loads
spin main 130ce14 130cef4   # 11 instructions; loads
spin main 1312798 13127ac   # 6 instructions; loads
spin main 131363c 1313650   # 6 instructions; loads
spin main 1313900 1313914   # 6 instructions; loads
spin main 131b4c8 131b4dc   # 6 instructions; loads
spin main 134c220 134c234   # 6 instructions; loads
spin main 13e7d68 13e7d7c   # 6 instructions; loads
spin main 13e7f00 13e7f14   # 6 instructions; loads
spin main 1571e58 1571e6c   # 6 instructions; loads
spin main 1578834 1578848   # 6 instructions; loads
spin main 1585d04 1585d18   # 6 instructions; loads
spin main 1587128 158713c   # 6 instructions; loads
spin main 1587150 1587164   # 6 instructions; loads
spin main 158ec94 158eca8   # 6 instructions; loads
spin main 158f7d4 158f7e8   # 6 instructions; loads
spin main 158fab0 158fac4   # 6 instructions; loads
spin main 158fad8 158faec   # 6 instructions; loads
spin main 1590c38 1590c4c   # 6 instructions; loads
spin main 15a8180 15a8194   # 6 instructions; loads
spin main 15a8618 15a862c   # 6 instructions; loads
spin main 15a8720 15a8734   # 6 instructions; loads
spin main 15a8a38 15a8a4c   # 6 instructions; loads
spin main 15c4eb8 15c4ecc   # 6 instructions; loads
spin main 15d8974 15d8988   # 6 instructions; loads
spin main 15d9f60 15d9f74   # 6 instructions; loads
spin main 15da008 15da01c   # 6 instructions; loads
spin main 15df528 15df53c   # 6 instructions; loads
spin main 15df668 15df67c   # 6 instructions; loads
spin main 15df690 15df6a4   # 6 instructions; loads
spin main 15f7dfc 15f7e10   # 6 instructions; loads
spin main 15f8360 15f8374   # 6 instructions; loads
spin main 15f98a0 15f98b4   # 6 instructions; loads
spin main 1608f04 1608f18   # 6 instructions; loads
spin main 161523c 1615250   # 6 instructions; loads
spin main 161966c 1619680   # 6 instructions; loads
spin main 16196bc 16196d0   # 6 instructions; loads
spin main 161a810 161a824   # 6 instructions; loads
spin main 1625758 162576c   # 6 instructions; loads
spin main 1627da8 1627dbc   # 6 instructions; loads
spin main 1628534 1628548   # 6 instructions; loads
spin main 162ce60 162ce74   # 6 instructions; loads
spin main 1639828 163983c   # 6 instructions; loads
spin main 1641574 1641588   # 6 instructions; loads
spin main 1643838 164384c   # 6 instructions; loads
spin main 16496b4 16496bc   # 3 instructions; loads
spin main 16496c4 16496c8   # 2 instructions; loads
spin main 16496fc 1649704   # 3 instructions; loads
spin main 1691fa4 1691fb8   # 6 instructions; loads
spin main 16cc754 16cc768   # 6 instructions; loads
spin main 172da0c 172da20   # 6 instructions; loads
spin main 1737834 1737848   # 6 instructions; loads
spin main 1737df8 1737e0c   # 6 instructions; loads
spin main 1790da0 1790db4   # 6 instructions; loads
spin main 1922fec 1923000   # 6 instructions; loads
spin main 1924710 1924724   # 6 instructions; loads
spin main 1953798 19537a0   # 3 instructions; loads
spin main 19537a8 19537ac   # 2 instructions; loads
spin main 1953830 1953838   # 3 instructions; loads
spin main 195391c 1953924   # 3 instructions; loads
spin main 195392c 1953930   # 2 instructions; loads
spin main 19539d8 19539e0   # 3 instructions; loads
spin main 1966130 1966138   # 3 instructions; loads
spin main 1966140 1966144   # 2 instructions; loads
spin main 1966168 1966170   # 3 instructions; loads
spin main 19661a0 19661a8   # 3 instructions; loads
spin main 19661b0 19661b4   # 2 instructions; loads
spin main 19661dc 19661e4   # 3 instructions; loads
spin main 19d6938 19d694c   # 6 instructions; loads
spin main 1a7ce6c 1a7ce7c   # 5 instructions; loads
spin main 1b5662c 1b56640   # 6 instructions; loads
spin main 1b566e8 1b566fc   # 6 instructions; loads
spin main 1b567a4 1b567b8   # 6 instructions; loads
spin main 1b56da4 1b56db8   # 6 instructions; loads
spin main 1b56e60 1b56e74   # 6 instructions; loads
spin main 1b56f1c 1b56f30   # 6 instructions; loads
spin main 1d34e90 1d34ea4   # 6 instructions; loads
spin main 1df2cac 1df2cb8   # 4 instructions; loads
spin main 21dc108 21dc130   # 4 instructions; loads
spin main 221fe50 221fe6c   # 8 instructions; loads
spin main 2227d40 2227d48   # 3 instructions; loads
spin main 2227dc8 2227dd0   # 3 instructions; loads
spin main 2227e58 2227e80   # 3 instructions; loads
spin main 222ed8c 222ed9c   # 5 instructions; loads
spin main 2255970 2255978   # 3 instructions; loads
spin main 2255980 2255984   # 2 instructions; loads
spin main 2255a0c 2255a14   # 3 instructions; loads
spin main 2255a98 2255aa0   # 3 instructions; loads
spin main 2255aa8 2255aac   # 2 instructions; loads
spin main 2255ac4 2255acc   # 3 instructions; loads
spin main 22aeafc 22aeb10   # 6 instructions; loads
spin main 22aec60 22aec74   # 6 instructions; loads
spin main 22bd7bc 22bd7e0   # 4 instructions; loads
spin main 22bd8ac 22bd8b8   # 4 instructions; loads
spin main 23352a4 23352b8   # 6 instructions; loads
spin main 2406890 2406898   # 3 instructions; loads
spin main 24068a0 24068a4   # 2 instructions; loads
spin main 2406920 2406928   # 3 instructions; loads
spin main 240715c 2407164   # 3 instructions; loads
spin main 240716c 2407170   # 2 instructions; loads
spin main 24071dc 24071e4   # 3 instructions; loads
spin main 240767c 2407684   # 3 instructions; loads
spin main 240768c 2407690   # 2 instructions; loads
spin main 240771c 2407724   # 3 instructions; loads
spin main 2407860 2407868   # 3 instructions; loads
spin main 2407870 2407874   # 2 instructions; loads
spin main 24078c8 24078d0   # 3 instructions; loads
spin main 2407914 240791c   # 3 instructions; loads
spin main 2407924 2407928   # 2 instructions; loads
spin main 24079dc 24079e4   # 3 instructions; loads
spin main 24079ec 24079f0   # 2 instructions; loads
spin main 2407a30 2407a38   # 3 instructions; loads
spin main 2407a60 2407a68   # 3 instructions; loads
spin main 2407b54 2407b5c   # 3 instructions; loads
spin main 2407b64 2407b68   # 2 instructions; loads
spin main 2407c48 2407c50   # 3 instructions; loads
spin main 2407cdc 2407ce4   # 3 instructions; loads
spin main 2407cec 2407cf0   # 2 instructions; loads
spin main 2407da4 2407dac   # 3 instructions; loads
spin main 2407dc4 2407dc8   # 2 instructions; loads
spin main 2407e68 2407e70   # 3 instructions; loads
spin main 2407e98 2407ea0   # 3 instructions; loads
spin main 2407ee0 2407ee8   # 3 instructions; loads
spin main 2407ef0 2407ef4   # 2 instructions; loads
spin main 2407f18 2407f20   # 3 instructions; loads
spin main 2407f64 2407f6c   # 3 instructions; loads
spin main 2407f74 2407f78   # 2 instructions; loads
spin main 2407fa0 2407fa8   # 3 instructions; loads
spin main 24084fc 2408504   # 3 instructions; loads
spin main 240850c 2408510   # 2 instructions; loads
spin main 2408534 240853c   # 3 instructions; loads
spin main 2408c68 2408c70   # 3 instructions; loads
spin main 2408c78 2408c7c   # 2 instructions; loads
spin main 2408ca0 2408ca8   # 3 instructions; loads
spin main 240a564 240a56c   # 3 instructions; loads
spin main 240a574 240a578   # 2 instructions; loads
spin main 240a5f8 240a600   # 3 instructions; loads
spin main 240a620 240a628   # 3 instructions; loads
spin main 240a630 240a634   # 2 instructions; loads
spin main 240a6b4 240a6bc   # 3 instructions; loads
spin main 240aa50 240aa58   # 3 instructions; loads
spin main 240aa60 240aa64   # 2 instructions; loads
spin main 240aab4 240aabc   # 3 instructions; loads
spin main 240aafc 240ab04   # 3 instructions; loads
spin main 240ab0c 240ab10   # 2 instructions; loads
spin main 240abac 240abb4   # 3 instructions; loads
spin main 240ac0c 240ac14   # 3 instructions; loads
spin main 240ac1c 240ac20   # 2 instructions; loads
spin main 240aca4 240acac   # 3 instructions; loads
spin main 240d908 240d910   # 3 instructions; loads
spin main 240d918 240d91c   # 2 instructions; loads
spin main 240d9a8 240d9b0   # 3 instructions; loads
spin main 240d9e4 240d9ec   # 3 instructions; loads
spin main 240d9f4 240d9f8   # 2 instructions; loads
spin main 240da64 240da6c   # 3 instructions; loads
spin main 240ff38 240ff40   # 3 instructions; loads
spin main 240ff48 240ff4c   # 2 instructions; loads
spin main 240ff68 240ff70   # 3 instructions; loads
spin main 245c2ec 245c300   # 6 instructions; loads
spin main 245c314 245c328   # 6 instructions; loads
spin main 245f0dc 245f0f0   # 6 instructions; loads
spin main 245f570 245f584   # 6 instructions; loads
spin main 246ea9c 246eab0   # 6 instructions; loads
spin main 246eee8 246eefc   # 6 instructions; loads
spin main 2472f60 2472f74   # 6 instructions; loads
spin main 24739ac 24739c0   # 6 instructions; loads
spin main 24741a8 24741bc   # 6 instructions; loads
spin main 248f710 248f724   # 6 instructions; loads
spin main 287ff50 287ff64   # 6 instructions; loads
spin main 288000c 2880020   # 6 instructions; loads
spin main 28800c8 28800dc   # 6 instructions; loads
spin main 2880ed4 2880ee8   # 6 instructions; loads
spin main 2880f90 2880fa4   # 6 instructions; loads
spin main 288104c 2881060   # 6 instructions; loads
spin main 2881108 288111c   # 6 instructions; loads
spin main 28811c4 28811d8   # 6 instructions; loads
spin main 2881280 2881294   # 6 instructions; loads
spin main 288133c 2881350   # 6 instructions; loads
spin main 28813f8 288140c   # 6 instructions; loads
spin main 28818c0 28818d4   # 6 instructions; loads
spin main 288197c 2881990   # 6 instructions; loads
spin main 2a38860 2a38868   # 3 instructions; loads
spin main 2a38870 2a38874   # 2 instructions; loads
spin main 2a388ac 2a388b4   # 3 instructions; loads
spin subsdk0 2090 20a4   # 6 instructions; loads
spin subsdk0 278b4 278c8   # 6 instructions; loads
spin subsdk0 bcf28 bcfd0 bcfd8   # 14 instructions; loads
spin subsdk0 bd0d0 bd178 bd180   # 14 instructions; loads
spin subsdk0 c03a0 c03b4   # 6 instructions; loads
spin subsdk0 1bbefc 1bbf08   # 4 instructions; loads
spin subsdk0 1bd838 1bd84c   # 6 instructions; loads
spin subsdk0 1c0c68 1c0c74   # 4 instructions; loads
spin sdk f5218 f5350   # 14 instructions; loads
spin sdk 23a590 23a5d8   # 19 instructions; loads
spin sdk 23a658 23a6a0   # 19 instructions; loads
spin sdk 23a7fc 23a918   # 19 instructions; loads
spin sdk 3d3250 3d3270   # 9 instructions; loads

# Sun shadow map size (runtime/resolution.c shadow_init switches the set on). Each frame the engine sizes its shadow
# cascades (a D16 4-layer array) in main+0xcebdf4: a base size (960 in the field), interpolated down by how close the
# cover is, rounded up to 8 at main+0xcec22c and stored as the width (+0x3d8 of the cascade set) and, through the packed
# store at +0xe4, the height (+0x3f8). Near the ground it falls to about 400, which draws foliage shadows blocky, and
# every change of size moves the shadow texels, so leaf shadows jump instead of sliding. The page's fixed size (+92)
# goes in just before the rounding, as the community's shadow resolution mods do (1.1.0: mov w11, #1024 over the
# computation). Found by a write watch on the size field (the writer was this function, and no other).
site shadow main cec22c 11001d6b @page:x11 b9405d6b 11001d6b   # add w11, w11, #7 -> adrp x11, page; ldr w11, [x11, #92]; add w11, w11, #7
