; ; sub_524B8 from 0x524b8 to 0x527dc (804 bytes) ; ; 4 xrefs: ; > sub_5215C @ 0x5216c ; > sub_52858 @ 0x5286c ; > @ 0x10c128 ; > @ 0x10c318 ; ; 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 ; MOVI D0, #0xFFFFFFFF00000000 ; +0x0, 0x524b8 STP X3, XZR, [X0,#0x20] ; +0x4, 0x524bc STR XZR, [X0,#0x38] ; +0x8, 0x524c0 STR XZR, [X0,#0x48] ; +0xc, 0x524c4 STR X2, [X0,#8] ; +0x10, 0x524c8 STR D0, [X0,#0x50] ; +0x14, 0x524cc STR W1, [X0,#0x40] ; +0x18, 0x524d0 B loc_527CC ; +0x1c, 0x524d4 LDR X8, [X0] ; +0x20, 0x524d8 LDR X1, [X8,#0x50] ; +0x24, 0x524dc BR X1 ; +0x28, 0x524e0 LDR X8, [X0,#0x10] ; +0x2c, 0x524e4 STR XZR, [X0,#0x48] ; +0x30, 0x524e8 CBZ X8, loc_524FC ; +0x34, 0x524ec LDR W9, [X8,#4] ; +0x38, 0x524f0 ADD W9, W9, #1 ; +0x3c, 0x524f4 STR W9, [X8,#4] ; +0x40, 0x524f8 B loc_527CC ; +0x44, 0x524fc LDR X8, [X0,#0x10] ; +0x48, 0x52500 CBZ X8, loc_52514 ; +0x4c, 0x52504 LDR W9, [X8,#4] ; +0x50, 0x52508 ADD W9, W9, #1 ; +0x54, 0x5250c STR W9, [X8,#4] ; +0x58, 0x52510 STR XZR, [X0,#0x48] ; +0x5c, 0x52514 B loc_527CC ; +0x60, 0x52518 B loc_527CC ; +0x64, 0x5251c B loc_527CC ; +0x68, 0x52520 LDR W8, [X0,#0x3C] ; +0x6c, 0x52524 MOV W9, #0xFFFFFF2F ; +0x70, 0x52528 AND W8, W8, W9 ; +0x74, 0x5252c ORR W8, W8, #0x40 ; '@' ; +0x78, 0x52530 STR W8, [X0,#0x3C] ; +0x7c, 0x52534 B loc_527CC ; +0x80, 0x52538 STP X29, X30, [SP,#var_10]! ; +0x84, 0x5253c LDR X8, [X0,#0x10] ; +0x88, 0x52540 MOV X29, SP ; +0x8c, 0x52544 CBZ X8, loc_52558 ; +0x90, 0x52548 LDR W9, [X8,#4] ; +0x94, 0x5254c SUB W9, W9, #1 ; +0x98, 0x52550 STR W9, [X8,#4] ; +0x9c, 0x52554 LDR W8, [X0,#0x3C] ; +0xa0, 0x52558 MOV W9, #0xFFFDFE0F ; +0xa4, 0x5255c LDR X10, [X0] ; +0xac, 0x52564 AND W8, W8, W9 ; +0xb0, 0x52568 ORR W8, W8, #0x80 ; +0xb4, 0x5256c STR W8, [X0,#0x3C] ; +0xb8, 0x52570 LDR X8, [X10,#0xD0] ; +0xbc, 0x52574 BLR X8 ; +0xc0, 0x52578 MOV W0, WZR ; +0xc4, 0x5257c LDP X29, X30, [SP+0x10+var_10],#0x10 ; +0xc8, 0x52580 RET ; +0xcc, 0x52584 LDR W8, [X0,#0x3C] ; +0xd0, 0x52588 TST W1, #1 ; +0xd4, 0x5258c AND W9, W8, #0xFFFFFFDF ; +0xd8, 0x52590 ORR W8, W8, #0x20 ; ' ' ; +0xdc, 0x52594 CSEL W8, W8, W9, NE ; +0xe0, 0x52598 STR W8, [X0,#0x3C] ; +0xe4, 0x5259c B loc_527CC ; +0xe8, 0x525a0 CBZ X1, loc_525C0 ; +0xec, 0x525a4 MOV X8, X0 ; +0xf0, 0x525a8 LDRB W8, [X8,#0x3C] ; +0xf4, 0x525ac MOV W0, WZR ; +0xf8, 0x525b0 UBFX W8, W8, #5, #1 ; +0xfc, 0x525b4 STRB W8, [X1] ; +0x100, 0x525b8 RET ; +0x104, 0x525bc B loc_527D4 ; +0x108, 0x525c0 B loc_527CC ; +0x10c, 0x525c4 B loc_527CC ; +0x110, 0x525c8 B loc_527CC ; +0x114, 0x525cc STR X1, [X0,#0x48] ; +0x118, 0x525d0 B loc_527CC ; +0x11c, 0x525d4 CBZ X1, loc_525F0 ; +0x120, 0x525d8 MOV X8, X0 ; +0x124, 0x525dc LDR X8, [X8,#0x48] ; +0x128, 0x525e0 MOV W0, WZR ; +0x12c, 0x525e4 STR X8, [X1] ; +0x130, 0x525e8 RET ; +0x134, 0x525ec B loc_527D4 ; +0x138, 0x525f0 LDR X9, [X0,#0x28] ; +0x13c, 0x525f4 CBZ X9, loc_52610 ; +0x140, 0x525f8 LDR W9, [X9,#0x44] ; +0x144, 0x525fc ADD W10, W2, W1 ; +0x148, 0x52600 CMP W9, W1 ; +0x14c, 0x52604 CCMP W10, W9, #2, HI ; +0x150, 0x52608 B.LS loc_52614 ; +0x154, 0x5260c B loc_527D4 ; +0x158, 0x52610 MOV X8, X0 ; +0x15c, 0x52614 MOV W0, WZR ; +0x160, 0x52618 STP W1, W2, [X8,#0x58] ; +0x164, 0x5261c RET ; +0x168, 0x52620 STR W1, [X0,#0x54] ; +0x16c, 0x52624 B loc_527CC ; +0x170, 0x52628 CBZ X1, loc_52644 ; +0x174, 0x5262c MOV X8, X0 ; +0x178, 0x52630 LDR W8, [X8,#0x54] ; +0x17c, 0x52634 MOV W0, WZR ; +0x180, 0x52638 STR W8, [X1] ; +0x184, 0x5263c RET ; +0x188, 0x52640 B loc_527D4 ; +0x18c, 0x52644 B loc_527CC ; +0x190, 0x52648 B loc_527CC ; +0x194, 0x5264c CBZ X1, loc_52674 ; +0x198, 0x52650 MOV X8, X0 ; +0x19c, 0x52654 LDR W8, [X8,#0x3C] ; +0x1a0, 0x52658 MOV W9, #0x50 ; 'P' ; +0x1a4, 0x5265c MOV W0, WZR ; +0x1a8, 0x52660 TST W8, W9 ; +0x1ac, 0x52664 CSET W8, NE ; +0x1b0, 0x52668 STRB W8, [X1] ; +0x1b4, 0x5266c RET ; +0x1b8, 0x52670 B loc_527D4 ; +0x1bc, 0x52674 CBZ X1, loc_52688 ; +0x1c0, 0x52678 MOV W0, WZR; void * ; +0x1c4, 0x5267c STRB WZR, [X1] ; +0x1c8, 0x52680 RET ; +0x1cc, 0x52684 B loc_527D4 ; +0x1d0, 0x52688 TST W1, #7 ; +0x1d4, 0x5268c B.EQ loc_526C4 ; +0x1d8, 0x52690 LDR W8, [X0,#0x38] ; +0x1dc, 0x52694 AND W8, W8, #0xFFFFFFF8 ; +0x1e0, 0x52698 STR W8, [X0,#0x38] ; +0x1e4, 0x5269c TBNZ W1, #0, loc_526B4 ; +0x1e8, 0x526a0 TBNZ W1, #1, loc_526BC ; +0x1ec, 0x526a4 TBZ W1, #2, loc_526C4 ; +0x1f0, 0x526a8 ORR W8, W8, #4 ; +0x1f4, 0x526ac B loc_526C0 ; +0x1f8, 0x526b0 ORR W8, W8, #1 ; +0x1fc, 0x526b4 B loc_526C0 ; +0x200, 0x526b8 ORR W8, W8, #2 ; +0x204, 0x526bc STR W8, [X0,#0x38] ; +0x208, 0x526c0 TBNZ W1, #0x12, loc_526D4 ; +0x20c, 0x526c4 TBZ W1, #0x13, loc_526E8 ; +0x210, 0x526c8 MOV W8, #0x80000 ; +0x214, 0x526cc B loc_526D8 ; +0x218, 0x526d0 MOV W8, #0x40000 ; +0x21c, 0x526d4 LDR W9, [X0,#0x38] ; +0x220, 0x526d8 AND W9, W9, #0xFFF3FFFF ; +0x224, 0x526dc ORR W8, W9, W8 ; +0x228, 0x526e0 STR W8, [X0,#0x38] ; +0x22c, 0x526e4 TBNZ W1, #0x14, loc_5270C ; +0x230, 0x526e8 TBNZ W1, #0x15, loc_52720 ; +0x234, 0x526ec TBNZ W1, #0x16, loc_52734 ; +0x238, 0x526f0 TBNZ W1, #0x17, loc_52748 ; +0x23c, 0x526f4 LDR W8, [X0,#0x38] ; +0x240, 0x526f8 TBZ W1, #0x1A, loc_5275C ; +0x244, 0x526fc AND W8, W8, #0xFF0FFFFF ; +0x248, 0x52700 ORR W8, W8, #0x4000000 ; +0x24c, 0x52704 B loc_52758 ; +0x250, 0x52708 LDR W8, [X0,#0x38] ; +0x254, 0x5270c MOV W9, #0xFB0FFFFF ; +0x258, 0x52710 AND W8, W8, W9 ; +0x25c, 0x52714 ORR W8, W8, #0x100000 ; +0x260, 0x52718 B loc_52758 ; +0x264, 0x5271c LDR W8, [X0,#0x38] ; +0x268, 0x52720 MOV W9, #0xFB0FFFFF ; +0x26c, 0x52724 AND W8, W8, W9 ; +0x270, 0x52728 ORR W8, W8, #0x200000 ; +0x274, 0x5272c B loc_52758 ; +0x278, 0x52730 LDR W8, [X0,#0x38] ; +0x27c, 0x52734 MOV W9, #0xFB0FFFFF ; +0x280, 0x52738 AND W8, W8, W9 ; +0x284, 0x5273c ORR W8, W8, #0x400000 ; +0x288, 0x52740 B loc_52758 ; +0x28c, 0x52744 LDR W8, [X0,#0x38] ; +0x290, 0x52748 MOV W9, #0xFB0FFFFF ; +0x294, 0x5274c AND W8, W8, W9 ; +0x298, 0x52750 ORR W8, W8, #0x800000 ; +0x29c, 0x52754 STR W8, [X0,#0x38] ; +0x2a0, 0x52758 AND W9, W8, #0xBFFFFFFF ; +0x2a4, 0x5275c ORR W8, W8, #0x40000000 ; +0x2a8, 0x52760 TST W1, #0x40000000 ; +0x2ac, 0x52764 CSEL W8, W9, W8, EQ ; +0x2b0, 0x52768 AND W9, W8, #0x7FFFFFFF ; +0x2b4, 0x5276c ORR W8, W8, #0x80000000 ; +0x2b8, 0x52770 CMP W1, #0 ; +0x2bc, 0x52774 CSEL W8, W8, W9, LT ; +0x2c0, 0x52778 STR W8, [X0,#0x38] ; +0x2c4, 0x5277c TBNZ W1, #3, loc_52798 ; +0x2c8, 0x52780 TBZ W1, #4, loc_527C0 ; +0x2cc, 0x52784 AND W8, W8, #0xFFFFFFE7 ; +0x2d0, 0x52788 ORR W8, W8, #0x10 ; +0x2d4, 0x5278c STR W8, [X0,#0x38] ; +0x2d8, 0x52790 B loc_527C0 ; +0x2dc, 0x52794 LDR X9, [X0,#0x18] ; +0x2e0, 0x52798 CBZ X9, loc_527C0 ; +0x2e4, 0x5279c AND W8, W8, #0xFFFFFFE7 ; +0x2e8, 0x527a0 MOV W10, #0x3F800000 ; +0x2ec, 0x527a4 FMOV V0.2S, #1.0 ; +0x2f0, 0x527a8 ORR W8, W8, #8 ; +0x2f4, 0x527ac STR W8, [X0,#0x38] ; +0x2f8, 0x527b0 STR WZR, [X9,#0xC0] ; +0x2fc, 0x527b4 STR W10, [X9,#0xA4] ; +0x300, 0x527b8 STR D0, [X9,#0x78] ; +0x304, 0x527bc B loc_527CC ; +0x308, 0x527c0 B loc_527CC ; +0x30c, 0x527c4 B ._ZdlPv; operator delete(void *) ; +0x310, 0x527c8 MOV W0, WZR ; +0x314, 0x527cc RET ; +0x318, 0x527d0 MOV W0, #0x1F ; +0x31c, 0x527d4 RET ; +0x320, 0x527d8