; ; sub_56490 from 0x56490 to 0x56824 (916 bytes) ; ; 2 xrefs: ; > sub_591BC @ 0x591d8 ; > @ 0x10c730 ; ; 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, 0x56490 STP X24, X23, [SP,#0x50+var_30] ; +0x4, 0x56494 STP X22, X21, [SP,#0x50+var_20] ; +0x8, 0x56498 STP X20, X19, [SP,#0x50+var_10] ; +0xc, 0x5649c STP X29, X30, [SP,#0x50+var_s0] ; +0x10, 0x564a0 ADD X29, SP, #0x50 ; +0x14, 0x564a4 STR W1, [SP,#0x50+var_34] ; +0x18, 0x564a8 CBZ X2, loc_56548 ; +0x1c, 0x564ac LDR X8, [X0] ; +0x20, 0x564b0 MOV X19, X2 ; +0x24, 0x564b4 MOV W23, W1 ; +0x28, 0x564b8 MOV X1, X2 ; +0x2c, 0x564bc LDR X8, [X8,#0x138] ; +0x30, 0x564c0 MOV X2, XZR ; +0x34, 0x564c4 MOV X20, X0 ; +0x38, 0x564c8 BLR X8 ; +0x3c, 0x564cc CBZ W0, loc_56508 ; +0x40, 0x564d0 LDR X8, [X20,#0x60] ; +0x44, 0x564d4 STR X8, [SP,#0x50+var_40] ; +0x48, 0x564d8 CBZ X8, loc_56528 ; +0x4c, 0x564dc LDP X24, X21, [X20,#0x68] ; +0x50, 0x564e0 CMN W23, #3 ; +0x54, 0x564e4 B.EQ loc_56530 ; +0x58, 0x564e8 CMN W23, #2 ; +0x5c, 0x564ec B.EQ loc_565FC ; +0x60, 0x564f0 CMN W23, #1 ; +0x64, 0x564f4 B.NE loc_56538 ; +0x68, 0x564f8 MOV W23, WZR ; +0x6c, 0x564fc STR WZR, [SP,#0x50+var_34] ; +0x70, 0x56500 B loc_5653C ; +0x74, 0x56504 LDR X8, [X20] ; +0x78, 0x56508 MOV X0, X20 ; +0x7c, 0x5650c MOV X1, X19 ; +0x80, 0x56510 LDR X8, [X8,#0x118] ; +0x84, 0x56514 BLR X8 ; +0x88, 0x56518 MOV W22, W0 ; +0x8c, 0x5651c CBNZ W0, loc_5654C ; +0x90, 0x56520 B loc_564D4 ; +0x94, 0x56524 MOV W22, #9 ; +0x98, 0x56528 B loc_5654C ; +0x9c, 0x5652c LDR W23, [X20,#0x18] ; +0xa0, 0x56530 STR W23, [SP,#0x50+var_34] ; +0xa4, 0x56534 TBNZ W23, #0x1F, loc_56548 ; +0xa8, 0x56538 LDR W8, [X20,#0x18] ; +0xac, 0x5653c CMP W23, W8 ; +0xb0, 0x56540 B.LE loc_56568 ; +0xb4, 0x56544 MOV W22, #0x1F ; +0xb8, 0x56548 MOV W0, W22 ; +0xbc, 0x5654c LDP X29, X30, [SP,#0x50+var_s0] ; +0xc0, 0x56550 LDP X20, X19, [SP,#0x50+var_10] ; +0xc4, 0x56554 LDP X22, X21, [SP,#0x50+var_20] ; +0xc8, 0x56558 LDP X24, X23, [SP,#0x50+var_30] ; +0xcc, 0x5655c ADD SP, SP, #0x60 ; '`' ; +0xd0, 0x56560 RET ; +0xd4, 0x56564 MOV X0, X19 ; +0xd8, 0x56568 STR X20, [X19,#0x200] ; +0xdc, 0x5656c BL sub_CBC5C ; +0xe0, 0x56570 MOV W22, W0 ; +0xe4, 0x56574 CBNZ W0, loc_5654C ; +0xe8, 0x56578 LDUR Q0, [X24,#8] ; +0xec, 0x5657c MOV X23, X19 ; +0xf0, 0x56580 STR Q0, [X23,#8]! ; +0xf4, 0x56584 ADD X8, X23, #0x5C ; '\' ; +0xf8, 0x56588 LDAXR W9, [X8] ; +0xfc, 0x5658c ORR W9, W9, #0x40 ; '@' ; +0x100, 0x56590 STLXR W10, W9, [X8] ; +0x104, 0x56594 CBNZ W10, loc_5658C ; +0x108, 0x56598 MOV W1, #1 ; +0x10c, 0x5659c MOV W2, #1 ; +0x110, 0x565a0 MOV X0, X19 ; +0x114, 0x565a4 MOV W24, #1 ; +0x118, 0x565a8 BL sub_C7D1C ; +0x11c, 0x565ac MOV W22, W0 ; +0x120, 0x565b0 CBNZ W0, loc_5654C ; +0x124, 0x565b4 LDR X8, [X20,#8] ; +0x128, 0x565b8 MOV X0, SP ; +0x12c, 0x565bc STRB WZR, [SP,#0x50+var_44] ; +0x130, 0x565c0 STR W24, [SP,#0x50+var_48] ; +0x134, 0x565c4 STR X8, [SP,#0x50+var_50] ; +0x138, 0x565c8 BL sub_520A0 ; +0x13c, 0x565cc LDR X0, [SP,#0x50+var_40] ; +0x140, 0x565d0 LDR W3, [SP,#0x50+var_34] ; +0x144, 0x565d4 MOV W2, #0xFFFFFFFF ; +0x148, 0x565d8 MOV W4, #1 ; +0x14c, 0x565dc MOV X1, X19 ; +0x150, 0x565e0 MOV W5, WZR ; +0x154, 0x565e4 BL sub_CB2C0 ; +0x158, 0x565e8 MOV W22, W0 ; +0x15c, 0x565ec CBZ W0, loc_56624 ; +0x160, 0x565f0 BL sub_57964 ; +0x164, 0x565f4 B loc_5654C ; +0x168, 0x565f8 LDR X8, [X20] ; +0x16c, 0x565fc ADD X2, SP, #0x50+var_34 ; +0x170, 0x56600 MOV X0, X20 ; +0x174, 0x56604 MOV X1, X21 ; +0x178, 0x56608 BL sub_5796C ; +0x17c, 0x5660c MOV W22, W0 ; +0x180, 0x56610 CBNZ W0, loc_5654C ; +0x184, 0x56614 LDR W23, [SP,#0x50+var_34] ; +0x188, 0x56618 TBZ W23, #0x1F, loc_5653C ; +0x18c, 0x5661c B loc_56548 ; +0x190, 0x56620 LDR W8, [SP,#0x50+var_34] ; +0x194, 0x56624 CBZ W8, loc_56700 ; +0x198, 0x56628 BL sub_57964 ; +0x19c, 0x5662c LDR W8, [SP,#0x50+var_34] ; +0x1a0, 0x56630 ADD X21, X20, #0x110 ; +0x1a4, 0x56634 MOV X9, X21 ; +0x1a8, 0x56638 LDR X9, [X9] ; +0x1ac, 0x5663c CMP X9, X21 ; +0x1b0, 0x56640 B.EQ loc_56668 ; +0x1b4, 0x56644 LDR X10, [X9,#0x10] ; +0x1b8, 0x56648 CMP W8, W10,ASR#16 ; +0x1bc, 0x5664c B.GT loc_5663C ; +0x1c0, 0x56650 ADD W11, W10, #0x10,LSL#12 ; +0x1c4, 0x56654 LSR X11, X11, #0x10 ; +0x1c8, 0x56658 BFI X10, X11, #0x10, #0x10 ; +0x1cc, 0x5665c STR X10, [X9,#0x10] ; +0x1d0, 0x56660 B loc_5663C ; +0x1d4, 0x56664 MOV X2, SP ; +0x1d8, 0x56668 MOV W1, #0xFFFFFFFF ; +0x1dc, 0x5666c MOV X0, X19 ; +0x1e0, 0x56670 BL sub_C7AC4 ; +0x1e4, 0x56674 CBZ W0, loc_56778 ; +0x1e8, 0x56678 LDR X8, [X20,#8] ; +0x1ec, 0x5667c LDR W9, [X20,#0x18] ; +0x1f0, 0x56680 MOV W10, #0x10848 ; +0x1f4, 0x56684 ADD X0, X8, X10 ; +0x1fc, 0x5668c LSL W8, W9, #3 ; +0x200, 0x56690 ADRP X2, #0x2D000 ; +0x204, 0x56694 ADD W1, W8, #8 ; +0x208, 0x56698 BL loc_57858 ; +0x20c, 0x5669c CBZ X0, loc_567E8 ; +0x210, 0x566a0 LDRSW X11, [X20,#0x18] ; +0x214, 0x566a4 MOV X21, X0 ; +0x218, 0x566a8 MOV X9, XZR ; +0x21c, 0x566ac MOV W10, WZR ; +0x220, 0x566b0 ADD W8, W11, #1 ; +0x224, 0x566b4 STR W8, [X20,#0x18] ; +0x228, 0x566b8 LDR W8, [SP,#0x50+var_34] ; +0x22c, 0x566bc ADD X12, SP, #0x50+var_40 ; +0x230, 0x566c0 CMP X9, X11 ; +0x234, 0x566c4 B.GT loc_56718 ; +0x238, 0x566c8 CMP X8, X9 ; +0x23c, 0x566cc B.NE loc_566DC ; +0x240, 0x566d0 STR X19, [X21,X8,LSL#3] ; +0x244, 0x566d4 B loc_566F8 ; +0x248, 0x566d8 LDR X13, [X20,#0x10] ; +0x24c, 0x566dc ADD X14, X13, W10,SXTW#3 ; +0x250, 0x566e0 CMP X13, #0 ; +0x254, 0x566e4 CSEL X13, X12, X14, EQ ; +0x258, 0x566e8 LDR X13, [X13] ; +0x25c, 0x566ec ADD W10, W10, #1 ; +0x260, 0x566f0 STR X13, [X21,X9,LSL#3] ; +0x264, 0x566f4 ADD X9, X9, #1 ; +0x268, 0x566f8 B loc_566C4 ; +0x26c, 0x566fc MOV X0, X21 ; +0x270, 0x56700 MOV X1, X23 ; +0x274, 0x56704 BL sub_579A0 ; +0x278, 0x56708 MOV W22, W0 ; +0x27c, 0x5670c CBNZ W0, loc_565F4 ; +0x280, 0x56710 B loc_5662C ; +0x284, 0x56714 LDR X1, [X20,#0x10] ; +0x288, 0x56718 CBZ X1, loc_56730 ; +0x28c, 0x5671c LDR X8, [X20,#8] ; +0x290, 0x56720 MOV W9, #0x848 ; +0x294, 0x56724 BL loc_577E4 ; +0x298, 0x56728 LDR W8, [SP,#0x50+var_34] ; +0x29c, 0x5672c LDR W9, [X20,#0x18] ; +0x2a0, 0x56730 STR X21, [X20,#0x10] ; +0x2a4, 0x56734 SUB W9, W9, #1 ; +0x2a8, 0x56738 CBZ W8, loc_56748 ; +0x2ac, 0x5673c CMP W8, W9 ; +0x2b0, 0x56740 B.NE loc_56770 ; +0x2b4, 0x56744 LDR X10, [X20] ; +0x2b8, 0x56748 CMP W8, #0 ; +0x2bc, 0x5674c CSEL X1, X19, XZR, EQ ; +0x2c0, 0x56750 CMP W8, W9 ; +0x2c4, 0x56754 LDR X10, [X10,#0x1E8] ; +0x2c8, 0x56758 CSEL X2, X19, XZR, EQ ; +0x2cc, 0x5675c MOV X0, X20 ; +0x2d0, 0x56760 BLR X10 ; +0x2d4, 0x56764 MOV W22, W0 ; +0x2d8, 0x56768 CBNZ W0, loc_5654C ; +0x2dc, 0x5676c MOV W22, WZR ; +0x2e0, 0x56770 B loc_5654C ; +0x2e4, 0x56774 MOV X8, X19 ; +0x2e8, 0x56778 LDR X9, [X8,#0x90]! ; +0x2ec, 0x5677c CMP X9, X8 ; +0x2f0, 0x56780 B.NE loc_567E0 ; +0x2f4, 0x56784 LDR X9, [X19,#0x98] ; +0x2f8, 0x56788 CMP X9, X8 ; +0x2fc, 0x5678c B.NE loc_567E0 ; +0x300, 0x56790 LDR W10, [SP,#0x50+var_50] ; +0x304, 0x56794 MOV W11, #0x7FFE ; +0x308, 0x56798 CMP W10, W11 ; +0x30c, 0x5679c B.GT loc_567E0 ; +0x310, 0x567a0 LDR W9, [SP,#0x50+var_34] ; +0x314, 0x567a4 CMP W9, W11 ; +0x318, 0x567a8 B.GT loc_567E0 ; +0x31c, 0x567ac LSL W11, W9, #0x10 ; +0x320, 0x567b0 BFXIL X11, X10, #0, #0x10 ; +0x324, 0x567b4 MOV X10, X21 ; +0x328, 0x567b8 STR X11, [X19,#0xA0] ; +0x32c, 0x567bc LDR X10, [X10] ; +0x330, 0x567c0 CMP X10, X21 ; +0x334, 0x567c4 B.EQ loc_567F0 ; +0x338, 0x567c8 LDR W11, [X10,#0x10] ; +0x33c, 0x567cc ASR W11, W11, #0x10 ; +0x340, 0x567d0 CMP W11, W9 ; +0x344, 0x567d4 B.LT loc_567C0 ; +0x348, 0x567d8 B.NE loc_567F4 ; +0x34c, 0x567dc MOV W22, #0x1C ; +0x350, 0x567e0 B loc_5654C ; +0x354, 0x567e4 MOV W22, #0x26 ; '&' ; +0x358, 0x567e8 B loc_5654C ; +0x35c, 0x567ec MOV X10, X21 ; +0x360, 0x567f0 LDR X9, [X10,#8] ; +0x364, 0x567f4 MOV X0, X20 ; +0x368, 0x567f8 STP X10, X9, [X19,#0x90] ; +0x36c, 0x567fc STR X8, [X10,#8] ; +0x370, 0x56800 LDR X9, [X19,#0x98] ; +0x374, 0x56804 STR X8, [X9] ; +0x378, 0x56808 LDR X8, [X20] ; +0x37c, 0x5680c LDR X8, [X8,#0x208] ; +0x380, 0x56810 BLR X8 ; +0x384, 0x56814 MOV W22, W0 ; +0x388, 0x56818 CBNZ W0, loc_5654C ; +0x38c, 0x5681c B loc_5667C ; +0x390, 0x56820