; ; sub_100AA8 from 0x100aa8 to 0x100dec (836 bytes) ; ; 1 xrefs: ; > @ 0x118b10 ; ; 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, 0x100aa8 ADRP X8, #dword_2EFF4@PAGE ; +0x4, 0x100aac LDR S6, [X3,#0x284] ; +0x8, 0x100ab0 LDR S18, [X8,#dword_2EFF4@PAGEOFF] ; +0xc, 0x100ab4 LDR S0, [X3,#0x100] ; +0x10, 0x100ab8 LDR S7, [X3,#0x180] ; +0x14, 0x100abc LDR S1, [X3,#0x200] ; +0x18, 0x100ac0 LDR S5, [X3,#0x280] ; +0x1c, 0x100ac4 LDP S30, S2, [X3] ; +0x20, 0x100ac8 LDP S17, S31, [X3,#0x80] ; +0x24, 0x100acc LDR S3, [X3,#0x104] ; +0x28, 0x100ad0 LDR S16, [X3,#0x184] ; +0x2c, 0x100ad4 LDR S4, [X3,#0x204] ; +0x30, 0x100ad8 FABS S19, S6 ; +0x34, 0x100adc STR X21, [SP,#0x50+var_18] ; +0x38, 0x100ae0 STP X20, X19, [SP,#0x50+var_10] ; +0x3c, 0x100ae4 MOV W21, W2 ; +0x40, 0x100ae8 MOV X19, X1 ; +0x44, 0x100aec FCMP S19, S18 ; +0x48, 0x100af0 MOV X20, X0 ; +0x4c, 0x100af4 STR D8, [SP,#0x50+var_20] ; +0x50, 0x100af8 STP X29, X30, [SP,#0x50+var_s0] ; +0x54, 0x100afc ADD X29, SP, #0x50 ; +0x58, 0x100b00 B.GE loc_100C28 ; +0x5c, 0x100b04 FABS S19, S5 ; +0x60, 0x100b08 FCMP S19, S18 ; +0x64, 0x100b0c B.GE loc_100C28 ; +0x68, 0x100b10 FABS S19, S4 ; +0x6c, 0x100b14 FCMP S19, S18 ; +0x70, 0x100b18 B.GE loc_100C28 ; +0x74, 0x100b1c FABS S19, S1 ; +0x78, 0x100b20 FCMP S19, S18 ; +0x7c, 0x100b24 B.GE loc_100C28 ; +0x80, 0x100b28 FABS S19, S16 ; +0x84, 0x100b2c FCMP S19, S18 ; +0x88, 0x100b30 B.GE loc_100C28 ; +0x8c, 0x100b34 FABS S19, S7 ; +0x90, 0x100b38 FCMP S19, S18 ; +0x94, 0x100b3c B.GE loc_100C28 ; +0x98, 0x100b40 FABS S19, S0 ; +0x9c, 0x100b44 FCMP S19, S18 ; +0xa0, 0x100b48 B.GE loc_100C28 ; +0xa4, 0x100b4c FABS S19, S17 ; +0xa8, 0x100b50 FCMP S19, S18 ; +0xac, 0x100b54 B.GE loc_100C28 ; +0xb0, 0x100b58 FABS S19, S2 ; +0xb4, 0x100b5c FCMP S19, S18 ; +0xb8, 0x100b60 B.GE loc_100C28 ; +0xbc, 0x100b64 FABS S19, S3 ; +0xc0, 0x100b68 FCMP S19, S18 ; +0xc4, 0x100b6c B.GE loc_100C28 ; +0xc8, 0x100b70 STP S30, S31, [SP,#0x50+var_30] ; +0xcc, 0x100b74 LDR D8, [SP,#0x50+var_30] ; +0xd0, 0x100b78 STR XZR, [SP,#0x50+var_28] ; +0xd4, 0x100b7c CBZ W6, loc_100BA4 ; +0xd8, 0x100b80 ADD W8, W21, W21,LSL#1 ; +0xdc, 0x100b84 LSL W8, W8, #1 ; +0xe0, 0x100b88 LSL X2, X8, #2; n ; +0xe4, 0x100b8c MOV X0, X19; s ; +0xe8, 0x100b90 MOV W1, WZR; c ; +0xec, 0x100b94 STP Q31, Q30, [SP,#0x50+var_50] ; +0xf0, 0x100b98 BL .memset ; +0xf4, 0x100b9c LDP Q31, Q30, [SP,#0x50+var_50] ; +0xf8, 0x100ba0 LSR W8, W21, #2 ; +0xfc, 0x100ba4 CBZ W8, loc_100BF4 ; +0x100, 0x100ba8 LDP D0, D1, [X20] ; +0x104, 0x100bac LDP D2, D3, [X20,#0x10] ; +0x108, 0x100bb0 LDR D4, [X19] ; +0x10c, 0x100bb4 LDR D5, [X19,#0x18] ; +0x110, 0x100bb8 LDR D6, [X19,#0x30] ; +0x114, 0x100bbc LDR D7, [X19,#0x48] ; +0x118, 0x100bc0 FMLA V4.2S, V8.2S, V0.2S ; +0x11c, 0x100bc4 FMLA V5.2S, V8.2S, V1.2S ; +0x120, 0x100bc8 FMLA V6.2S, V8.2S, V2.2S ; +0x124, 0x100bcc FMLA V7.2S, V8.2S, V3.2S ; +0x128, 0x100bd0 ADD X20, X20, #0x20 ; ' ' ; +0x12c, 0x100bd4 STR D4, [X19] ; +0x130, 0x100bd8 STR D5, [X19,#0x18] ; +0x134, 0x100bdc STR D6, [X19,#0x30] ; +0x138, 0x100be0 STR D7, [X19,#0x48] ; +0x13c, 0x100be4 ADD X19, X19, #0x60 ; '`' ; +0x140, 0x100be8 SUB W8, W8, #1 ; +0x144, 0x100bec CBNZ W8, loc_100BAC ; +0x148, 0x100bf0 MOV X8, XZR ; +0x14c, 0x100bf4 INS V30.S[1], V31.S[0] ; +0x150, 0x100bf8 AND X9, X21, #3 ; +0x154, 0x100bfc CMP W9, W8 ; +0x158, 0x100c00 B.EQ loc_100DD4 ; +0x15c, 0x100c04 MOV X10, X19 ; +0x160, 0x100c08 LDR D0, [X20,X8,LSL#3] ; +0x164, 0x100c0c LDR D1, [X10],#0x18 ; +0x168, 0x100c10 ADD X8, X8, #1 ; +0x16c, 0x100c14 FMLA V1.2S, V30.2S, V0.2S ; +0x170, 0x100c18 STR D1, [X19] ; +0x174, 0x100c1c MOV X19, X10 ; +0x178, 0x100c20 B loc_100C00 ; +0x17c, 0x100c24 MOV V18.16B, V30.16B ; +0x180, 0x100c28 MOV V19.16B, V1.16B ; +0x184, 0x100c2c MOV V20.16B, V0.16B ; +0x188, 0x100c30 MOV V21.16B, V2.16B ; +0x18c, 0x100c34 MOV V22.16B, V4.16B ; +0x190, 0x100c38 MOV V23.16B, V3.16B ; +0x194, 0x100c3c INS V18.S[1], V17.S[0] ; +0x198, 0x100c40 INS V19.S[1], V5.S[0] ; +0x19c, 0x100c44 INS V20.S[1], V7.S[0] ; +0x1a0, 0x100c48 INS V21.S[1], V31.S[0] ; +0x1a4, 0x100c4c INS V22.S[1], V6.S[0] ; +0x1a8, 0x100c50 INS V23.S[1], V16.S[0] ; +0x1ac, 0x100c54 INS V18.S[2], V0.S[0] ; +0x1b0, 0x100c58 INS V19.S[2], V30.S[0] ; +0x1b4, 0x100c5c INS V20.S[2], V1.S[0] ; +0x1b8, 0x100c60 INS V21.S[2], V3.S[0] ; +0x1bc, 0x100c64 INS V22.S[2], V2.S[0] ; +0x1c0, 0x100c68 INS V23.S[2], V4.S[0] ; +0x1c4, 0x100c6c INS V18.S[3], V7.S[0] ; +0x1c8, 0x100c70 INS V19.S[3], V17.S[0] ; +0x1cc, 0x100c74 INS V20.S[3], V5.S[0] ; +0x1d0, 0x100c78 INS V21.S[3], V16.S[0] ; +0x1d4, 0x100c7c INS V22.S[3], V31.S[0] ; +0x1d8, 0x100c80 INS V23.S[3], V6.S[0] ; +0x1dc, 0x100c84 LSR W8, W21, #1 ; +0x1e0, 0x100c88 CBZ W6, loc_100D60 ; +0x1e4, 0x100c8c CBZ W8, loc_100CC8 ; +0x1e8, 0x100c90 LDR Q24, [X20],#0x10 ; +0x1ec, 0x100c94 SUB W8, W8, #1 ; +0x1f0, 0x100c98 TRN1 V25.4S, V24.4S, V24.4S ; +0x1f4, 0x100c9c TRN2 V26.4S, V24.4S, V24.4S ; +0x1f8, 0x100ca0 FMUL V27.4S, V18.4S, V24.S[0] ; +0x1fc, 0x100ca4 FMUL V28.4S, V20.4S, V24.S[2] ; +0x200, 0x100ca8 FMUL V25.4S, V25.4S, V19.4S ; +0x204, 0x100cac FMLA V27.4S, V21.4S, V24.S[1] ; +0x208, 0x100cb0 FMLA V28.4S, V23.4S, V24.S[3] ; +0x20c, 0x100cb4 FMLA V25.4S, V22.4S, V26.4S ; +0x210, 0x100cb8 STP Q25, Q28, [X19,#0x10] ; +0x214, 0x100cbc STR Q27, [X19],#0x30 ; +0x218, 0x100cc0 CBNZ W8, loc_100C94 ; +0x21c, 0x100cc4 AND W8, W21, #1 ; +0x220, 0x100cc8 CBZ W8, loc_100DD4 ; +0x224, 0x100ccc LDP S18, S19, [X20],#8 ; +0x228, 0x100cd0 SUB W8, W8, #1 ; +0x22c, 0x100cd4 FMUL S20, S18, S30 ; +0x230, 0x100cd8 FMUL S21, S18, S17 ; +0x234, 0x100cdc FMUL S22, S18, S0 ; +0x238, 0x100ce0 FMUL S23, S18, S7 ; +0x23c, 0x100ce4 FMUL S24, S18, S1 ; +0x240, 0x100ce8 FMUL S18, S18, S5 ; +0x244, 0x100cec FMADD S20, S19, S2, S20 ; +0x248, 0x100cf0 FMADD S21, S19, S31, S21 ; +0x24c, 0x100cf4 FMADD S22, S19, S3, S22 ; +0x250, 0x100cf8 FMADD S23, S19, S16, S23 ; +0x254, 0x100cfc FMADD S24, S19, S4, S24 ; +0x258, 0x100d00 FMADD S18, S19, S6, S18 ; +0x25c, 0x100d04 STP S20, S21, [X19] ; +0x260, 0x100d08 STP S22, S23, [X19,#8] ; +0x264, 0x100d0c STP S24, S18, [X19,#0x10] ; +0x268, 0x100d10 ADD X19, X19, #0x18 ; +0x26c, 0x100d14 CBNZ W8, loc_100CD0 ; +0x270, 0x100d18 B loc_100DD4 ; +0x274, 0x100d1c LDR Q24, [X20],#0x10 ; +0x278, 0x100d20 LDP Q25, Q26, [X19] ; +0x27c, 0x100d24 LDR Q27, [X19,#0x20] ; +0x280, 0x100d28 SUB W8, W8, #1 ; +0x284, 0x100d2c TRN1 V28.4S, V24.4S, V24.4S ; +0x288, 0x100d30 FMLA V26.4S, V19.4S, V28.4S ; +0x28c, 0x100d34 FMUL V28.4S, V20.4S, V24.S[2] ; +0x290, 0x100d38 TRN2 V29.4S, V24.4S, V24.4S ; +0x294, 0x100d3c FMLA V25.4S, V18.4S, V24.S[0] ; +0x298, 0x100d40 FMLA V28.4S, V23.4S, V24.S[3] ; +0x29c, 0x100d44 FMLA V25.4S, V21.4S, V24.S[1] ; +0x2a0, 0x100d48 FMLA V26.4S, V22.4S, V29.4S ; +0x2a4, 0x100d4c FADD V24.4S, V28.4S, V27.4S ; +0x2a8, 0x100d50 STP Q25, Q26, [X19] ; +0x2ac, 0x100d54 STR Q24, [X19,#0x20] ; +0x2b0, 0x100d58 ADD X19, X19, #0x30 ; '0' ; +0x2b4, 0x100d5c CBNZ W8, loc_100D20 ; +0x2b8, 0x100d60 AND W8, W21, #1 ; +0x2bc, 0x100d64 INS V2.S[1], V31.S[0] ; +0x2c0, 0x100d68 INS V30.S[1], V17.S[0] ; +0x2c4, 0x100d6c INS V3.S[1], V16.S[0] ; +0x2c8, 0x100d70 INS V0.S[1], V7.S[0] ; +0x2cc, 0x100d74 INS V4.S[1], V6.S[0] ; +0x2d0, 0x100d78 INS V1.S[1], V5.S[0] ; +0x2d4, 0x100d7c CBZ W8, loc_100DD4 ; +0x2d8, 0x100d80 MOV X9, X20 ; +0x2dc, 0x100d84 LD1R {V5.2S}, [X9],#4 ; +0x2e0, 0x100d88 LDP D6, D7, [X19] ; +0x2e4, 0x100d8c SUB W8, W8, #1 ; +0x2e8, 0x100d90 ADD X20, X20, #8 ; +0x2ec, 0x100d94 LDR S16, [X9] ; +0x2f0, 0x100d98 FMUL V17.2S, V5.2S, V30.2S ; +0x2f4, 0x100d9c FMUL V18.2S, V5.2S, V0.2S ; +0x2f8, 0x100da0 FMUL V5.2S, V5.2S, V1.2S ; +0x2fc, 0x100da4 FMLA V17.2S, V2.2S, V16.S[0] ; +0x300, 0x100da8 FMLA V18.2S, V3.2S, V16.S[0] ; +0x304, 0x100dac FMLA V5.2S, V4.2S, V16.S[0] ; +0x308, 0x100db0 LDR D16, [X19,#0x10] ; +0x30c, 0x100db4 FADD V6.2S, V17.2S, V6.2S ; +0x310, 0x100db8 FADD V7.2S, V18.2S, V7.2S ; +0x314, 0x100dbc STP D6, D7, [X19] ; +0x318, 0x100dc0 FADD V5.2S, V5.2S, V16.2S ; +0x31c, 0x100dc4 STR D5, [X19,#0x10] ; +0x320, 0x100dc8 ADD X19, X19, #0x18 ; +0x324, 0x100dcc CBNZ W8, loc_100D84 ; +0x328, 0x100dd0 LDP X29, X30, [SP,#0x50+var_s0] ; +0x32c, 0x100dd4 LDP X20, X19, [SP,#0x50+var_10] ; +0x330, 0x100dd8 LDR X21, [SP,#0x50+var_18] ; +0x334, 0x100ddc LDR D8, [SP,#0x50+var_20] ; +0x338, 0x100de0 ADD SP, SP, #0x60 ; '`' ; +0x33c, 0x100de4 RET ; +0x340, 0x100de8