; ; sub_5A76C from 0x5a76c to 0x5a8e8 (380 bytes) ; ; 2 xrefs: ; > sub_5A244 @ 0x5a29c ; > FMOD::Channel::setLoopPoints @ 0xcf074 ; ; This function is hookable on this platform! ; ; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA ; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings ; SUB SP, SP, #0x50 ; +0x0, 0x5a76c STP X22, X21, [SP,#0x40+var_20] ; +0x4, 0x5a770 STP X20, X19, [SP,#0x40+var_10] ; +0x8, 0x5a774 STP X29, X30, [SP,#0x40+var_s0] ; +0xc, 0x5a778 STR XZR, [SP,#0x40+var_38] ; +0x10, 0x5a77c LDR X9, [X0,#0x1D8] ; +0x14, 0x5a780 STR D8, [SP,#0x40+var_30] ; +0x18, 0x5a784 STR X23, [SP,#0x40+var_28] ; +0x1c, 0x5a788 ADD X29, SP, #0x40 ; +0x20, 0x5a78c CBZ X9, loc_5A818 ; +0x24, 0x5a790 LDR X10, [X0,#0x20] ; +0x28, 0x5a794 MOV X19, X0 ; +0x2c, 0x5a798 CBZ X10, loc_5A818 ; +0x30, 0x5a79c CMP W2, #4 ; +0x34, 0x5a7a0 MOV W0, #0x13 ; +0x38, 0x5a7a4 B.HI loc_5A81C ; +0x3c, 0x5a7a8 MOV W10, #1 ; +0x40, 0x5a7ac LSL W10, W10, W2 ; +0x44, 0x5a7b0 MOV W11, #0x16 ; +0x48, 0x5a7b4 TST W10, W11 ; +0x4c, 0x5a7b8 B.EQ loc_5A81C ; +0x50, 0x5a7bc MOV W21, W4 ; +0x54, 0x5a7c0 CMP W4, #4 ; +0x58, 0x5a7c4 MOV W0, #0x13 ; +0x5c, 0x5a7c8 B.HI loc_5A81C ; +0x60, 0x5a7cc MOV W10, #1 ; +0x64, 0x5a7d0 LSL W10, W10, W21 ; +0x68, 0x5a7d4 MOV W11, #0x16 ; +0x6c, 0x5a7d8 TST W10, W11 ; +0x70, 0x5a7dc B.EQ loc_5A81C ; +0x74, 0x5a7e0 LDR X22, [X9,#0x28] ; +0x78, 0x5a7e4 CBZ X22, loc_5A8E0 ; +0x7c, 0x5a7e8 MOV W20, W3 ; +0x80, 0x5a7ec MOV W8, W1 ; +0x84, 0x5a7f0 CMP W2, #1 ; +0x88, 0x5a7f4 ADRP X23, #dword_2F10C@PAGE ; +0x8c, 0x5a7f8 FMOV S8, #0.5 ; +0x90, 0x5a7fc B.EQ loc_5A834 ; +0x94, 0x5a800 CMP W2, #4 ; +0x98, 0x5a804 B.EQ loc_5A854 ; +0x9c, 0x5a808 CMP W2, #2 ; +0xa0, 0x5a80c B.EQ loc_5A84C ; +0xa4, 0x5a810 B loc_5A868 ; +0xa8, 0x5a814 MOV W0, #0x1E ; +0xac, 0x5a818 LDP X29, X30, [SP,#0x40+var_s0] ; +0xb0, 0x5a81c LDP X20, X19, [SP,#0x40+var_10] ; +0xb4, 0x5a820 LDP X22, X21, [SP,#0x40+var_20] ; +0xb8, 0x5a824 LDR X23, [SP,#0x40+var_28] ; +0xbc, 0x5a828 LDR D8, [SP,#0x40+var_30] ; +0xc0, 0x5a82c B loc_5C6BC ; +0xc4, 0x5a830 LDR S0, [X23,#dword_2F10C@PAGEOFF] ; +0xc8, 0x5a834 LDR S1, [X22,#0x6C] ; +0xcc, 0x5a838 UCVTF S2, W8 ; +0xd0, 0x5a83c FMUL S0, S2, S0 ; +0xd4, 0x5a840 FMADD S0, S0, S1, S8 ; +0xd8, 0x5a844 FCVTZU W8, S0 ; +0xdc, 0x5a848 STR W8, [SP,#0x40+var_38+4] ; +0xe0, 0x5a84c B loc_5A868 ; +0xe4, 0x5a850 LDR W2, [X22,#0x68] ; +0xe8, 0x5a854 LDR W3, [X22,#0x28] ; +0xec, 0x5a858 ADD X1, SP, #0x40+var_38+4 ; +0xf0, 0x5a85c MOV W0, W8 ; +0xf4, 0x5a860 BL sub_5C214 ; +0xf8, 0x5a864 CMP W21, #1 ; +0xfc, 0x5a868 B.EQ loc_5A888 ; +0x100, 0x5a86c CMP W21, #4 ; +0x104, 0x5a870 B.EQ loc_5A8A8 ; +0x108, 0x5a874 CMP W21, #2 ; +0x10c, 0x5a878 B.NE loc_5A8BC ; +0x110, 0x5a87c STR W20, [SP,#0x40+var_38] ; +0x114, 0x5a880 B loc_5A8BC ; +0x118, 0x5a884 LDR S0, [X23,#dword_2F10C@PAGEOFF] ; +0x11c, 0x5a888 LDR S1, [X22,#0x6C] ; +0x120, 0x5a88c UCVTF S2, W20 ; +0x124, 0x5a890 FMUL S0, S2, S0 ; +0x128, 0x5a894 FMADD S0, S0, S1, S8 ; +0x12c, 0x5a898 FCVTZU W8, S0 ; +0x130, 0x5a89c STR W8, [SP,#0x40+var_38] ; +0x134, 0x5a8a0 B loc_5A8BC ; +0x138, 0x5a8a4 LDR W2, [X22,#0x68] ; +0x13c, 0x5a8a8 LDR W3, [X22,#0x28] ; +0x140, 0x5a8ac ADD X1, SP, #0x40+var_38 ; +0x144, 0x5a8b0 MOV W0, W20 ; +0x148, 0x5a8b4 BL sub_5C214 ; +0x14c, 0x5a8b8 LDP W8, W1, [SP,#0x40+var_38] ; +0x150, 0x5a8bc SUBS W8, W8, W1 ; +0x154, 0x5a8c0 B.LS loc_5A8E0 ; +0x158, 0x5a8c4 LDR X0, [X19,#0x1D8] ; +0x15c, 0x5a8c8 ADD W2, W8, #1 ; +0x160, 0x5a8cc LDR X9, [X0] ; +0x164, 0x5a8d0 LDR X9, [X9,#0x90] ; +0x168, 0x5a8d4 BLR X9 ; +0x16c, 0x5a8d8 B loc_5A81C ; +0x170, 0x5a8dc MOV W0, #0x1F ; +0x174, 0x5a8e0 B loc_5A81C ; +0x178, 0x5a8e4