; ; sub_5A5DC from 0x5a5dc to 0x5a74c (368 bytes) ; ; 2 xrefs: ; > sub_59CF0 @ 0x59d54 ; > FMOD::Channel::getLoopPoints @ 0xcf204 ; ; 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 ; STR D8, [SP,#-0x10+var_30]! ; +0x0, 0x5a5dc STP X22, X21, [SP,#0x30+var_20] ; +0x4, 0x5a5e0 STP X20, X19, [SP,#0x30+var_10] ; +0x8, 0x5a5e4 STP X29, X30, [SP,#0x30+var_s0] ; +0xc, 0x5a5e8 LDR X8, [X0,#0x1D8] ; +0x10, 0x5a5ec ADD X29, SP, #0x30 ; +0x14, 0x5a5f0 CBZ X8, loc_5A674 ; +0x18, 0x5a5f4 MOV X21, X0 ; +0x1c, 0x5a5f8 CMP W2, #4 ; +0x20, 0x5a5fc MOV W0, #0x13 ; +0x24, 0x5a600 B.HI loc_5A744 ; +0x28, 0x5a604 MOV W9, #1 ; +0x2c, 0x5a608 LSL W9, W9, W2 ; +0x30, 0x5a60c MOV W10, #0x16 ; +0x34, 0x5a610 TST W9, W10 ; +0x38, 0x5a614 B.EQ loc_5A744 ; +0x3c, 0x5a618 MOV W20, W4 ; +0x40, 0x5a61c CMP W4, #4 ; +0x44, 0x5a620 MOV W0, #0x13 ; +0x48, 0x5a624 B.HI loc_5A744 ; +0x4c, 0x5a628 MOV W9, #1 ; +0x50, 0x5a62c LSL W9, W9, W20 ; +0x54, 0x5a630 MOV W10, #0x16 ; +0x58, 0x5a634 TST W9, W10 ; +0x5c, 0x5a638 B.EQ loc_5A744 ; +0x60, 0x5a63c LDR X22, [X8,#0x28] ; +0x64, 0x5a640 CBZ X22, loc_5A67C ; +0x68, 0x5a644 MOV X19, X3 ; +0x6c, 0x5a648 FMOV S8, #0.5 ; +0x70, 0x5a64c CBZ X1, loc_5A6AC ; +0x74, 0x5a650 CMP W2, #1 ; +0x78, 0x5a654 B.EQ loc_5A684 ; +0x7c, 0x5a658 CMP W2, #4 ; +0x80, 0x5a65c B.EQ loc_5A6E0 ; +0x84, 0x5a660 CMP W2, #2 ; +0x88, 0x5a664 B.NE loc_5A6AC ; +0x8c, 0x5a668 LDR W8, [X8,#0x58] ; +0x90, 0x5a66c B loc_5A6A8 ; +0x94, 0x5a670 MOV W0, #0x1E ; +0x98, 0x5a674 B loc_5A744 ; +0x9c, 0x5a678 MOV W0, #0x1F ; +0xa0, 0x5a67c B loc_5A744 ; +0xa4, 0x5a680 LDR S0, [X8,#0x58] ; +0xa8, 0x5a684 LDR S1, [X22,#0x6C] ; +0xac, 0x5a688 MOV W8, #0x447A0000 ; +0xb0, 0x5a68c FMOV S2, W8 ; +0xb4, 0x5a690 UCVTF S0, S0 ; +0xb8, 0x5a694 FMUL S0, S0, S2 ; +0xbc, 0x5a698 FDIV S0, S0, S1 ; +0xc0, 0x5a69c FADD S0, S0, S8 ; +0xc4, 0x5a6a0 FCVTZU W8, S0 ; +0xc8, 0x5a6a4 STR W8, [X1] ; +0xcc, 0x5a6a8 CBZ X19, loc_5A740 ; +0xd0, 0x5a6ac LDR X8, [X21,#0x1D8] ; +0xd4, 0x5a6b0 CMP W20, #1 ; +0xd8, 0x5a6b4 LDP W9, W8, [X8,#0x58] ; +0xdc, 0x5a6b8 ADD W8, W9, W8 ; +0xe0, 0x5a6bc SUB W8, W8, #1 ; +0xe4, 0x5a6c0 B.EQ loc_5A6FC ; +0xe8, 0x5a6c4 CMP W20, #4 ; +0xec, 0x5a6c8 B.EQ loc_5A728 ; +0xf0, 0x5a6cc CMP W20, #2 ; +0xf4, 0x5a6d0 B.NE loc_5A740 ; +0xf8, 0x5a6d4 MOV W0, WZR ; +0xfc, 0x5a6d8 B loc_5A720 ; +0x100, 0x5a6dc LDR W0, [X8,#0x58] ; +0x104, 0x5a6e0 LDR W2, [X22,#0x68] ; +0x108, 0x5a6e4 LDR W3, [X22,#0x28] ; +0x10c, 0x5a6e8 MOV W4, #1 ; +0x110, 0x5a6ec BL sub_5C280 ; +0x114, 0x5a6f0 CBNZ X19, loc_5A6B0 ; +0x118, 0x5a6f4 B loc_5A740 ; +0x11c, 0x5a6f8 LDR S0, [X22,#0x6C] ; +0x120, 0x5a6fc MOV W9, #0x447A0000 ; +0x124, 0x5a700 UCVTF S1, W8 ; +0x128, 0x5a704 FMOV S2, W9 ; +0x12c, 0x5a708 FMUL S1, S1, S2 ; +0x130, 0x5a70c FDIV S0, S1, S0 ; +0x134, 0x5a710 FADD S0, S0, S8 ; +0x138, 0x5a714 MOV W0, WZR ; +0x13c, 0x5a718 FCVTZU W8, S0 ; +0x140, 0x5a71c STR W8, [X19] ; +0x144, 0x5a720 B loc_5A744 ; +0x148, 0x5a724 LDR W2, [X22,#0x68] ; +0x14c, 0x5a728 LDR W3, [X22,#0x28] ; +0x150, 0x5a72c MOV W4, #1 ; +0x154, 0x5a730 MOV W0, W8 ; +0x158, 0x5a734 MOV X1, X19 ; +0x15c, 0x5a738 BL sub_5C280 ; +0x160, 0x5a73c MOV W0, WZR ; +0x164, 0x5a740 LDP X29, X30, [SP,#0x30+var_s0] ; +0x168, 0x5a744 B loc_5C5CC ; +0x16c, 0x5a748