; ; sub_58D98 from 0x58d98 to 0x58f88 (496 bytes) ; ; 1 xrefs: ; > @ 0x10c488 ; ; 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 X21, [SP,#-0x10+var_20]! ; +0x0, 0x58d98 STP X20, X19, [SP,#0x20+var_10] ; +0x4, 0x58d9c STP X29, X30, [SP,#0x20+var_s0] ; +0x8, 0x58da0 LDR X8, [X0] ; +0xc, 0x58da4 LDR W21, [X0,#0x200] ; +0x10, 0x58da8 MOV W20, W1 ; +0x14, 0x58dac ADD X2, SP, #0x20+var_18 ; +0x18, 0x58db0 LDR X8, [X8,#0x120] ; +0x1c, 0x58db4 MOV W1, #0xFFFFFFFE ; +0x20, 0x58db8 ADD X29, SP, #0x20 ; +0x24, 0x58dbc MOV X19, X0 ; +0x28, 0x58dc0 BLR X8 ; +0x2c, 0x58dc4 CBZ W0, loc_58DD8 ; +0x30, 0x58dc8 LDP X29, X30, [SP,#0x20+var_s0] ; +0x34, 0x58dcc LDP X20, X19, [SP,#0x20+var_10] ; +0x38, 0x58dd0 B loc_59350 ; +0x3c, 0x58dd4 TST W20, #7 ; +0x40, 0x58dd8 B.EQ loc_58E10 ; +0x44, 0x58ddc LDR W8, [X19,#0x200] ; +0x48, 0x58de0 AND W8, W8, #0xFFFFFFF8 ; +0x4c, 0x58de4 STR W8, [X19,#0x200] ; +0x50, 0x58de8 TBNZ W20, #0, loc_58E00 ; +0x54, 0x58dec TBNZ W20, #1, loc_58E08 ; +0x58, 0x58df0 TBZ W20, #2, loc_58E10 ; +0x5c, 0x58df4 ORR W8, W8, #4 ; +0x60, 0x58df8 B loc_58E0C ; +0x64, 0x58dfc ORR W8, W8, #1 ; +0x68, 0x58e00 B loc_58E0C ; +0x6c, 0x58e04 ORR W8, W8, #2 ; +0x70, 0x58e08 STR W8, [X19,#0x200] ; +0x74, 0x58e0c TBNZ W20, #0x12, loc_58E20 ; +0x78, 0x58e10 TBZ W20, #0x13, loc_58E34 ; +0x7c, 0x58e14 MOV W8, #0x80000 ; +0x80, 0x58e18 B loc_58E24 ; +0x84, 0x58e1c MOV W8, #0x40000 ; +0x88, 0x58e20 LDR W9, [X19,#0x200] ; +0x8c, 0x58e24 AND W9, W9, #0xFFF3FFFF ; +0x90, 0x58e28 ORR W8, W9, W8 ; +0x94, 0x58e2c STR W8, [X19,#0x200] ; +0x98, 0x58e30 TBNZ W20, #0x14, loc_58E54 ; +0x9c, 0x58e34 TBNZ W20, #0x15, loc_58E5C ; +0xa0, 0x58e38 TBNZ W20, #0x16, loc_58E64 ; +0xa4, 0x58e3c TBNZ W20, #0x17, loc_58E6C ; +0xa8, 0x58e40 LDR W9, [X19,#0x200] ; +0xac, 0x58e44 TBZ W20, #0x1A, loc_58E84 ; +0xb0, 0x58e48 MOV W8, #0x4000000 ; +0xb4, 0x58e4c B loc_58E74 ; +0xb8, 0x58e50 MOV W8, #0x100000 ; +0xbc, 0x58e54 B loc_58E70 ; +0xc0, 0x58e58 MOV W8, #0x200000 ; +0xc4, 0x58e5c B loc_58E70 ; +0xc8, 0x58e60 MOV W8, #0x400000 ; +0xcc, 0x58e64 B loc_58E70 ; +0xd0, 0x58e68 MOV W8, #0x800000 ; +0xd4, 0x58e6c LDR W9, [X19,#0x200] ; +0xd8, 0x58e70 MOV W10, #0xFB0FFFFF ; +0xdc, 0x58e74 AND W9, W9, W10 ; +0xe0, 0x58e78 ORR W9, W9, W8 ; +0xe4, 0x58e7c STR W9, [X19,#0x200] ; +0xe8, 0x58e80 AND W8, W9, #0xBFFFFFFF ; +0xec, 0x58e84 ORR W9, W9, #0x40000000 ; +0xf0, 0x58e88 TST W20, #0x40000000 ; +0xf4, 0x58e8c CSEL W8, W8, W9, EQ ; +0xf8, 0x58e90 AND W9, W8, #0x7FFFFFFF ; +0xfc, 0x58e94 ORR W8, W8, #0x80000000 ; +0x100, 0x58e98 CMP W20, #0 ; +0x104, 0x58e9c CSEL W8, W8, W9, LT ; +0x108, 0x58ea0 STR W8, [X19,#0x200] ; +0x10c, 0x58ea4 TBNZ W20, #3, loc_58EC4 ; +0x110, 0x58ea8 TBNZ W20, #4, loc_58F20 ; +0x114, 0x58eac EOR W8, W21, W20 ; +0x118, 0x58eb0 MOV W9, #0x4F00000 ; +0x11c, 0x58eb4 TST W8, W9 ; +0x120, 0x58eb8 B.NE loc_58F50 ; +0x124, 0x58ebc B loc_58F5C ; +0x128, 0x58ec0 LDR X10, [X19] ; +0x12c, 0x58ec4 AND W8, W8, #0xFFFFFFE7 ; +0x130, 0x58ec8 MOV W9, #0x3F800000 ; +0x134, 0x58ecc FMOV V0.2S, #1.0 ; +0x138, 0x58ed0 ORR W8, W8, #8 ; +0x13c, 0x58ed4 STR WZR, [X19,#0xC0] ; +0x140, 0x58ed8 STR W9, [X19,#0xA4] ; +0x144, 0x58edc STR D0, [X19,#0x78] ; +0x148, 0x58ee0 STR W8, [X19,#0x200] ; +0x14c, 0x58ee4 LDR X1, [X19,#0x40] ; +0x150, 0x58ee8 LDRSH W2, [X19,#0x3A] ; +0x154, 0x58eec LDRSH W3, [X19,#0x38] ; +0x158, 0x58ef0 LDR X8, [X10,#0xC8] ; +0x15c, 0x58ef4 MOV X0, X19 ; +0x160, 0x58ef8 MOV W4, WZR ; +0x164, 0x58efc MOV W5, WZR ; +0x168, 0x58f00 BLR X8 ; +0x16c, 0x58f04 CBNZ W0, loc_58DCC ; +0x170, 0x58f08 LDR X0, [SP,#0x20+var_18] ; +0x174, 0x58f0c MOV W1, WZR ; +0x178, 0x58f10 MOV W2, WZR ; +0x17c, 0x58f14 MOV W3, WZR ; +0x180, 0x58f18 B loc_58F3C ; +0x184, 0x58f1c AND W8, W8, #0xFFFFFFE7 ; +0x188, 0x58f20 ORR W8, W8, #0x10 ; +0x18c, 0x58f24 STR W8, [X19,#0x200] ; +0x190, 0x58f28 LDR X0, [SP,#0x20+var_18] ; +0x194, 0x58f2c MOV W2, #1 ; +0x198, 0x58f30 MOV W3, #2 ; +0x19c, 0x58f34 MOV W1, WZR ; +0x1a0, 0x58f38 BL sub_C7E34 ; +0x1a4, 0x58f3c CBNZ W0, loc_58DCC ; +0x1a8, 0x58f40 AND W8, W20, #0x10 ; +0x1ac, 0x58f44 CBZ W8, loc_58EB0 ; +0x1b0, 0x58f48 TBNZ W21, #4, loc_58EB0 ; +0x1b4, 0x58f4c LDR W8, [X19,#0x48] ; +0x1b8, 0x58f50 ORR W8, W8, #4 ; +0x1bc, 0x58f54 STR W8, [X19,#0x48] ; +0x1c0, 0x58f58 LDR W8, [X19,#0x200] ; +0x1c4, 0x58f5c LDR X9, [X19] ; +0x1c8, 0x58f60 TST W20, #0x1000000 ; +0x1cc, 0x58f64 MOV X0, X19 ; +0x1d0, 0x58f68 AND W10, W8, #0xFEFFFFFF ; +0x1d4, 0x58f6c ORR W8, W8, #0x1000000 ; +0x1d8, 0x58f70 CSEL W8, W10, W8, EQ ; +0x1dc, 0x58f74 STR W8, [X19,#0x200] ; +0x1e0, 0x58f78 LDR X8, [X9,#0x208] ; +0x1e4, 0x58f7c BLR X8 ; +0x1e8, 0x58f80 B loc_58DCC ; +0x1ec, 0x58f84