; ; sub_56824 from 0x56824 to 0x56b28 (772 bytes) ; ; 2 xrefs: ; > sub_59214 @ 0x59228 ; > @ 0x10c738 ; ; 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, #0x70 ; +0x0, 0x56824 STP X24, X23, [SP,#0x60+var_30] ; +0x4, 0x56828 STP X22, X21, [SP,#0x60+var_20] ; +0x8, 0x5682c STP X20, X19, [SP,#0x60+var_10] ; +0xc, 0x56830 STP X29, X30, [SP,#0x60+var_s0] ; +0x10, 0x56834 LDR X8, [X0,#0x60] ; +0x14, 0x56838 ADD X29, SP, #0x60 ; +0x18, 0x5683c CBZ X8, loc_56954 ; +0x1c, 0x56840 LDR X9, [X0,#0x68] ; +0x20, 0x56844 MOV X19, X0 ; +0x24, 0x56848 CMP X8, X9 ; +0x28, 0x5684c B.EQ loc_568B4 ; +0x2c, 0x56850 LDR X21, [X19,#0x70] ; +0x30, 0x56854 MOV X22, X1 ; +0x34, 0x56858 CBZ X1, loc_568BC ; +0x38, 0x5685c STP XZR, XZR, [SP,#0x60+var_48] ; +0x3c, 0x56860 ADD X24, X22, #0x64 ; 'd' ; +0x40, 0x56864 LDAR W8, [X24] ; +0x44, 0x56868 TBNZ W8, #5, loc_56914 ; +0x48, 0x5686c LDR X8, [X19] ; +0x4c, 0x56870 ADD X1, SP, #0x60+var_34 ; +0x50, 0x56874 BL sub_579A8 ; +0x54, 0x56878 MOV W23, W0 ; +0x58, 0x5687c CBNZ W0, loc_56B04 ; +0x5c, 0x56880 MOV X20, XZR ; +0x60, 0x56884 LDR W8, [SP,#0x60+var_34] ; +0x64, 0x56888 CMP W20, W8 ; +0x68, 0x5688c B.GE loc_56920 ; +0x6c, 0x56890 STR XZR, [SP,#0x60+var_58] ; +0x70, 0x56894 BL sub_57924 ; +0x74, 0x56898 CBNZ W0, loc_56B00 ; +0x78, 0x5689c LDR X8, [SP,#0x60+var_58] ; +0x7c, 0x568a0 CMP X8, X22 ; +0x80, 0x568a4 B.EQ loc_5691C ; +0x84, 0x568a8 ADD X20, X20, #1 ; +0x88, 0x568ac B loc_56888 ; +0x8c, 0x568b0 MOV W23, WZR ; +0x90, 0x568b4 B loc_56B04 ; +0x94, 0x568b8 LDR X8, [X19] ; +0x98, 0x568bc ADD X1, SP, #0x60+var_48+8 ; +0x9c, 0x568c0 BL sub_579A8 ; +0xa0, 0x568c4 CBNZ W0, loc_56B00 ; +0xa4, 0x568c8 MOV W20, WZR ; +0xa8, 0x568cc MOV W22, WZR ; +0xac, 0x568d0 LDR W8, [SP,#0x60+var_48+8] ; +0xb0, 0x568d4 CMP W22, W8 ; +0xb4, 0x568d8 B.GE loc_56AFC ; +0xb8, 0x568dc BL sub_57924 ; +0xbc, 0x568e0 CBNZ W0, loc_56B00 ; +0xc0, 0x568e4 LDR X1, [SP,#0x60+var_58] ; +0xc4, 0x568e8 CMP X1, X21 ; +0xc8, 0x568ec B.EQ loc_56908 ; +0xcc, 0x568f0 LDR X8, [X19] ; +0xd0, 0x568f4 MOV X0, X19 ; +0xd4, 0x568f8 LDR X8, [X8,#0x118] ; +0xd8, 0x568fc BLR X8 ; +0xdc, 0x56900 B loc_5690C ; +0xe0, 0x56904 ADD W20, W20, #1 ; +0xe4, 0x56908 ADD W22, W22, #1 ; +0xe8, 0x5690c B loc_568D4 ; +0xec, 0x56910 MOV W23, #0xA ; +0xf0, 0x56914 B loc_56B04 ; +0xf4, 0x56918 LDR W8, [SP,#0x60+var_34] ; +0xf8, 0x5691c CMP W20, W8 ; +0xfc, 0x56920 B.GE loc_56954 ; +0x100, 0x56924 CBZ W20, loc_5695C ; +0x104, 0x56928 SUB W9, W20, W8 ; +0x108, 0x5692c CMN W9, #1 ; +0x10c, 0x56930 B.NE loc_56970 ; +0x110, 0x56934 LDR X9, [X19] ; +0x114, 0x56938 SUB W1, W8, #2 ; +0x118, 0x5693c ADD X2, SP, #0x60+var_48 ; +0x11c, 0x56940 MOV X0, X19 ; +0x120, 0x56944 LDR X9, [X9,#0x120] ; +0x124, 0x56948 BLR X9 ; +0x128, 0x5694c B loc_56970 ; +0x12c, 0x56950 MOV W23, #9 ; +0x130, 0x56954 B loc_56B04 ; +0x134, 0x56958 LDR X8, [X19] ; +0x138, 0x5695c ADD X2, SP, #0x60+var_48+8 ; +0x13c, 0x56960 MOV W1, #1 ; +0x140, 0x56964 MOV X0, X19 ; +0x144, 0x56968 BL sub_5793C ; +0x148, 0x5696c LDR X8, [X19,#8] ; +0x14c, 0x56970 MOV W9, #1 ; +0x150, 0x56974 ADD X0, SP, #0x60+var_58 ; +0x154, 0x56978 STRB WZR, [SP,#0x60+var_4C] ; +0x158, 0x5697c STR X8, [SP,#0x60+var_58] ; +0x15c, 0x56980 STR W9, [SP,#0x60+var_50] ; +0x160, 0x56984 BL sub_520A0 ; +0x164, 0x56988 LDAXR W8, [X24] ; +0x168, 0x5698c AND W8, W8, #0xFFFFFFBF ; +0x16c, 0x56990 STLXR W9, W8, [X24] ; +0x170, 0x56994 CBNZ W9, loc_5698C ; +0x174, 0x56998 MOV X0, X22 ; +0x178, 0x5699c MOV W1, WZR ; +0x17c, 0x569a0 MOV W2, WZR ; +0x180, 0x569a4 STR XZR, [X22,#0x200] ; +0x184, 0x569a8 BL sub_C7D1C ; +0x188, 0x569ac MOV W23, W0 ; +0x18c, 0x569b0 CBNZ W0, loc_569D0 ; +0x190, 0x569b4 MOV X0, X22 ; +0x194, 0x569b8 MOV X1, X22 ; +0x198, 0x569bc MOV W2, WZR ; +0x19c, 0x569c0 BL sub_CBBD4 ; +0x1a0, 0x569c4 MOV W23, W0 ; +0x1a4, 0x569c8 CBZ W0, loc_569DC ; +0x1a8, 0x569cc ADD X0, SP, #0x60+var_58 ; +0x1ac, 0x569d0 BL sub_51F94 ; +0x1b0, 0x569d4 B loc_56B04 ; +0x1b4, 0x569d8 LDR X8, [SP,#0x60+var_48+8] ; +0x1b8, 0x569dc CBZ X8, loc_569F8 ; +0x1bc, 0x569e0 ADD X1, X8, #8 ; +0x1c0, 0x569e4 MOV X0, X21 ; +0x1c4, 0x569e8 BL sub_579A0 ; +0x1c8, 0x569ec MOV W23, W0 ; +0x1cc, 0x569f0 CBNZ W0, loc_569D0 ; +0x1d0, 0x569f4 ADD X0, SP, #0x60+var_58 ; +0x1d4, 0x569f8 BL sub_51F94 ; +0x1d8, 0x569fc LDR X8, [X22,#0x90]! ; +0x1dc, 0x56a00 LDR X9, [X22,#8] ; +0x1e0, 0x56a04 STR X8, [X9] ; +0x1e4, 0x56a08 LDR X10, [X22] ; +0x1e8, 0x56a0c ADD X8, X19, #0x110 ; +0x1ec, 0x56a10 STR X9, [X10,#8] ; +0x1f0, 0x56a14 MOV X9, X8 ; +0x1f4, 0x56a18 STP X22, X22, [X22] ; +0x1f8, 0x56a1c LDR X9, [X9] ; +0x1fc, 0x56a20 CMP X9, X8 ; +0x200, 0x56a24 B.EQ loc_56A4C ; +0x204, 0x56a28 LDR X10, [X9,#0x10] ; +0x208, 0x56a2c CMP W20, W10,ASR#16 ; +0x20c, 0x56a30 B.GE loc_56A20 ; +0x210, 0x56a34 SUB W11, W10, #0x10,LSL#12 ; +0x214, 0x56a38 LSR X11, X11, #0x10 ; +0x218, 0x56a3c BFI X10, X11, #0x10, #0x10 ; +0x21c, 0x56a40 STR X10, [X9,#0x10] ; +0x220, 0x56a44 B loc_56A20 ; +0x224, 0x56a48 LDR W8, [X19,#0x18] ; +0x228, 0x56a4c CMP W8, #3 ; +0x22c, 0x56a50 B.LT loc_56ABC ; +0x230, 0x56a54 LDR X9, [X19,#8] ; +0x234, 0x56a58 MOV W10, #0x10848 ; +0x238, 0x56a5c LSL W8, W8, #3 ; +0x240, 0x56a64 ADRP X2, #0x2D000 ; +0x244, 0x56a68 ADD X0, X9, X10 ; +0x248, 0x56a6c SUB W1, W8, #8 ; +0x24c, 0x56a70 BL loc_57858 ; +0x250, 0x56a74 CBZ X0, loc_56B20 ; +0x254, 0x56a78 LDRSW X9, [X19,#0x18] ; +0x258, 0x56a7c MOV X21, X0 ; +0x25c, 0x56a80 MOV X8, XZR ; +0x260, 0x56a84 MOV W10, WZR ; +0x264, 0x56a88 SUB X9, X9, #1 ; +0x268, 0x56a8c CMP X8, X9 ; +0x26c, 0x56a90 B.GE loc_56AC0 ; +0x270, 0x56a94 LDR X11, [X19,#0x10] ; +0x274, 0x56a98 CMP X20, #0 ; +0x278, 0x56a9c CINC W10, W10, EQ ; +0x27c, 0x56aa0 SUB X20, X20, #1 ; +0x280, 0x56aa4 LDR X11, [X11,W10,SXTW#3] ; +0x284, 0x56aa8 ADD W10, W10, #1 ; +0x288, 0x56aac STR X11, [X21,X8,LSL#3] ; +0x28c, 0x56ab0 ADD X8, X8, #1 ; +0x290, 0x56ab4 B loc_56A90 ; +0x294, 0x56ab8 MOV X21, XZR ; +0x298, 0x56abc LDR X1, [X19,#0x10] ; +0x29c, 0x56ac0 CBZ X1, loc_56AD4 ; +0x2a0, 0x56ac4 LDR X8, [X19,#8] ; +0x2a4, 0x56ac8 MOV W9, #0x848 ; +0x2a8, 0x56acc BL loc_577E4 ; +0x2ac, 0x56ad0 STR X21, [X19,#0x10] ; +0x2b0, 0x56ad4 LDP X2, X1, [SP,#0x60+var_48] ; +0x2b4, 0x56ad8 ORR X8, X1, X2 ; +0x2b8, 0x56adc CBZ X8, loc_56AF0 ; +0x2bc, 0x56ae0 BL sub_5794C ; +0x2c0, 0x56ae4 MOV W23, W0 ; +0x2c4, 0x56ae8 CBNZ W0, loc_56B04 ; +0x2c8, 0x56aec LDR W8, [X19,#0x18] ; +0x2cc, 0x56af0 SUB W8, W8, #1 ; +0x2d0, 0x56af4 STR W8, [X19,#0x18] ; +0x2d4, 0x56af8 BL loc_57870 ; +0x2d8, 0x56afc MOV W23, W0 ; +0x2dc, 0x56b00 MOV W0, W23 ; +0x2e0, 0x56b04 LDP X29, X30, [SP,#0x60+var_s0] ; +0x2e4, 0x56b08 LDP X20, X19, [SP,#0x60+var_10] ; +0x2e8, 0x56b0c LDP X22, X21, [SP,#0x60+var_20] ; +0x2ec, 0x56b10 LDP X24, X23, [SP,#0x60+var_30] ; +0x2f0, 0x56b14 ADD SP, SP, #0x70 ; 'p' ; +0x2f4, 0x56b18 RET ; +0x2f8, 0x56b1c MOV W23, #0x26 ; '&' ; +0x2fc, 0x56b20 B loc_56B04 ; +0x300, 0x56b24