; ; sub_59FEC from 0x59fec to 0x5a244 (600 bytes) ; ; 6 xrefs: ; > sub_59AE8 @ 0x59be4 ; > sub_60458 @ 0x6054c ; > sub_6E15C @ 0x6e274 ; > sub_7C19C @ 0x7c4a0 ; > sub_7C19C @ 0x7c560 ; > sub_92AE0 @ 0x93170 ; ; 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, #0x60 ; +0x0, 0x59fec STP X24, X23, [SP,#0x50+var_30] ; +0x4, 0x59ff0 STP X22, X21, [SP,#0x50+var_20] ; +0x8, 0x59ff4 STP X20, X19, [SP,#0x50+var_10] ; +0xc, 0x59ff8 STP X29, X30, [SP,#0x50+var_s0] ; +0x10, 0x59ffc ADD X29, SP, #0x50 ; +0x14, 0x5a000 CBZ X1, loc_5A028 ; +0x18, 0x5a004 LDR X8, [X0,#0x1D8] ; +0x1c, 0x5a008 MOV X19, X0 ; +0x20, 0x5a00c CBZ X8, loc_5A030 ; +0x24, 0x5a010 LDR W9, [X1,#0xB0] ; +0x28, 0x5a014 MOV X21, X1 ; +0x2c, 0x5a018 CBZ W9, loc_5A038 ; +0x30, 0x5a01c MOV W0, #0x3C ; '<' ; +0x34, 0x5a020 B loc_5A0B4 ; +0x38, 0x5a024 MOV W0, #0x1F ; +0x3c, 0x5a028 B loc_5A0B4 ; +0x40, 0x5a02c MOV W0, #0x1E ; +0x44, 0x5a030 B loc_5A0B4 ; +0x48, 0x5a034 MOV W23, W5 ; +0x4c, 0x5a038 MOV W22, W4 ; +0x50, 0x5a03c MOV W20, W3 ; +0x54, 0x5a040 MOV X24, X2 ; +0x58, 0x5a044 CBNZ X2, loc_5A064 ; +0x5c, 0x5a048 LDRB W8, [X8,#0x3E] ; +0x60, 0x5a04c TBNZ W8, #0, loc_5A060 ; +0x64, 0x5a050 BL sub_5C678 ; +0x68, 0x5a054 LDR X24, [X8,X9] ; +0x6c, 0x5a058 B loc_5A064 ; +0x70, 0x5a05c MOV X24, XZR ; +0x74, 0x5a060 LDR X8, [X19] ; +0x78, 0x5a064 ADD X2, SP, #0x50+var_38 ; +0x7c, 0x5a068 MOV X0, X19 ; +0x80, 0x5a06c MOV W1, WZR ; +0x84, 0x5a070 BL sub_5C50C ; +0x88, 0x5a074 CBNZ W0, loc_5A0B4 ; +0x8c, 0x5a078 LDR X8, [SP,#0x50+var_38] ; +0x90, 0x5a07c CBZ X8, loc_5A088 ; +0x94, 0x5a080 STR X19, [X8,#0x200] ; +0x98, 0x5a084 MOV X0, X19 ; +0x9c, 0x5a088 MOV X1, X24 ; +0xa0, 0x5a08c BL sub_5C618 ; +0xa4, 0x5a090 CBNZ W0, loc_5A0B4 ; +0xa8, 0x5a094 AND W2, W22, #1 ; +0xac, 0x5a098 MOV X0, X19 ; +0xb0, 0x5a09c MOV X1, X21 ; +0xb4, 0x5a0a0 BL sub_5AD18 ; +0xb8, 0x5a0a4 CBNZ W0, loc_5A0B4 ; +0xbc, 0x5a0a8 BL sub_5C54C ; +0xc0, 0x5a0ac CBZ W0, loc_5A0C8 ; +0xc4, 0x5a0b0 LDP X29, X30, [SP,#0x50+var_s0] ; +0xc8, 0x5a0b4 LDP X20, X19, [SP,#0x50+var_10] ; +0xcc, 0x5a0b8 LDP X22, X21, [SP,#0x50+var_20] ; +0xd0, 0x5a0bc LDP X24, X23, [SP,#0x50+var_30] ; +0xd4, 0x5a0c0 B loc_5C6B4 ; +0xd8, 0x5a0c4 TBZ W22, #0, loc_5A128 ; +0xdc, 0x5a0c8 TST W23, #1 ; +0xe0, 0x5a0cc FMOV S0, #1.0 ; +0xe4, 0x5a0d0 FMOV S1, WZR ; +0xe8, 0x5a0d4 FCSEL S0, S1, S0, NE ; +0xec, 0x5a0d8 MOV X0, X19 ; +0xf0, 0x5a0dc STR S0, [X19,#0x218] ; +0xf4, 0x5a0e0 STR S0, [X19,#0x21C] ; +0xf8, 0x5a0e4 BL sub_595BC ; +0xfc, 0x5a0e8 CBNZ W0, loc_5A0B4 ; +0x100, 0x5a0ec LDR X8, [X21] ; +0x104, 0x5a0f0 MOV X0, X21 ; +0x108, 0x5a0f4 LDR X8, [X8] ; +0x10c, 0x5a0f8 BLR X8 ; +0x110, 0x5a0fc TBZ W0, #0, loc_5A114 ; +0x114, 0x5a100 LDR X8, [X21,#0xB8] ; +0x118, 0x5a104 CBZ X8, loc_5A114 ; +0x11c, 0x5a108 LDR W1, [X8,#0x194] ; +0x120, 0x5a10c B loc_5A118 ; +0x124, 0x5a110 MOV W1, WZR ; +0x128, 0x5a114 MOV W2, #2 ; +0x12c, 0x5a118 MOV X0, X19 ; +0x130, 0x5a11c BL sub_5A918 ; +0x134, 0x5a120 CBNZ W0, loc_5A0B4 ; +0x138, 0x5a124 MOV X0, X19 ; +0x13c, 0x5a128 BL sub_5AF2C ; +0x140, 0x5a12c CBNZ W0, loc_5A0B4 ; +0x144, 0x5a130 LDR W8, [X21,#0x138] ; +0x148, 0x5a134 LDR X9, [X21,#0x118] ; +0x14c, 0x5a138 ADD W8, W8, #1 ; +0x150, 0x5a13c STR W8, [X21,#0x138] ; +0x154, 0x5a140 CBZ X9, loc_5A1B0 ; +0x158, 0x5a144 LDR X8, [X19,#0x1D8] ; +0x15c, 0x5a148 LDRB W8, [X8,#0x3E] ; +0x160, 0x5a14c TBNZ W8, #0, loc_5A1B0 ; +0x164, 0x5a150 ADRP X23, #off_10F7A0@PAGE ; +0x168, 0x5a154 LDR X23, [X23,#off_10F7A0@PAGEOFF]; off_114000 ; +0x16c, 0x5a158 LDR X8, [X23]; unk_11F800 ; +0x170, 0x5a15c LDR X0, [X8,#(qword_11F930 - 0x11F800)] ; +0x174, 0x5a160 BL .FMOD_OS_CriticalSection_Enter ; +0x178, 0x5a164 LDR X8, [X21,#0x118] ; +0x17c, 0x5a168 LDP X9, X10, [X8] ; +0x180, 0x5a16c STR X9, [X10] ; +0x184, 0x5a170 LDR X9, [X8] ; +0x188, 0x5a174 STR X10, [X9,#8] ; +0x18c, 0x5a178 STR X8, [X8] ; +0x190, 0x5a17c LDR X9, [X19,#8] ; +0x194, 0x5a180 MOV W10, #0x11128 ; +0x198, 0x5a184 ADD X9, X9, X10 ; +0x1a0, 0x5a18c LDR X10, [X9] ; +0x1a4, 0x5a190 STP X10, X9, [X8] ; +0x1a8, 0x5a194 STR X8, [X10,#8] ; +0x1ac, 0x5a198 LDR X9, [X8,#8] ; +0x1b0, 0x5a19c STR X8, [X9] ; +0x1b4, 0x5a1a0 LDR X8, [X23]; unk_11F800 ; +0x1b8, 0x5a1a4 LDR X0, [X8,#(qword_11F930 - 0x11F800)] ; +0x1bc, 0x5a1a8 BL .FMOD_OS_CriticalSection_Leave ; +0x1c0, 0x5a1ac TBZ W22, #0, loc_5A214 ; +0x1c4, 0x5a1b0 LDR X8, [X21] ; +0x1c8, 0x5a1b4 ADD X1, SP, #0x50+var_3C ; +0x1cc, 0x5a1b8 MOV X0, X21 ; +0x1d0, 0x5a1bc LDR X8, [X8,#0x120] ; +0x1d4, 0x5a1c0 BLR X8 ; +0x1d8, 0x5a1c4 LDRB W8, [SP,#0x50+var_3C] ; +0x1dc, 0x5a1c8 TBZ W8, #4, loc_5A1F0 ; +0x1e0, 0x5a1cc STR WZR, [SP,#0x50+var_40] ; +0x1e4, 0x5a1d0 STR XZR, [SP,#0x50+var_48] ; +0x1e8, 0x5a1d4 LDP X8, X9, [X19] ; +0x1ec, 0x5a1d8 MOV W10, #0x10A70 ; +0x1f0, 0x5a1dc ADD X2, SP, #0x50+var_48 ; +0x1f8, 0x5a1e4 BL sub_5C694 ; +0x1fc, 0x5a1e8 CBNZ W0, loc_5A0B4 ; +0x200, 0x5a1ec BL sub_5C678 ; +0x204, 0x5a1f0 LDR X8, [X8,X9] ; +0x208, 0x5a1f4 LDRB W8, [X8,#0x48] ; +0x20c, 0x5a1f8 TBZ W8, #1, loc_5A214 ; +0x210, 0x5a1fc LDR X8, [X19,#0x1D8] ; +0x214, 0x5a200 LDRB W8, [X8,#0x3E] ; +0x218, 0x5a204 TBNZ W8, #0, loc_5A214 ; +0x21c, 0x5a208 BL sub_5C5DC ; +0x220, 0x5a20c CBNZ W0, loc_5A0B4 ; +0x224, 0x5a210 LDR X8, [X21,#0xF0] ; +0x228, 0x5a214 CBZ X8, loc_5A230 ; +0x22c, 0x5a218 LDR W9, [X21,#0xE4] ; +0x230, 0x5a21c CBZ W9, loc_5A230 ; +0x234, 0x5a220 LDR X8, [X8] ; +0x238, 0x5a224 STR WZR, [X19,#0x1F8] ; +0x23c, 0x5a228 STR X8, [X19,#0x1F0] ; +0x240, 0x5a22c TBNZ W20, #0, loc_5A23C ; +0x244, 0x5a230 BL sub_5C624 ; +0x248, 0x5a234 CBNZ W0, loc_5A0B4 ; +0x24c, 0x5a238 MOV W0, WZR ; +0x250, 0x5a23c B loc_5A0B4 ; +0x254, 0x5a240