; ; sub_57F50 from 0x57f50 to 0x581c4 (628 bytes) ; ; 3 xrefs: ; > sub_57F28 @ 0x57f44 ; > sub_57F50 @ 0x57f88 ; > sub_6A544 @ 0x6a76c ; ; 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 X23, [SP,#-0x10+var_30]! ; +0x0, 0x57f50 STP X20, X19, [SP,#0x30+var_10] ; +0x4, 0x57f54 MOV X19, X0 ; +0x8, 0x57f58 STP X22, X21, [SP,#0x30+var_20] ; +0xc, 0x57f5c STP X29, X30, [SP,#0x30+var_s0] ; +0x10, 0x57f60 ADD X29, SP, #0x30 ; +0x14, 0x57f64 TBZ W1, #0, loc_57F98 ; +0x18, 0x57f68 LDR X8, [X19,#0x190] ; +0x1c, 0x57f6c ADD X20, X19, #0x190 ; +0x20, 0x57f70 CMP X8, X20 ; +0x24, 0x57f74 B.EQ loc_57F98 ; +0x28, 0x57f78 LDR X0, [X8,#0x10] ; +0x2c, 0x57f7c LDR X21, [X8] ; +0x30, 0x57f80 MOV W1, #1 ; +0x34, 0x57f84 BL sub_57F50 ; +0x38, 0x57f88 MOV X8, X21 ; +0x3c, 0x57f8c CBZ W0, loc_57F74 ; +0x40, 0x57f90 B loc_581BC ; +0x44, 0x57f94 LDR X8, [X19] ; +0x48, 0x57f98 MOV X2, #0xFFFFFFFFFFF00000 ; +0x4c, 0x57f9c MOV X0, X19 ; +0x50, 0x57fa0 MOV X1, XZR ; +0x54, 0x57fa4 LDR X8, [X8,#0x100] ; +0x58, 0x57fa8 BLR X8 ; +0x5c, 0x57fac LDR X8, [X19,#8] ; +0x60, 0x57fb0 BL sub_59394 ; +0x64, 0x57fb4 CMP X8, X19 ; +0x68, 0x57fb8 B.EQ loc_58044 ; +0x6c, 0x57fbc MOV W21, #0x1FC0 ; +0x70, 0x57fc0 MOV X20, XZR ; +0x74, 0x57fc4 MOVK W21, #1,LSL#16 ; +0x78, 0x57fc8 LDR X8, [X19,#8] ; +0x7c, 0x57fcc CMP X20, #4 ; +0x80, 0x57fd0 B.EQ loc_58008 ; +0x84, 0x57fd4 LDR X8, [X8,X21] ; +0x88, 0x57fd8 CBZ X8, loc_57FFC ; +0x8c, 0x57fdc LDR X8, [X19] ; +0x90, 0x57fe0 FMOV S0, WZR ; +0x94, 0x57fe4 MOV X0, X19 ; +0x98, 0x57fe8 MOV W1, W20 ; +0x9c, 0x57fec LDR X8, [X8,#0x68] ; +0xa0, 0x57ff0 BLR X8 ; +0xa4, 0x57ff4 CBNZ W0, loc_581BC ; +0xa8, 0x57ff8 ADD X20, X20, #1 ; +0xac, 0x57ffc ADD X21, X21, #0x18 ; +0xb0, 0x58000 B loc_57FCC ; +0xb4, 0x58004 BL sub_59394 ; +0xb8, 0x58008 CBZ X8, loc_58044 ; +0xbc, 0x5800c CMP X8, X19 ; +0xc0, 0x58010 B.EQ loc_58044 ; +0xc4, 0x58014 MOV W21, #0x10E0 ; +0xc8, 0x58018 ADD X20, X19, #0x1A8 ; +0xcc, 0x5801c MOVK W21, #1,LSL#16 ; +0xd0, 0x58020 LDR X8, [X20] ; +0xd4, 0x58024 CMP X8, X20 ; +0xd8, 0x58028 B.EQ loc_58044 ; +0xdc, 0x5802c LDR X9, [X19,#8] ; +0xe0, 0x58030 LDR X0, [X8,#0x10] ; +0xe4, 0x58034 LDR X1, [X9,X21] ; +0xe8, 0x58038 BL sub_5BE98 ; +0xec, 0x5803c B loc_58024 ; +0xf0, 0x58040 LDRSH W8, [X19,#0x1FC] ; +0xf4, 0x58044 CMN W8, #1 ; +0xf8, 0x58048 B.EQ loc_58060 ; +0xfc, 0x5804c LDR X0, [X19,#8] ; +0x100, 0x58050 MOV X1, X19 ; +0x104, 0x58054 BL sub_6E864 ; +0x108, 0x58058 CBNZ W0, loc_581BC ; +0x10c, 0x5805c LDP X8, X9, [X19,#0x1C0] ; +0x110, 0x58060 STR X8, [X9] ; +0x114, 0x58064 LDR X8, [X19,#0x1C0] ; +0x118, 0x58068 STR X9, [X8,#8] ; +0x11c, 0x5806c LDR X8, [X19,#0x70] ; +0x120, 0x58070 ADD X9, X19, #0x1C0 ; +0x124, 0x58074 STP X9, X9, [X19,#0x1C0] ; +0x128, 0x58078 CBZ X8, loc_580C4 ; +0x12c, 0x5807c ADD X8, X8, #0x64 ; 'd' ; +0x130, 0x58080 LDAXR W9, [X8] ; +0x134, 0x58084 AND W9, W9, #0xFFFFFFDF ; +0x138, 0x58088 STLXR W10, W9, [X8] ; +0x13c, 0x5808c CBNZ W10, loc_58084 ; +0x140, 0x58090 LDR X8, [X19,#0x70] ; +0x144, 0x58094 ADD X8, X8, #0x64 ; 'd' ; +0x148, 0x58098 LDAXR W9, [X8] ; +0x14c, 0x5809c AND W9, W9, #0xFFFFFFBF ; +0x150, 0x580a0 STLXR W10, W9, [X8] ; +0x154, 0x580a4 CBNZ W10, loc_5809C ; +0x158, 0x580a8 LDR X0, [X19,#0x70] ; +0x15c, 0x580ac LDR X8, [X0] ; +0x160, 0x580b0 LDR X8, [X8,#0x10] ; +0x164, 0x580b4 BLR X8 ; +0x168, 0x580b8 CBNZ W0, loc_581BC ; +0x16c, 0x580bc STR XZR, [X19,#0x70] ; +0x170, 0x580c0 ADRP X20, #off_10F7A0@PAGE ; +0x174, 0x580c4 LDR X1, [X19,#0x1E0] ; +0x178, 0x580c8 LDR X20, [X20,#off_10F7A0@PAGEOFF]; off_114000 ; +0x17c, 0x580cc CBZ X1, loc_580F0 ; +0x180, 0x580d0 LDR X8, [X20]; unk_11F800 ; +0x184, 0x580d4 ADRL X2, aSrcFmodChannel; "../../src/fmod_channelgroupi.cpp" ; +0x188, 0x580d8 MOV W3, #0x1C4 ; +0x190, 0x580e0 LDR X0, [X8,#(qword_11F9B0 - 0x11F800)] ; +0x194, 0x580e4 MOV W4, #1 ; +0x198, 0x580e8 BL sub_E2D74 ; +0x19c, 0x580ec LDR X1, [X19,#0x40] ; +0x1a0, 0x580f0 CBZ X1, loc_5810C ; +0x1a4, 0x580f4 LDR X8, [X19,#8] ; +0x1a8, 0x580f8 MOV W9, #0x8C8 ; +0x1ac, 0x580fc BL sub_59360 ; +0x1b0, 0x58100 STR WZR, [X19,#0x38] ; +0x1b4, 0x58104 STR XZR, [X19,#0x40] ; +0x1b8, 0x58108 LDR X1, [X19,#0x10] ; +0x1bc, 0x5810c CBZ X1, loc_58124 ; +0x1c0, 0x58110 LDR X8, [X19,#8] ; +0x1c4, 0x58114 MOV W9, #0x848 ; +0x1c8, 0x58118 BL sub_59360 ; +0x1cc, 0x5811c STR XZR, [X19,#0x10] ; +0x1d0, 0x58120 LDR X8, [X19,#8] ; +0x1d4, 0x58124 BL sub_59394 ; +0x1d8, 0x58128 CBZ X8, loc_58174 ; +0x1dc, 0x5812c CMP X8, X19 ; +0x1e0, 0x58130 B.EQ loc_58174 ; +0x1e4, 0x58134 LDR X8, [X19,#0x190] ; +0x1e8, 0x58138 MOV W22, #0x10E0 ; +0x1ec, 0x5813c ADD X21, X19, #0x190 ; +0x1f0, 0x58140 MOVK W22, #1,LSL#16 ; +0x1f4, 0x58144 CMP X8, X21 ; +0x1f8, 0x58148 B.EQ loc_58174 ; +0x1fc, 0x5814c LDR X9, [X19,#8] ; +0x200, 0x58150 LDR X1, [X8,#0x10] ; +0x204, 0x58154 LDR X23, [X8] ; +0x208, 0x58158 MOV W2, #1 ; +0x20c, 0x5815c LDR X0, [X9,X22] ; +0x210, 0x58160 MOV X3, XZR ; +0x214, 0x58164 BL sub_581C4 ; +0x218, 0x58168 MOV X8, X23 ; +0x21c, 0x5816c B loc_58148 ; +0x220, 0x58170 LDP X8, X9, [X19,#0x178] ; +0x224, 0x58174 MOV W11, #0xBA11 ; +0x228, 0x58178 ADD X10, X19, #0x178 ; +0x22c, 0x5817c MOVK W11, #0xDEAD,LSL#16 ; +0x230, 0x58180 STR X8, [X9] ; +0x234, 0x58184 LDR X8, [X19,#0x178] ; +0x238, 0x58188 ADRL X2, aSrcFmodChannel; "../../src/fmod_channelgroupi.cpp" ; +0x23c, 0x5818c MOV W3, #0x1E9 ; +0x244, 0x58194 STR X9, [X8,#8] ; +0x248, 0x58198 STP X10, X10, [X19,#0x178] ; +0x24c, 0x5819c STR W11, [X19,#0x1D8] ; +0x250, 0x581a0 LDR X8, [X20]; unk_11F800 ; +0x254, 0x581a4 MOV W4, #1 ; +0x258, 0x581a8 MOV X1, X19 ; +0x25c, 0x581ac LDR X0, [X8,#(qword_11F9B0 - 0x11F800)] ; +0x260, 0x581b0 BL sub_E2D74 ; +0x264, 0x581b4 MOV W0, WZR ; +0x268, 0x581b8 LDP X29, X30, [SP,#0x30+var_s0] ; +0x26c, 0x581bc B loc_593B0 ; +0x270, 0x581c0