{"type": "func", "start": 1066140, "end": 1066856, "name": "sub_10449C", "pseudocode": "// \n// sub_10449C from 0x10449c to 0x104768 (716 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x11f748\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\n__int64 __fastcall sub_10449C(__int64 a1, _QWORD *a2, __int64 a3, __int64 a4, __int64 a5, int a6)\n{\n  float32x4_t *v8; // x22\n  float32x4_t *v9; // x21\n  int v10; // w23\n  long double v11; // q0\n  int v12; // w5\n  int v13; // w23\n  __int64 j; // x0\n  int16x8_t v15; // q0\n  int8x16_t v16; // q3\n  int32x4_t v17; // q5\n  int32x4_t v18; // q4\n  int32x4_t v19; // q0\n  int32x4_t v20; // q2\n  long double v21; // q0\n  __int64 v22; // x0\n  __int64 v23; // x1\n  int8x16_t v24; // q0\n  int32x4_t v25; // q2\n  int32x4_t v26; // q3\n  long double v27; // q0\n  int16x8_t v28; // q0\n  float32x4_t v29; // q1\n  float32x4_t *v30; // x9\n  float32x4_t *v31; // x8\n  float32x4_t v32; // q4\n  int8x16_t v33; // q3\n  float32x4_t v34; // q5\n  int k; // w23\n  int32x4_t v36; // q5\n  int32x4_t v37; // q6\n  int32x4_t v38; // q4\n  int32x4_t v39; // q0\n  float32x4_t v40; // q2\n  float32x4_t v41; // q0\n  int16x8_t v43; // [xsp+0h] [xbp-D0h]\n  int16x8_t v44; // [xsp+10h] [xbp-C0h]\n  int16x8_t v45; // [xsp+20h] [xbp-B0h]\n  int8x16_t v46; // [xsp+20h] [xbp-B0h]\n  int16x8_t i; // [xsp+20h] [xbp-B0h]\n  float32x4_t v48; // [xsp+30h] [xbp-A0h]\n  float32x4_t v49; // [xsp+40h] [xbp-90h]\n  int8x16_t v50; // [xsp+50h] [xbp-80h]\n  int8x16_t v51; // [xsp+60h] [xbp-70h] BYREF\n  __n128 v52[3]; // [xsp+70h] [xbp-60h] BYREF\n\n  v50 = *(int8x16_t *)a1;\n  v49 = *(float32x4_t *)(a1 + 16);\n  v8 = (float32x4_t *)(*a2 + 4 * a3);\n  v9 = (float32x4_t *)(a2[1] + 4 * a3);\n  v10 = a6 >> 2;\n  v48 = *(float32x4_t *)(a1 + 32);\n  switch ( *(_BYTE *)(a1 + 100) )\n  {\n    case 0:\n    case 1:\n      while ( v10 )\n      {\n        v21 = sub_104768(a1);\n        v46 = COERCE_INT8X16_T(sub_104774(v21));\n        v24.n128_u64[0] = sub_103C94(v22, v23);\n        v25 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v46, v50)), v48);\n        v26 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v24, v50)), v48);\n        *v8 = vaddq_f32(vuzp1q_s32(v25, v26), *v8);\n        --v10;\n        ++v8;\n        *v9 = vaddq_f32(vuzp2q_s32(v25, v26), *v9);\n        ++v9;\n      }\n      break;\n    case 2:\n    case 3:\n      for ( i = vdupq_n_s16(-*(unsigned __int8 *)(a1 + 102)); v10; v9 = v30 + 1 )\n      {\n        v27 = sub_104768(a1);\n        --v10;\n        *(long double *)&v28 = sub_104804(v27, *(long double *)v8);\n        *v8 = v29;\n        v8 = v31;\n        *v9 = vmlaq_f32(vaddq_f32(*v30, v32), vcvtq_f32_u32(vandq_s8(v33, vshlq_s16(v28, i))), v34);\n      }\n      break;\n    case 4:\n    case 5:\n    case 6:\n    case 7:\n      v11 = sub_104780();\n      v13 = v12 >> 3;\n      for ( j = sub_1047CC(v11); v13; v9 += 2 )\n      {\n        *(long double *)&v15 = sub_104768(j);\n        v16 = vshlq_s16(v15, v43);\n        v17 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v50, vshlq_s16(v15, v45))), v48);\n        v18 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v15, v50)), v48);\n        v19 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v50, vshlq_s16(v15, v44))), v48);\n        *v8 = vaddq_f32(vzip1q_s32(v18, v19), *v8);\n        v20 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v50, v16)), v48);\n        *v9 = vaddq_f32(vzip1q_s32(v17, v20), *v9);\n        --v13;\n        v8[1] = vaddq_f32(vzip2q_s32(v18, v19), v8[1]);\n        v8 += 2;\n        v9[1] = vaddq_f32(v9[1], vzip2q_s32(v17, v20));\n      }\n      break;\n    case 8:\n      for ( k = a6 >> 3; k; v9 += 2 )\n      {\n        sub_1047B8(a1);\n        sub_1043B8(a1, a5, v52, &v51);\n        --k;\n        v36 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v52[1], v50)), v48);\n        v37 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v52[0], v50)), v48);\n        v38 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v52[2], v50)), v48);\n        v39 = vmlaq_f32(v49, vcvtq_f32_u32(vandq_s8(v51, v50)), v48);\n        v40 = vaddq_f32(vuzp1q_s32(v37, v39), v8[1]);\n        *v8 = vaddq_f32(*v8, vuzp1q_s32(v38, v36));\n        v8[1] = v40;\n        v8 += 2;\n        v41 = vaddq_f32(v9[1], vuzp2q_s32(v37, v39));\n        *v9 = vaddq_f32(*v9, vuzp2q_s32(v38, v36));\n        v9[1] = v41;\n      }\n      break;\n    default:\n      return 0;\n  }\n  return 0;\n}", "assembly": "; \n; sub_10449C from 0x10449c to 0x104768 (716 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x11f748\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\nSUB             SP, SP, #0xE0                                          ; +0x0, 0x10449c\nSTP             X22, X21, [SP,#0xD0+var_20]                            ; +0x4, 0x1044a0\nSTP             X20, X19, [SP,#0xD0+var_10]                            ; +0x8, 0x1044a4\nSTP             X29, X30, [SP,#0xD0+var_s0]                            ; +0xc, 0x1044a8\nLDRB            W9, [X0,#0x64]                                         ; +0x10, 0x1044ac\nSTR             X23, [SP,#0xD0+var_30]                                 ; +0x14, 0x1044b0\nADD             X29, SP, #0xD0                                         ; +0x18, 0x1044b4\nCMP             W9, #8; switch 9 cases                                 ; +0x1c, 0x1044b8\nB.HI            def_104508; jumptable 0000000000104508 default case    ; +0x20, 0x1044bc\nLDR             Q0, [X0]                                               ; +0x24, 0x1044c0\nLDP             X10, X11, [X1]                                         ; +0x28, 0x1044c4\nLDRB            W8, [X0,#0x66]                                         ; +0x2c, 0x1044c8\nADRP            X12, #jpt_104508@PAGE                                  ; +0x30, 0x1044cc\nSTR             Q0, [SP,#0xD0+var_80]                                  ; +0x34, 0x1044d0\nLDR             Q0, [X0,#0x10]                                         ; +0x38, 0x1044d4\nADD             X12, X12, #jpt_104508@PAGEOFF                          ; +0x3c, 0x1044d8\nMOV             X19, X4                                                ; +0x40, 0x1044dc\nMOV             X20, X0                                                ; +0x44, 0x1044e0\nSTR             Q0, [SP,#0xD0+var_90]                                  ; +0x48, 0x1044e4\nLDR             Q0, [X0,#0x20]                                         ; +0x4c, 0x1044e8\nADD             X22, X10, X2,LSL#2                                     ; +0x50, 0x1044ec\nADD             X21, X11, X2,LSL#2                                     ; +0x54, 0x1044f0\nASR             W23, W5, #2                                            ; +0x58, 0x1044f4\nSTR             Q0, [SP,#0xD0+var_A0]                                  ; +0x5c, 0x1044f8\nADR             X13, loc_10450C; jumptable 0000000000104508 cases 4-7  ; +0x60, 0x1044fc\nLDRB            W14, [X12,X9]                                          ; +0x64, 0x104500\nADD             X13, X13, X14,LSL#2                                    ; +0x68, 0x104504\nBR              X13; switch jump                                       ; +0x6c, 0x104508\nBL              sub_104780; jumptable 0000000000104508 cases 4-7       ; +0x70, 0x10450c\nASR             W23, W5, #3                                            ; +0x74, 0x104510\nBL              sub_1047CC                                             ; +0x78, 0x104514\nCBZ             W23, def_104508; jumptable 0000000000104508 default case ; +0x7c, 0x104518\nBL              sub_104768                                             ; +0x80, 0x10451c\nLDP             Q2, Q1, [SP,#0xD0+var_C0]                              ; +0x84, 0x104520\nLDP             Q7, Q6, [SP,#0xD0+var_90]                              ; +0x88, 0x104524\nLDR             Q3, [SP,#0xD0+var_D0]                                  ; +0x8c, 0x104528\nLDR             Q16, [SP,#0xD0+var_A0]                                 ; +0x90, 0x10452c\nSSHL            V1.8H, V0.8H, V1.8H                                    ; +0x94, 0x104530\nAND             V1.16B, V6.16B, V1.16B                                 ; +0x98, 0x104534\nSSHL            V2.8H, V0.8H, V2.8H                                    ; +0x9c, 0x104538\nSSHL            V3.8H, V0.8H, V3.8H                                    ; +0xa0, 0x10453c\nAND             V0.16B, V0.16B, V6.16B                                 ; +0xa4, 0x104540\nMOV             V5.16B, V7.16B                                         ; +0xa8, 0x104544\nUCVTF           V1.4S, V1.4S                                           ; +0xac, 0x104548\nMOV             V4.16B, V7.16B                                         ; +0xb0, 0x10454c\nUCVTF           V0.4S, V0.4S                                           ; +0xb4, 0x104550\nFMLA            V5.4S, V1.4S, V16.4S                                   ; +0xb8, 0x104554\nLDR             Q1, [X22]                                              ; +0xbc, 0x104558\nAND             V2.16B, V6.16B, V2.16B                                 ; +0xc0, 0x10455c\nFMLA            V4.4S, V0.4S, V16.4S                                   ; +0xc4, 0x104560\nMOV             V0.16B, V7.16B                                         ; +0xc8, 0x104564\nUCVTF           V2.4S, V2.4S                                           ; +0xcc, 0x104568\nFMLA            V0.4S, V2.4S, V16.4S                                   ; +0xd0, 0x10456c\nZIP1            V2.4S, V4.4S, V0.4S                                    ; +0xd4, 0x104570\nFADD            V1.4S, V2.4S, V1.4S                                    ; +0xd8, 0x104574\nSTR             Q1, [X22]                                              ; +0xdc, 0x104578\nAND             V3.16B, V6.16B, V3.16B                                 ; +0xe0, 0x10457c\nLDR             Q1, [X21]                                              ; +0xe4, 0x104580\nMOV             V2.16B, V7.16B                                         ; +0xe8, 0x104584\nUCVTF           V3.4S, V3.4S                                           ; +0xec, 0x104588\nFMLA            V2.4S, V3.4S, V16.4S                                   ; +0xf0, 0x10458c\nZIP1            V3.4S, V5.4S, V2.4S                                    ; +0xf4, 0x104590\nFADD            V1.4S, V3.4S, V1.4S                                    ; +0xf8, 0x104594\nSTR             Q1, [X21]                                              ; +0xfc, 0x104598\nLDR             Q1, [X22,#0x10]                                        ; +0x100, 0x10459c\nZIP2            V0.4S, V4.4S, V0.4S                                    ; +0x104, 0x1045a0\nSUB             W23, W23, #1                                           ; +0x108, 0x1045a4\nFADD            V0.4S, V0.4S, V1.4S                                    ; +0x10c, 0x1045a8\nSTR             Q0, [X22,#0x10]                                        ; +0x110, 0x1045ac\nLDR             Q0, [X21,#0x10]                                        ; +0x114, 0x1045b0\nZIP2            V1.4S, V5.4S, V2.4S                                    ; +0x118, 0x1045b4\nADD             X22, X22, #0x20 ; ' '                                  ; +0x11c, 0x1045b8\nFADD            V0.4S, V0.4S, V1.4S                                    ; +0x120, 0x1045bc\nSTR             Q0, [X21,#0x10]                                        ; +0x124, 0x1045c0\nADD             X21, X21, #0x20 ; ' '                                  ; +0x128, 0x1045c4\nCBNZ            W23, loc_10451C                                        ; +0x12c, 0x1045c8\nB               def_104508; jumptable 0000000000104508 default case    ; +0x130, 0x1045cc\nBL              sub_104768                                             ; +0x134, 0x1045d0\nBL              sub_104774                                             ; +0x138, 0x1045d4\nSTR             Q0, [SP,#0xD0+var_B0]                                  ; +0x13c, 0x1045d8\nBL              sub_103C94                                             ; +0x140, 0x1045dc\nLDP             Q3, Q2, [SP,#0xD0+var_90]                              ; +0x144, 0x1045e0\nLDP             Q1, Q4, [SP,#0xD0+var_B0]                              ; +0x148, 0x1045e4\nMOV             X8, X22                                                ; +0x14c, 0x1045e8\nMOV             X9, X21                                                ; +0x150, 0x1045ec\nAND             V0.16B, V0.16B, V2.16B                                 ; +0x154, 0x1045f0\nAND             V1.16B, V1.16B, V2.16B                                 ; +0x158, 0x1045f4\nMOV             V2.16B, V3.16B                                         ; +0x15c, 0x1045f8\nUCVTF           V1.4S, V1.4S                                           ; +0x160, 0x1045fc\nFMLA            V2.4S, V1.4S, V4.4S                                    ; +0x164, 0x104600\nLDR             Q1, [X8],#0x10                                         ; +0x168, 0x104604\nUCVTF           V0.4S, V0.4S                                           ; +0x16c, 0x104608\nFMLA            V3.4S, V0.4S, V4.4S                                    ; +0x170, 0x10460c\nUZP1            V0.4S, V2.4S, V3.4S                                    ; +0x174, 0x104610\nFADD            V0.4S, V0.4S, V1.4S                                    ; +0x178, 0x104614\nSTR             Q0, [X22]                                              ; +0x17c, 0x104618\nLDR             Q0, [X9],#0x10                                         ; +0x180, 0x10461c\nUZP2            V1.4S, V2.4S, V3.4S                                    ; +0x184, 0x104620\nSUB             W23, W23, #1                                           ; +0x188, 0x104624\nMOV             X22, X8                                                ; +0x18c, 0x104628\nFADD            V0.4S, V1.4S, V0.4S                                    ; +0x190, 0x10462c\nSTR             Q0, [X21]                                              ; +0x194, 0x104630\nMOV             X21, X9                                                ; +0x198, 0x104634\nCBNZ            W23, loc_1045D0; jumptable 0000000000104508 cases 0,1  ; +0x19c, 0x104638\nB               def_104508; jumptable 0000000000104508 default case    ; +0x1a0, 0x10463c\nNEG             W8, W8; jumptable 0000000000104508 cases 2,3           ; +0x1a4, 0x104640\nDUP             V0.8H, W8                                              ; +0x1a8, 0x104644\nSTR             Q0, [SP,#0xD0+var_B0]                                  ; +0x1ac, 0x104648\nCBZ             W23, def_104508; jumptable 0000000000104508 default case ; +0x1b0, 0x10464c\nBL              sub_104768                                             ; +0x1b4, 0x104650\nMOV             X8, X22                                                ; +0x1b8, 0x104654\nLDR             Q1, [X8],#0x10                                         ; +0x1bc, 0x104658\nLDP             Q4, Q3, [SP,#0xD0+var_90]                              ; +0x1c0, 0x10465c\nLDR             Q5, [SP,#0xD0+var_A0]                                  ; +0x1c4, 0x104660\nMOV             X9, X21                                                ; +0x1c8, 0x104664\nSUB             W23, W23, #1                                           ; +0x1cc, 0x104668\nBL              sub_104804                                             ; +0x1d0, 0x10466c\nSTR             Q1, [X22]                                              ; +0x1d4, 0x104670\nLDR             Q1, [X9],#0x10                                         ; +0x1d8, 0x104674\nLDR             Q2, [SP,#0xD0+var_B0]                                  ; +0x1dc, 0x104678\nMOV             X22, X8                                                ; +0x1e0, 0x10467c\nFADD            V1.4S, V1.4S, V4.4S                                    ; +0x1e4, 0x104680\nSSHL            V0.8H, V0.8H, V2.8H                                    ; +0x1e8, 0x104684\nAND             V0.16B, V3.16B, V0.16B                                 ; +0x1ec, 0x104688\nUCVTF           V0.4S, V0.4S                                           ; +0x1f0, 0x10468c\nFMLA            V1.4S, V0.4S, V5.4S                                    ; +0x1f4, 0x104690\nSTR             Q1, [X21]                                              ; +0x1f8, 0x104694\nMOV             X21, X9                                                ; +0x1fc, 0x104698\nCBNZ            W23, loc_104650                                        ; +0x200, 0x10469c\nB               def_104508; jumptable 0000000000104508 default case    ; +0x204, 0x1046a0\nASR             W23, W5, #3; jumptable 0000000000104508 case 8         ; +0x208, 0x1046a4\nCBZ             W23, def_104508; jumptable 0000000000104508 default case ; +0x20c, 0x1046a8\nBL              sub_1047B8                                             ; +0x210, 0x1046ac\nSUB             X2, X29, #-var_60                                      ; +0x214, 0x1046b0\nADD             X3, SP, #0xD0+var_70                                   ; +0x218, 0x1046b4\nMOV             X0, X20                                                ; +0x21c, 0x1046b8\nMOV             X1, X19                                                ; +0x220, 0x1046bc\nBL              sub_1043B8                                             ; +0x224, 0x1046c0\nLDP             Q1, Q0, [X29,#var_50]                                  ; +0x228, 0x1046c4\nLDUR            Q2, [X29,#var_60]                                      ; +0x22c, 0x1046c8\nLDP             Q7, Q3, [SP,#0xD0+var_80]                              ; +0x230, 0x1046cc\nLDP             Q17, Q16, [SP,#0xD0+var_A0]                            ; +0x234, 0x1046d0\nSUB             W23, W23, #1                                           ; +0x238, 0x1046d4\nAND             V1.16B, V1.16B, V7.16B                                 ; +0x23c, 0x1046d8\nAND             V2.16B, V2.16B, V7.16B                                 ; +0x240, 0x1046dc\nMOV             V5.16B, V16.16B                                        ; +0x244, 0x1046e0\nMOV             V6.16B, V16.16B                                        ; +0x248, 0x1046e4\nUCVTF           V1.4S, V1.4S                                           ; +0x24c, 0x1046e8\nUCVTF           V2.4S, V2.4S                                           ; +0x250, 0x1046ec\nAND             V0.16B, V0.16B, V7.16B                                 ; +0x254, 0x1046f0\nFMLA            V5.4S, V1.4S, V17.4S                                   ; +0x258, 0x1046f4\nFMLA            V6.4S, V2.4S, V17.4S                                   ; +0x25c, 0x1046f8\nLDP             Q1, Q2, [X22]                                          ; +0x260, 0x1046fc\nMOV             V4.16B, V16.16B                                        ; +0x264, 0x104700\nUCVTF           V0.4S, V0.4S                                           ; +0x268, 0x104704\nAND             V3.16B, V3.16B, V7.16B                                 ; +0x26c, 0x104708\nFMLA            V4.4S, V0.4S, V17.4S                                   ; +0x270, 0x10470c\nMOV             V0.16B, V16.16B                                        ; +0x274, 0x104710\nUCVTF           V3.4S, V3.4S                                           ; +0x278, 0x104714\nFMLA            V0.4S, V3.4S, V17.4S                                   ; +0x27c, 0x104718\nUZP1            V3.4S, V4.4S, V5.4S                                    ; +0x280, 0x10471c\nFADD            V1.4S, V1.4S, V3.4S                                    ; +0x284, 0x104720\nUZP1            V3.4S, V6.4S, V0.4S                                    ; +0x288, 0x104724\nFADD            V2.4S, V3.4S, V2.4S                                    ; +0x28c, 0x104728\nSTP             Q1, Q2, [X22],#0x20                                    ; +0x290, 0x10472c\nLDP             Q1, Q2, [X21]                                          ; +0x294, 0x104730\nUZP2            V4.4S, V4.4S, V5.4S                                    ; +0x298, 0x104734\nUZP2            V0.4S, V6.4S, V0.4S                                    ; +0x29c, 0x104738\nFADD            V1.4S, V1.4S, V4.4S                                    ; +0x2a0, 0x10473c\nFADD            V0.4S, V2.4S, V0.4S                                    ; +0x2a4, 0x104740\nSTP             Q1, Q0, [X21],#0x20                                    ; +0x2a8, 0x104744\nCBNZ            W23, loc_1046AC                                        ; +0x2ac, 0x104748\nLDP             X29, X30, [SP,#0xD0+var_s0]; jumptable 0000000000104508 default case ; +0x2b0, 0x10474c\nLDP             X20, X19, [SP,#0xD0+var_10]                            ; +0x2b4, 0x104750\nLDP             X22, X21, [SP,#0xD0+var_20]                            ; +0x2b8, 0x104754\nLDR             X23, [SP,#0xD0+var_30]                                 ; +0x2bc, 0x104758\nMOV             X0, XZR                                                ; +0x2c0, 0x10475c\nADD             SP, SP, #0xE0                                          ; +0x2c4, 0x104760\nRET                                                                    ; +0x2c8, 0x104764", "xrefs": ["<???> @ 0x11f748"], "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"}