; ; sub_56C18 from 0x56c18 to 0x56e64 (588 bytes) ; ; 2 xrefs: ; > @ 0x10c528 ; > @ 0x10c750 ; ; 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, 0x56c18 STP X29, X30, [SP,#0x50+var_s0] ; +0x4, 0x56c1c ADD X29, SP, #0x50 ; +0x8, 0x56c20 STP XZR, X23, [SP,#0x50+var_40+8] ; +0xc, 0x56c24 STP X22, X21, [SP,#0x50+var_20] ; +0x10, 0x56c28 STP X20, X19, [SP,#0x50+var_10] ; +0x14, 0x56c2c STUR W2, [X29,#var_24] ; +0x18, 0x56c30 STR XZR, [SP,#0x50+var_40] ; +0x1c, 0x56c34 LDR X21, [X0,#0x60] ; +0x20, 0x56c38 CBZ X21, loc_56C70 ; +0x24, 0x56c3c LDR X20, [X0,#0x70] ; +0x28, 0x56c40 MOV X19, X0 ; +0x2c, 0x56c44 MOV X22, X1 ; +0x30, 0x56c48 CMN W2, #3 ; +0x34, 0x56c4c B.EQ loc_56C78 ; +0x38, 0x56c50 CMN W2, #2 ; +0x3c, 0x56c54 B.EQ loc_56CC8 ; +0x40, 0x56c58 CMN W2, #1 ; +0x44, 0x56c5c B.NE loc_56C84 ; +0x48, 0x56c60 MOV W2, WZR ; +0x4c, 0x56c64 STUR WZR, [X29,#var_24] ; +0x50, 0x56c68 B loc_56C88 ; +0x54, 0x56c6c MOV W23, #9 ; +0x58, 0x56c70 B loc_56CF0 ; +0x5c, 0x56c74 LDR W8, [X19,#0x18] ; +0x60, 0x56c78 SUB W2, W8, #1 ; +0x64, 0x56c7c STUR W2, [X29,#var_24] ; +0x68, 0x56c80 TBNZ W2, #0x1F, loc_56CEC ; +0x6c, 0x56c84 LDR W8, [X19,#0x18] ; +0x70, 0x56c88 CMP W2, W8 ; +0x74, 0x56c8c B.GE loc_56CEC ; +0x78, 0x56c90 LDR X8, [X19] ; +0x7c, 0x56c94 ADD X2, SP, #0x50+var_28 ; +0x80, 0x56c98 MOV X0, X19 ; +0x84, 0x56c9c MOV X1, X22 ; +0x88, 0x56ca0 BL sub_5796C ; +0x8c, 0x56ca4 MOV W23, W0 ; +0x90, 0x56ca8 CBNZ W0, loc_56CF0 ; +0x94, 0x56cac LDUR W9, [X29,#var_24] ; +0x98, 0x56cb0 LDR W8, [SP,#0x50+var_28] ; +0x9c, 0x56cb4 CMP W9, W8 ; +0xa0, 0x56cb8 B.NE loc_56D0C ; +0xa4, 0x56cbc MOV W23, WZR ; +0xa8, 0x56cc0 B loc_56CF0 ; +0xac, 0x56cc4 LDR X8, [X19] ; +0xb0, 0x56cc8 SUB X2, X29, #-var_24 ; +0xb4, 0x56ccc MOV X0, X19 ; +0xb8, 0x56cd0 MOV X1, X20 ; +0xbc, 0x56cd4 BL sub_5796C ; +0xc0, 0x56cd8 MOV W23, W0 ; +0xc4, 0x56cdc CBNZ W0, loc_56CF0 ; +0xc8, 0x56ce0 LDUR W2, [X29,#var_24] ; +0xcc, 0x56ce4 TBZ W2, #0x1F, loc_56C88 ; +0xd0, 0x56ce8 MOV W23, #0x1F ; +0xd4, 0x56cec MOV W0, W23 ; +0xd8, 0x56cf0 LDP X29, X30, [SP,#0x50+var_s0] ; +0xdc, 0x56cf4 LDP X20, X19, [SP,#0x50+var_10] ; +0xe0, 0x56cf8 LDP X22, X21, [SP,#0x50+var_20] ; +0xe4, 0x56cfc LDR X23, [SP,#0x50+var_30] ; +0xe8, 0x56d00 ADD SP, SP, #0x60 ; '`' ; +0xec, 0x56d04 RET ; +0xf0, 0x56d08 CBZ W8, loc_56D1C ; +0xf4, 0x56d0c CBNZ W9, loc_56D3C ; +0xf8, 0x56d10 STR X22, [SP,#0x50+var_40+8] ; +0xfc, 0x56d14 B loc_56D3C ; +0x100, 0x56d18 LDR X8, [X19] ; +0x104, 0x56d1c ADD X2, SP, #0x50+var_40+8 ; +0x108, 0x56d20 MOV W1, #1 ; +0x10c, 0x56d24 MOV X0, X19 ; +0x110, 0x56d28 BL sub_5793C ; +0x114, 0x56d2c MOV W23, W0 ; +0x118, 0x56d30 CBNZ W0, loc_56CF0 ; +0x11c, 0x56d34 LDR W8, [SP,#0x50+var_28] ; +0x120, 0x56d38 LDR W10, [X19,#0x18] ; +0x124, 0x56d3c SUB W9, W10, #1 ; +0x128, 0x56d40 CMP W8, W9 ; +0x12c, 0x56d44 B.NE loc_56D74 ; +0x130, 0x56d48 LDR X8, [X19] ; +0x134, 0x56d4c SUB W1, W10, #2 ; +0x138, 0x56d50 ADD X2, SP, #0x50+var_40 ; +0x13c, 0x56d54 MOV X0, X19 ; +0x140, 0x56d58 BL sub_5793C ; +0x144, 0x56d5c MOV W23, W0 ; +0x148, 0x56d60 CBNZ W0, loc_56CF0 ; +0x14c, 0x56d64 LDUR W10, [X29,#var_24] ; +0x150, 0x56d68 LDR W8, [SP,#0x50+var_28] ; +0x154, 0x56d6c B loc_56D88 ; +0x158, 0x56d70 LDUR W10, [X29,#var_24] ; +0x15c, 0x56d74 CMP W10, W9 ; +0x160, 0x56d78 B.NE loc_56D88 ; +0x164, 0x56d7c MOV W10, W9 ; +0x168, 0x56d80 STR X22, [SP,#0x50+var_40] ; +0x16c, 0x56d84 SXTW X9, W8 ; +0x170, 0x56d88 CMP W10, W8 ; +0x174, 0x56d8c SXTW X8, W10 ; +0x178, 0x56d90 B.LE loc_56DB8 ; +0x17c, 0x56d94 CMP X9, X8 ; +0x180, 0x56d98 B.GE loc_56DD8 ; +0x184, 0x56d9c LDR X10, [X19,#0x10] ; +0x188, 0x56da0 ADD X10, X10, X9,LSL#3 ; +0x18c, 0x56da4 LDR X11, [X10,#8] ; +0x190, 0x56da8 ADD X9, X9, #1 ; +0x194, 0x56dac STR X11, [X10] ; +0x198, 0x56db0 B loc_56D98 ; +0x19c, 0x56db4 CMP X9, X8 ; +0x1a0, 0x56db8 B.LE loc_56DD8 ; +0x1a4, 0x56dbc LDR X10, [X19,#0x10] ; +0x1a8, 0x56dc0 ADD X10, X10, X9,LSL#3 ; +0x1ac, 0x56dc4 LDUR X11, [X10,#-8] ; +0x1b0, 0x56dc8 SUB X9, X9, #1 ; +0x1b4, 0x56dcc STR X11, [X10] ; +0x1b8, 0x56dd0 B loc_56DB8 ; +0x1bc, 0x56dd4 LDR X9, [X19,#0x10] ; +0x1c0, 0x56dd8 MOV X0, SP ; +0x1c4, 0x56ddc STR X22, [X9,X8,LSL#3] ; +0x1c8, 0x56de0 LDR X8, [X19,#8] ; +0x1cc, 0x56de4 MOV W9, #1 ; +0x1d0, 0x56de8 STRB WZR, [SP,#0x50+var_44] ; +0x1d4, 0x56dec STR W9, [SP,#0x50+var_48] ; +0x1d8, 0x56df0 STR X8, [SP,#0x50+var_50] ; +0x1dc, 0x56df4 BL sub_520A0 ; +0x1e0, 0x56df8 LDR W2, [SP,#0x50+var_28] ; +0x1e4, 0x56dfc LDUR W3, [X29,#var_24] ; +0x1e8, 0x56e00 MOV W4, #1 ; +0x1ec, 0x56e04 MOV X0, X21 ; +0x1f0, 0x56e08 MOV X1, X22 ; +0x1f4, 0x56e0c MOV W5, WZR ; +0x1f8, 0x56e10 BL sub_CB2C0 ; +0x1fc, 0x56e14 MOV W23, W0 ; +0x200, 0x56e18 CBZ W0, loc_56E28 ; +0x204, 0x56e1c BL sub_57964 ; +0x208, 0x56e20 B loc_56CF0 ; +0x20c, 0x56e24 LDR X8, [SP,#0x50+var_40+8] ; +0x210, 0x56e28 CBZ X8, loc_56E44 ; +0x214, 0x56e2c ADD X1, X8, #8 ; +0x218, 0x56e30 MOV X0, X20 ; +0x21c, 0x56e34 BL sub_579A0 ; +0x220, 0x56e38 MOV W23, W0 ; +0x224, 0x56e3c CBNZ W0, loc_56E20 ; +0x228, 0x56e40 BL sub_57964 ; +0x22c, 0x56e44 LDP X2, X1, [SP,#0x50+var_40] ; +0x230, 0x56e48 ORR X8, X1, X2 ; +0x234, 0x56e4c CBZ X8, loc_56CC0 ; +0x238, 0x56e50 BL sub_5794C ; +0x23c, 0x56e54 MOV W23, W0 ; +0x240, 0x56e58 CBNZ W0, loc_56CF0 ; +0x244, 0x56e5c B loc_56CC0 ; +0x248, 0x56e60