{"type": "func", "start": 1050676, "end": 1050920, "name": "sub_100834", "pseudocode": "// \n// sub_100834 from 0x100834 to 0x100928 (244 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x118af8\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\nint32x4_t *__fastcall sub_100834(\n        int32x4_t *result,\n        float32x4_t *a2,\n        unsigned int a3,\n        __int64 a4,\n        __int64 a5,\n        __int64 a6,\n        int a7)\n{\n  float32x2_t v7; // d0\n  float v8; // s1\n  unsigned int v9; // w8\n  float32x4_t v10; // q2\n  int32x4_t v11; // q3\n  int32x4_t v12; // q4\n  __int64 v13; // x8\n  float v14; // s2\n  int32x4_t v15; // q5\n  int32x4_t v16; // q16\n  float32x4_t v17; // q4\n  float32x4_t v18; // q6\n  float32x4_t v19; // q7\n  __int64 v20; // x8\n\n  v7.n64_u32[0] = *(_DWORD *)a4;\n  v8 = *(float *)(a4 + 128);\n  v9 = a3 >> 3;\n  v10.n128_u32[0] = *(_DWORD *)a4;\n  v10.n128_f32[1] = v8;\n  v10.n128_u32[2] = *(_DWORD *)a4;\n  v10.n128_f32[3] = v8;\n  if ( a7 )\n  {\n    for ( ; v9; a2 += 4 )\n    {\n      v11 = *result;\n      v12 = result[1];\n      result += 2;\n      --v9;\n      *a2 = vmulq_f32(vzip1q_s32(v11, v11), v10);\n      a2[1] = vmulq_f32(vzip2q_s32(v11, v11), v10);\n      a2[2] = vmulq_f32(vzip1q_s32(v12, v12), v10);\n      a2[3] = vmulq_f32(vzip2q_s32(v12, v12), v10);\n    }\n    v13 = 0;\n    while ( (a3 & 7) != (_DWORD)v13 )\n    {\n      v14 = result->n128_f32[v13++];\n      a2->n128_f32[0] = v14 * v7.n64_f32[0];\n      a2->n128_f32[1] = v14 * v8;\n      a2 = (float32x4_t *)((char *)a2 + 8);\n    }\n  }\n  else\n  {\n    while ( v9 )\n    {\n      v15 = *result;\n      v16 = result[1];\n      result += 2;\n      --v9;\n      v17 = vmlaq_f32(a2[1], v10, vzip2q_s32(v15, v15));\n      v18 = vmlaq_f32(a2[2], v10, vzip1q_s32(v16, v16));\n      v19 = vmlaq_f32(a2[3], v10, vzip2q_s32(v16, v16));\n      *a2 = vmlaq_f32(*a2, v10, vzip1q_s32(v15, v15));\n      a2[1] = v17;\n      a2[2] = v18;\n      a2[3] = v19;\n      a2 += 4;\n    }\n    v20 = 0;\n    v7.n64_f32[1] = v8;\n    while ( (a3 & 7) != (_DWORD)v20 )\n    {\n      a2->n128_u64[v20] = vmla_n_f32((float32x2_t)a2->n128_u64[v20], v7, result->n128_f32[v20]).n64_u64[0];\n      ++v20;\n    }\n  }\n  return result;\n}", "assembly": "; \n; sub_100834 from 0x100834 to 0x100928 (244 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x118af8\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, 0x100834\nLDR             S1, [X3,#0x80]                                         ; +0x4, 0x100838\nLSR             W8, W2, #3                                             ; +0x8, 0x10083c\nMOV             V2.16B, V0.16B                                         ; +0xc, 0x100840\nINS             V2.S[1], V1.S[0]                                       ; +0x10, 0x100844\nINS             V2.S[2], V0.S[0]                                       ; +0x14, 0x100848\nINS             V2.S[3], V1.S[0]                                       ; +0x18, 0x10084c\nCBZ             W6, loc_1008F4                                         ; +0x1c, 0x100850\nCBZ             W8, loc_100890                                         ; +0x20, 0x100854\nLDP             Q3, Q4, [X0],#0x20                                     ; +0x24, 0x100858\nSUB             W8, W8, #1                                             ; +0x28, 0x10085c\nZIP1            V5.4S, V3.4S, V3.4S                                    ; +0x2c, 0x100860\nZIP2            V3.4S, V3.4S, V3.4S                                    ; +0x30, 0x100864\nZIP1            V6.4S, V4.4S, V4.4S                                    ; +0x34, 0x100868\nZIP2            V4.4S, V4.4S, V4.4S                                    ; +0x38, 0x10086c\nFMUL            V5.4S, V5.4S, V2.4S                                    ; +0x3c, 0x100870\nFMUL            V3.4S, V3.4S, V2.4S                                    ; +0x40, 0x100874\nFMUL            V6.4S, V6.4S, V2.4S                                    ; +0x44, 0x100878\nFMUL            V4.4S, V4.4S, V2.4S                                    ; +0x48, 0x10087c\nSTP             Q5, Q3, [X1]                                           ; +0x4c, 0x100880\nSTP             Q6, Q4, [X1,#0x20]                                     ; +0x50, 0x100884\nADD             X1, X1, #0x40 ; '@'                                    ; +0x54, 0x100888\nCBNZ            W8, loc_100858                                         ; +0x58, 0x10088c\nMOV             X8, XZR                                                ; +0x5c, 0x100890\nAND             X9, X2, #7                                             ; +0x60, 0x100894\nCMP             W9, W8                                                 ; +0x64, 0x100898\nB.EQ            locret_100924                                          ; +0x68, 0x10089c\nLDR             S2, [X0,X8,LSL#2]                                      ; +0x6c, 0x1008a0\nADD             X8, X8, #1                                             ; +0x70, 0x1008a4\nFMUL            S3, S2, S0                                             ; +0x74, 0x1008a8\nFMUL            S2, S2, S1                                             ; +0x78, 0x1008ac\nSTP             S3, S2, [X1],#8                                        ; +0x7c, 0x1008b0\nB               loc_100898                                             ; +0x80, 0x1008b4\nLDP             Q5, Q16, [X0],#0x20                                    ; +0x84, 0x1008b8\nLDP             Q3, Q4, [X1]                                           ; +0x88, 0x1008bc\nLDP             Q6, Q7, [X1,#0x20]                                     ; +0x8c, 0x1008c0\nSUB             W8, W8, #1                                             ; +0x90, 0x1008c4\nZIP1            V17.4S, V5.4S, V5.4S                                   ; +0x94, 0x1008c8\nZIP2            V5.4S, V5.4S, V5.4S                                    ; +0x98, 0x1008cc\nZIP1            V18.4S, V16.4S, V16.4S                                 ; +0x9c, 0x1008d0\nZIP2            V16.4S, V16.4S, V16.4S                                 ; +0xa0, 0x1008d4\nFMLA            V3.4S, V2.4S, V17.4S                                   ; +0xa4, 0x1008d8\nFMLA            V4.4S, V2.4S, V5.4S                                    ; +0xa8, 0x1008dc\nFMLA            V6.4S, V2.4S, V18.4S                                   ; +0xac, 0x1008e0\nFMLA            V7.4S, V2.4S, V16.4S                                   ; +0xb0, 0x1008e4\nSTP             Q3, Q4, [X1]                                           ; +0xb4, 0x1008e8\nSTP             Q6, Q7, [X1,#0x20]                                     ; +0xb8, 0x1008ec\nADD             X1, X1, #0x40 ; '@'                                    ; +0xbc, 0x1008f0\nCBNZ            W8, loc_1008B8                                         ; +0xc0, 0x1008f4\nMOV             X8, XZR                                                ; +0xc4, 0x1008f8\nINS             V0.S[1], V1.S[0]                                       ; +0xc8, 0x1008fc\nAND             X9, X2, #7                                             ; +0xcc, 0x100900\nCMP             W9, W8                                                 ; +0xd0, 0x100904\nB.EQ            locret_100924                                          ; +0xd4, 0x100908\nLDR             S1, [X0,X8,LSL#2]                                      ; +0xd8, 0x10090c\nLDR             D2, [X1,X8,LSL#3]                                      ; +0xdc, 0x100910\nFMLA            V2.2S, V0.2S, V1.S[0]                                  ; +0xe0, 0x100914\nSTR             D2, [X1,X8,LSL#3]                                      ; +0xe4, 0x100918\nADD             X8, X8, #1                                             ; +0xe8, 0x10091c\nB               loc_100904                                             ; +0xec, 0x100920\nRET                                                                    ; +0xf0, 0x100924", "xrefs": ["<???> @ 0x118af8"], "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"}