; ; sub_5417C from 0x5417c to 0x544cc (848 bytes) ; ; 1 xrefs: ; > @ 0x10c348 ; ; 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, 0x5417c STP X24, X23, [SP,#0x50+var_30] ; +0x4, 0x54180 STP X22, X21, [SP,#0x50+var_20] ; +0x8, 0x54184 STP X20, X19, [SP,#0x50+var_10] ; +0xc, 0x54188 STP X29, X30, [SP,#0x50+var_s0] ; +0x10, 0x5418c LDR X8, [X0,#8] ; +0x14, 0x54190 MOV X19, X0 ; +0x18, 0x54194 MOV W9, #8 ; +0x1c, 0x54198 ADD X0, SP, #0x50+var_48 ; +0x20, 0x5419c ADD X29, SP, #0x50 ; +0x24, 0x541a0 STRB WZR, [SP,#0x50+var_3C] ; +0x28, 0x541a4 STR W9, [SP,#0x50+var_40] ; +0x2c, 0x541a8 STR X8, [SP,#0x50+var_48] ; +0x30, 0x541ac STR XZR, [SP,#0x50+var_38] ; +0x34, 0x541b0 BL sub_520A0 ; +0x38, 0x541b4 LDR X20, [X19,#0x28] ; +0x3c, 0x541b8 CBZ X20, loc_54260 ; +0x40, 0x541bc ADD X8, X20, #0x110 ; +0x44, 0x541c0 LDR X24, [X20,#0x180] ; +0x48, 0x541c4 LDAR W9, [X8] ; +0x4c, 0x541c8 CBZ W9, loc_541F8 ; +0x50, 0x541cc LDAR W8, [X8] ; +0x54, 0x541d0 CMP W8, #7 ; +0x58, 0x541d4 B.NE loc_541F0 ; +0x5c, 0x541d8 ADD X8, X20, #0x58 ; 'X' ; +0x60, 0x541dc LDAXR W9, [X8] ; +0x64, 0x541e0 ORR W9, W9, #0x400 ; +0x68, 0x541e4 STLXR W10, W9, [X8] ; +0x6c, 0x541e8 CBNZ W10, loc_541E0 ; +0x70, 0x541ec MOV W21, #0x2E ; '.' ; +0x74, 0x541f0 B loc_54264 ; +0x78, 0x541f4 ADD X23, X20, #0x58 ; 'X' ; +0x7c, 0x541f8 LDAXR W8, [X23] ; +0x80, 0x541fc AND W8, W8, #0xFFFFFBFF ; +0x84, 0x54200 STLXR W9, W8, [X23] ; +0x88, 0x54204 CBNZ W9, loc_541FC ; +0x8c, 0x54208 LDRB W8, [X19,#0x3C] ; +0x90, 0x5420c TBNZ W8, #7, loc_54260 ; +0x94, 0x54210 LDR X0, [X19,#0xC0] ; +0x98, 0x54214 CBZ X0, loc_54248 ; +0x9c, 0x54218 LDR X8, [X0] ; +0xa0, 0x5421c ADD X1, SP, #0x50+var_4C ; +0xa4, 0x54220 MOV W2, WZR ; +0xa8, 0x54224 LDR X8, [X8,#0xB8] ; +0xac, 0x54228 BLR X8 ; +0xb0, 0x5422c CBZ W0, loc_5423C ; +0xb4, 0x54230 MOV W21, W0 ; +0xb8, 0x54234 B loc_54264 ; +0xbc, 0x54238 LDRB W8, [SP,#0x50+var_4C] ; +0xc0, 0x5423c CBNZ W8, loc_54248 ; +0xc4, 0x54240 BL sub_54D20 ; +0xc8, 0x54244 LDRB W8, [X19,#0x88] ; +0xcc, 0x54248 CBZ W8, loc_54288 ; +0xd0, 0x5424c LDAXR W8, [X23] ; +0xd4, 0x54250 ORR W8, W8, #8 ; +0xd8, 0x54254 STLXR W9, W8, [X23] ; +0xdc, 0x54258 CBNZ W9, loc_54250 ; +0xe0, 0x5425c MOV W21, WZR ; +0xe4, 0x54260 ADD X0, SP, #0x50+var_48 ; +0xe8, 0x54264 BL sub_51F94 ; +0xec, 0x54268 MOV W0, W21 ; +0xf0, 0x5426c LDP X29, X30, [SP,#0x50+var_s0] ; +0xf4, 0x54270 LDP X20, X19, [SP,#0x50+var_10] ; +0xf8, 0x54274 LDP X22, X21, [SP,#0x50+var_20] ; +0xfc, 0x54278 LDP X24, X23, [SP,#0x50+var_30] ; +0x100, 0x5427c ADD SP, SP, #0x60 ; '`' ; +0x104, 0x54280 RET ; +0x108, 0x54284 LDR X0, [X19,#0xC0] ; +0x10c, 0x54288 CBZ X0, loc_54354 ; +0x110, 0x5428c LDR X8, [X0] ; +0x114, 0x54290 LDR X8, [X8,#0x48] ; +0x118, 0x54294 BLR X8 ; +0x11c, 0x54298 MOV W21, W0 ; +0x120, 0x5429c CBNZ W0, loc_54264 ; +0x124, 0x542a0 LDR X0, [X19,#0xC0] ; +0x128, 0x542a4 ADD X1, SP, #0x50+var_38 ; +0x12c, 0x542a8 LDR X8, [X0] ; +0x130, 0x542ac LDR X8, [X8,#0x88] ; +0x134, 0x542b0 BLR X8 ; +0x138, 0x542b4 MOV W21, W0 ; +0x13c, 0x542b8 CBNZ W0, loc_54264 ; +0x140, 0x542bc B loc_54354 ; +0x144, 0x542c0 LDAR W8, [X23] ; +0x148, 0x542c4 TBNZ W8, #7, loc_54398 ; +0x14c, 0x542c8 LDR W8, [X19,#0x98] ; +0x150, 0x542cc LDR W9, [X24,#0x44] ; +0x154, 0x542d0 SUBS W10, W9, W8 ; +0x158, 0x542d4 B.CS loc_542E4 ; +0x15c, 0x542d8 MOV W22, WZR ; +0x160, 0x542dc B loc_542F4 ; +0x164, 0x542e0 LDR W11, [X20,#0x18C] ; +0x168, 0x542e4 ADD W8, W8, W11 ; +0x16c, 0x542e8 CMP W8, W9 ; +0x170, 0x542ec CSEL W22, W10, W11, HI ; +0x174, 0x542f0 BL sub_54D10 ; +0x178, 0x542f4 LDR W1, [X19,#0x98] ; +0x17c, 0x542f8 MOV X0, X20 ; +0x180, 0x542fc MOV W2, W22 ; +0x184, 0x54300 MOV X3, XZR ; +0x188, 0x54304 BL sub_66A00 ; +0x18c, 0x54308 MOV W21, W0 ; +0x190, 0x5430c BL sub_54D18 ; +0x194, 0x54310 TST W21, #0xFFFFFFEF ; +0x198, 0x54314 B.NE loc_5446C ; +0x19c, 0x54318 LDAXR W8, [X23] ; +0x1a0, 0x5431c ORR W8, W8, #0x10 ; +0x1a4, 0x54320 STLXR W9, W8, [X23] ; +0x1a8, 0x54324 CBNZ W9, loc_5431C ; +0x1ac, 0x54328 LDR W8, [X19,#0x98] ; +0x1b0, 0x5432c ADD W8, W8, W22 ; +0x1b4, 0x54330 STR W8, [X19,#0x98] ; +0x1b8, 0x54334 LDR W9, [X24,#0x44] ; +0x1bc, 0x54338 SUBS W8, W8, W9 ; +0x1c0, 0x5433c B.CC loc_54348 ; +0x1c4, 0x54340 STR W8, [X19,#0x98] ; +0x1c8, 0x54344 LDR W8, [X19,#0xA0] ; +0x1cc, 0x54348 ADD W8, W8, W22 ; +0x1d0, 0x5434c STR W8, [X19,#0xA0] ; +0x1d4, 0x54350 BL sub_54D10 ; +0x1d8, 0x54354 LDP W8, W9, [X19,#0x9C] ; +0x1dc, 0x54358 SUBS W10, W8, W9 ; +0x1e0, 0x5435c B.LS loc_54374 ; +0x1e4, 0x54360 LDR W8, [X20,#0x18C] ; +0x1e8, 0x54364 CMP W10, W8 ; +0x1ec, 0x54368 B.CS loc_5438C ; +0x1f0, 0x5436c B loc_54398 ; +0x1f4, 0x54370 CBZ W8, loc_54398 ; +0x1f8, 0x54374 SUBS W8, W9, W8 ; +0x1fc, 0x54378 B.LS loc_54398 ; +0x200, 0x5437c LDR W9, [X20,#0x18C] ; +0x204, 0x54380 CMP W8, W9 ; +0x208, 0x54384 B.CC loc_54398 ; +0x20c, 0x54388 BL sub_54D18 ; +0x210, 0x5438c LDRB W8, [X19,#0x3C] ; +0x214, 0x54390 TBZ W8, #7, loc_542C4 ; +0x218, 0x54394 LDR W8, [SP,#0x50+var_38+4] ; +0x21c, 0x54398 LDR W9, [X19,#0x94] ; +0x220, 0x5439c SUBS W21, W8, W9 ; +0x224, 0x543a0 B.PL loc_543B0 ; +0x228, 0x543a4 LDR W8, [X24,#0x50] ; +0x22c, 0x543a8 ADD W21, W8, W21 ; +0x230, 0x543ac BL sub_54D18 ; +0x234, 0x543b0 LDP W9, W8, [X19,#0x58] ; +0x238, 0x543b4 LDR W10, [X20,#0x44] ; +0x23c, 0x543b8 ADD W11, W8, W9 ; +0x240, 0x543bc CMP W10, W11 ; +0x244, 0x543c0 B.CS loc_543D0 ; +0x248, 0x543c4 SUB W8, W10, W9 ; +0x24c, 0x543c8 STR W8, [X19,#0x5C] ; +0x250, 0x543cc LDR W11, [X19,#0x38] ; +0x254, 0x543d0 BIC W22, W21, W21,ASR#31 ; +0x258, 0x543d4 TBZ W11, #1, loc_543EC ; +0x25c, 0x543d8 LDR W12, [X19,#0x54] ; +0x260, 0x543dc ADD W13, W8, W9 ; +0x264, 0x543e0 CMP W12, #0 ; +0x268, 0x543e4 CSEL W10, W10, W13, EQ ; +0x26c, 0x543e8 LDR W12, [X19,#0x4C] ; +0x270, 0x543ec SUB W13, W10, #1 ; +0x274, 0x543f0 ADD W10, W12, W22 ; +0x278, 0x543f4 CMP W10, W13 ; +0x27c, 0x543f8 STR W10, [X19,#0x4C] ; +0x280, 0x543fc B.LS loc_544AC ; +0x284, 0x54400 TBZ W11, #1, loc_5443C ; +0x288, 0x54404 LDR W11, [X19,#0x54] ; +0x28c, 0x54408 CBZ W11, loc_5443C ; +0x290, 0x5440c SUB W9, W10, W9 ; +0x294, 0x54410 CMP W11, #1 ; +0x298, 0x54414 UDIV W9, W9, W8 ; +0x29c, 0x54418 B.LT loc_54430 ; +0x2a0, 0x5441c CMP W9, W11 ; +0x2a4, 0x54420 CSEL W9, W9, W11, CC ; +0x2a8, 0x54424 SUB W11, W11, W9 ; +0x2ac, 0x54428 STR W11, [X19,#0x54] ; +0x2b0, 0x5442c MSUB W8, W9, W8, W10 ; +0x2b4, 0x54430 STR W8, [X19,#0x4C] ; +0x2b8, 0x54434 B loc_544AC ; +0x2bc, 0x54438 LDR W8, [X20,#0x44] ; +0x2c0, 0x5443c CMN W8, #1 ; +0x2c4, 0x54440 B.EQ loc_544A8 ; +0x2c8, 0x54444 LDAR W8, [X23] ; +0x2cc, 0x54448 TBZ W8, #3, loc_544AC ; +0x2d0, 0x5444c LDR W8, [X20,#0x44] ; +0x2d4, 0x54450 LDR X0, [X19,#0xC0] ; +0x2d8, 0x54454 STP WZR, W8, [X19,#0x48] ; +0x2dc, 0x54458 CBZ X0, loc_54464 ; +0x2e0, 0x5445c BL sub_54CA8 ; +0x2e4, 0x54460 BL sub_54D20 ; +0x2e8, 0x54464 B loc_544AC ; +0x2ec, 0x54468 LDR X0, [X19,#0xC0] ; +0x2f0, 0x5446c CBZ X0, loc_54478 ; +0x2f4, 0x54470 BL sub_54CA8 ; +0x2f8, 0x54474 ADD X8, X20, #0x110 ; +0x2fc, 0x54478 MOV W9, #2 ; +0x300, 0x5447c STLR W9, [X8] ; +0x304, 0x54480 LDR X8, [X20,#0x108] ; +0x308, 0x54484 CBZ X8, loc_54490 ; +0x30c, 0x54488 STR W21, [X8,#0x124] ; +0x310, 0x5448c BL sub_54D20 ; +0x314, 0x54490 LDAXR W8, [X23] ; +0x318, 0x54494 ORR W8, W8, #8 ; +0x31c, 0x54498 STLXR W9, W8, [X23] ; +0x320, 0x5449c CBNZ W9, loc_54494 ; +0x324, 0x544a0 B loc_54264 ; +0x328, 0x544a4 STR XZR, [X19,#0x48] ; +0x32c, 0x544a8 BL sub_54D10 ; +0x330, 0x544ac LDR W8, [X19,#0x9C] ; +0x334, 0x544b0 MOV W21, WZR ; +0x338, 0x544b4 ADD W8, W8, W22 ; +0x33c, 0x544b8 STR W8, [X19,#0x9C] ; +0x340, 0x544bc LDR X8, [SP,#0x50+var_38] ; +0x344, 0x544c0 STR X8, [X19,#0x90] ; +0x348, 0x544c4 B loc_54264 ; +0x34c, 0x544c8