{"type": "func", "start": 1050920, "end": 1051304, "name": "sub_100928", "pseudocode": "// \n// sub_100928 from 0x100928 to 0x100aa8 (384 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x118b08\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\nfloat32x4_t *__fastcall sub_100928(\n        float32x4_t *result,\n        __int64 a2,\n        unsigned int a3,\n        __int64 a4,\n        __int64 a5,\n        __int64 a6,\n        int a7)\n{\n  float32x4_t v7; // q0\n  float v8; // s3\n  float v9; // s5\n  float v10; // s4\n  float v11; // s1\n  float v12; // s2\n  float32x4_t v13; // q6\n  float32x4_t v14; // q7\n  float32x2_t v15; // d17\n  unsigned int v16; // w8\n  float32x4_t v17; // t1\n  __int64 v18; // x8\n  float v19; // s6\n  float32x4_t v20; // t1\n  unsigned __int64 v21; // d20\n  unsigned __int64 v22; // d21\n  float32x4_t v23; // q22\n  float32x4_t v24; // q23\n  unsigned __int64 v25; // d24\n  unsigned __int64 v26; // d25\n  float32x4_t v27; // q26\n  __int64 v28; // x8\n  float v29; // s3\n  float32x4_t v30; // q4\n  float v31; // s5\n  float v32; // s3\n\n  v7.n128_u32[0] = *(_DWORD *)a4;\n  v8 = *(float *)(a4 + 256);\n  v9 = *(float *)(a4 + 128);\n  v10 = *(float *)(a4 + 384);\n  v11 = *(float *)(a4 + 512);\n  v12 = *(float *)(a4 + 640);\n  v13.n128_u32[0] = *(_DWORD *)a4;\n  v14.n128_u64[0] = __PAIR64__(LODWORD(v10), LODWORD(v8));\n  v13.n128_f32[1] = v9;\n  v15.n64_u32[0] = *(_DWORD *)a4;\n  v13.n128_u64[1] = __PAIR64__(LODWORD(v10), LODWORD(v8));\n  v14.n128_u64[1] = __PAIR64__(LODWORD(v12), LODWORD(v11));\n  v15.n64_f32[1] = v9;\n  v16 = a3 >> 2;\n  if ( a7 )\n  {\n    for ( ; v16; a2 += 96 )\n    {\n      v17 = *result++;\n      --v16;\n      *(float32x4_t *)a2 = vmulq_n_f32(v13, v17.n128_f32[0]);\n      *(float32x2_t *)(a2 + 16) = vmul_n_f32((float32x2_t)__PAIR64__(LODWORD(v12), LODWORD(v11)), v17.n128_f32[0]);\n      *(float32x2_t *)(a2 + 24) = vmul_lane_f32(v15, (float32x2_t)v17.n128_u64[0], 1);\n      *(float32x4_t *)(a2 + 32) = vmulq_lane_f32(v14, (float32x2_t)v17.n128_u64[0], 1);\n      *(float32x4_t *)(a2 + 48) = vmulq_laneq_f32(v13, v17, 2);\n      *(float32x2_t *)(a2 + 64) = vmul_laneq_f32((float32x2_t)__PAIR64__(LODWORD(v12), LODWORD(v11)), v17, 2);\n      *(float32x2_t *)(a2 + 72) = vmul_laneq_f32(v15, v17, 3);\n      *(float32x4_t *)(a2 + 80) = vmulq_laneq_f32(v14, v17, 3);\n    }\n    v18 = 0;\n    while ( (a3 & 3) != (_DWORD)v18 )\n    {\n      v19 = result->n128_f32[v18++];\n      *(float *)a2 = v19 * v7.n128_f32[0];\n      *(float *)(a2 + 4) = v19 * v9;\n      *(float *)(a2 + 8) = v19 * v8;\n      *(float *)(a2 + 12) = v19 * v10;\n      *(float *)(a2 + 16) = v19 * v11;\n      *(float *)(a2 + 20) = v19 * v12;\n      a2 += 24;\n    }\n  }\n  else\n  {\n    while ( v16 )\n    {\n      v20 = *result++;\n      v21 = vmla_n_f32(*(float32x2_t *)(a2 + 16), (float32x2_t)__PAIR64__(LODWORD(v12), LODWORD(v11)), v20.n128_f32[0]).n64_u64[0];\n      v22 = vmla_lane_f32(*(float32x2_t *)(a2 + 24), v15, (float32x2_t)v20.n128_u64[0], 1).n64_u64[0];\n      v23 = vmlaq_lane_f32(*(float32x4_t *)(a2 + 32), v14, (float32x2_t)v20.n128_u64[0], 1);\n      v24 = vmlaq_laneq_f32(*(float32x4_t *)(a2 + 48), v13, v20, 2);\n      v25 = vmla_laneq_f32(*(float32x2_t *)(a2 + 64), (float32x2_t)__PAIR64__(LODWORD(v12), LODWORD(v11)), v20, 2).n64_u64[0];\n      v26 = vmla_laneq_f32(*(float32x2_t *)(a2 + 72), v15, v20, 3).n64_u64[0];\n      v27 = vmlaq_laneq_f32(*(float32x4_t *)(a2 + 80), v14, v20, 3);\n      *(float32x4_t *)a2 = vmlaq_n_f32(*(float32x4_t *)a2, v13, v20.n128_f32[0]);\n      *(_QWORD *)(a2 + 16) = v21;\n      *(_QWORD *)(a2 + 24) = v22;\n      *(float32x4_t *)(a2 + 32) = v23;\n      *(float32x4_t *)(a2 + 48) = v24;\n      *(_QWORD *)(a2 + 64) = v25;\n      *(_QWORD *)(a2 + 72) = v26;\n      *(float32x4_t *)(a2 + 80) = v27;\n      a2 += 96;\n      --v16;\n    }\n    v7.n128_f32[1] = v9;\n    v7.n128_u64[1] = __PAIR64__(LODWORD(v10), LODWORD(v8));\n    v28 = 0;\n    while ( (a3 & 3) != (_DWORD)v28 )\n    {\n      v29 = result->n128_f32[v28++];\n      v30 = vmlaq_n_f32(*(float32x4_t *)a2, v7, v29);\n      v31 = *(float *)(a2 + 16) + (float)(v29 * v11);\n      v32 = *(float *)(a2 + 20) + (float)(v29 * v12);\n      *(float32x4_t *)a2 = v30;\n      *(float *)(a2 + 16) = v31;\n      *(float *)(a2 + 20) = v32;\n      a2 += 24;\n    }\n  }\n  return result;\n}", "assembly": "; \n; sub_100928 from 0x100928 to 0x100aa8 (384 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x118b08\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\nLDR             S0, [X3]                                               ; +0x0, 0x100928\nLDR             S3, [X3,#0x100]                                        ; +0x4, 0x10092c\nLDR             S5, [X3,#0x80]                                         ; +0x8, 0x100930\nLDR             S4, [X3,#0x180]                                        ; +0xc, 0x100934\nLDR             S1, [X3,#0x200]                                        ; +0x10, 0x100938\nLDR             S2, [X3,#0x280]                                        ; +0x14, 0x10093c\nMOV             V6.16B, V0.16B                                         ; +0x18, 0x100940\nMOV             V7.16B, V3.16B                                         ; +0x1c, 0x100944\nINS             V6.S[1], V5.S[0]                                       ; +0x20, 0x100948\nINS             V7.S[1], V4.S[0]                                       ; +0x24, 0x10094c\nMOV             V16.16B, V1.16B                                        ; +0x28, 0x100950\nMOV             V17.16B, V0.16B                                        ; +0x2c, 0x100954\nINS             V6.S[2], V3.S[0]                                       ; +0x30, 0x100958\nINS             V7.S[2], V1.S[0]                                       ; +0x34, 0x10095c\nINS             V16.S[1], V2.S[0]                                      ; +0x38, 0x100960\nINS             V17.S[1], V5.S[0]                                      ; +0x3c, 0x100964\nINS             V6.S[3], V4.S[0]                                       ; +0x40, 0x100968\nINS             V7.S[3], V2.S[0]                                       ; +0x44, 0x10096c\nLSR             W8, W2, #2                                             ; +0x48, 0x100970\nCBZ             W6, loc_100A58                                         ; +0x4c, 0x100974\nCBZ             W8, loc_1009C0                                         ; +0x50, 0x100978\nLDR             Q18, [X0],#0x10                                        ; +0x54, 0x10097c\nSUB             W8, W8, #1                                             ; +0x58, 0x100980\nFMUL            V19.4S, V6.4S, V18.S[0]                                ; +0x5c, 0x100984\nFMUL            V20.2S, V16.2S, V18.S[0]                               ; +0x60, 0x100988\nFMUL            V21.2S, V17.2S, V18.S[1]                               ; +0x64, 0x10098c\nFMUL            V22.4S, V7.4S, V18.S[1]                                ; +0x68, 0x100990\nFMUL            V23.4S, V6.4S, V18.S[2]                                ; +0x6c, 0x100994\nFMUL            V24.2S, V16.2S, V18.S[2]                               ; +0x70, 0x100998\nFMUL            V25.2S, V17.2S, V18.S[3]                               ; +0x74, 0x10099c\nFMUL            V18.4S, V7.4S, V18.S[3]                                ; +0x78, 0x1009a0\nSTR             Q19, [X1]                                              ; +0x7c, 0x1009a4\nSTP             D20, D21, [X1,#0x10]                                   ; +0x80, 0x1009a8\nSTP             Q22, Q23, [X1,#0x20]                                   ; +0x84, 0x1009ac\nSTP             D24, D25, [X1,#0x40]                                   ; +0x88, 0x1009b0\nSTR             Q18, [X1,#0x50]                                        ; +0x8c, 0x1009b4\nADD             X1, X1, #0x60 ; '`'                                    ; +0x90, 0x1009b8\nCBNZ            W8, loc_10097C                                         ; +0x94, 0x1009bc\nMOV             X8, XZR                                                ; +0x98, 0x1009c0\nAND             X9, X2, #3                                             ; +0x9c, 0x1009c4\nCMP             W9, W8                                                 ; +0xa0, 0x1009c8\nB.EQ            locret_100AA4                                          ; +0xa4, 0x1009cc\nLDR             S6, [X0,X8,LSL#2]                                      ; +0xa8, 0x1009d0\nADD             X8, X8, #1                                             ; +0xac, 0x1009d4\nFMUL            S7, S6, S0                                             ; +0xb0, 0x1009d8\nFMUL            S16, S6, S5                                            ; +0xb4, 0x1009dc\nFMUL            S17, S6, S3                                            ; +0xb8, 0x1009e0\nFMUL            S18, S6, S4                                            ; +0xbc, 0x1009e4\nFMUL            S19, S6, S1                                            ; +0xc0, 0x1009e8\nFMUL            S6, S6, S2                                             ; +0xc4, 0x1009ec\nSTP             S7, S16, [X1]                                          ; +0xc8, 0x1009f0\nSTP             S17, S18, [X1,#8]                                      ; +0xcc, 0x1009f4\nSTP             S19, S6, [X1,#0x10]                                    ; +0xd0, 0x1009f8\nADD             X1, X1, #0x18                                          ; +0xd4, 0x1009fc\nB               loc_1009C8                                             ; +0xd8, 0x100a00\nLDR             Q18, [X0],#0x10                                        ; +0xdc, 0x100a04\nLDR             Q19, [X1]                                              ; +0xe0, 0x100a08\nLDP             D20, D21, [X1,#0x10]                                   ; +0xe4, 0x100a0c\nLDP             Q22, Q23, [X1,#0x20]                                   ; +0xe8, 0x100a10\nLDP             D24, D25, [X1,#0x40]                                   ; +0xec, 0x100a14\nLDR             Q26, [X1,#0x50]                                        ; +0xf0, 0x100a18\nFMLA            V19.4S, V6.4S, V18.S[0]                                ; +0xf4, 0x100a1c\nFMLA            V20.2S, V16.2S, V18.S[0]                               ; +0xf8, 0x100a20\nFMLA            V21.2S, V17.2S, V18.S[1]                               ; +0xfc, 0x100a24\nFMLA            V22.4S, V7.4S, V18.S[1]                                ; +0x100, 0x100a28\nFMLA            V23.4S, V6.4S, V18.S[2]                                ; +0x104, 0x100a2c\nFMLA            V24.2S, V16.2S, V18.S[2]                               ; +0x108, 0x100a30\nFMLA            V25.2S, V17.2S, V18.S[3]                               ; +0x10c, 0x100a34\nFMLA            V26.4S, V7.4S, V18.S[3]                                ; +0x110, 0x100a38\nSTR             Q19, [X1]                                              ; +0x114, 0x100a3c\nSTP             D20, D21, [X1,#0x10]                                   ; +0x118, 0x100a40\nSTP             Q22, Q23, [X1,#0x20]                                   ; +0x11c, 0x100a44\nSTP             D24, D25, [X1,#0x40]                                   ; +0x120, 0x100a48\nSTR             Q26, [X1,#0x50]                                        ; +0x124, 0x100a4c\nADD             X1, X1, #0x60 ; '`'                                    ; +0x128, 0x100a50\nSUB             W8, W8, #1                                             ; +0x12c, 0x100a54\nCBNZ            W8, loc_100A04                                         ; +0x130, 0x100a58\nINS             V0.S[1], V5.S[0]                                       ; +0x134, 0x100a5c\nINS             V0.S[2], V3.S[0]                                       ; +0x138, 0x100a60\nMOV             X8, XZR                                                ; +0x13c, 0x100a64\nINS             V0.S[3], V4.S[0]                                       ; +0x140, 0x100a68\nAND             X9, X2, #3                                             ; +0x144, 0x100a6c\nCMP             W9, W8                                                 ; +0x148, 0x100a70\nB.EQ            locret_100AA4                                          ; +0x14c, 0x100a74\nLDR             S3, [X0,X8,LSL#2]                                      ; +0x150, 0x100a78\nLDR             Q4, [X1]                                               ; +0x154, 0x100a7c\nLDP             S5, S6, [X1,#0x10]                                     ; +0x158, 0x100a80\nADD             X8, X8, #1                                             ; +0x15c, 0x100a84\nFMLA            V4.4S, V0.4S, V3.S[0]                                  ; +0x160, 0x100a88\nFMADD           S5, S3, S1, S5                                         ; +0x164, 0x100a8c\nFMADD           S3, S3, S2, S6                                         ; +0x168, 0x100a90\nSTR             Q4, [X1]                                               ; +0x16c, 0x100a94\nSTP             S5, S3, [X1,#0x10]                                     ; +0x170, 0x100a98\nADD             X1, X1, #0x18                                          ; +0x174, 0x100a9c\nB               loc_100A70                                             ; +0x178, 0x100aa0\nRET                                                                    ; +0x17c, 0x100aa4", "xrefs": ["<???> @ 0x118b08"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}