{"type": "func", "start": 1070968, "end": 1071188, "name": "sub_105778", "pseudocode": "// \n// sub_105778 from 0x105778 to 0x105854 (220 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x11c0b0\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_105778(float32x4_t *result, int8x16_t *a2, int a3)\n{\n  int i; // w8\n  int8x16_t v4; // q0\n  float32x4_t v5; // q1\n  int v6; // w11\n  int v7; // w12\n  int8x16_t v8; // q3\n  int v9; // w12\n  int v10; // w11\n  int v11; // w12\n  int v12; // w11\n  int8x16_t v13; // q4\n  int v14; // w11\n  int32x4_t v15; // q5\n  int v16; // w12\n  int8x16_t v17; // q2\n  int8x16_t v18; // q5\n  int8x16_t v19; // q0\n\n  for ( i = a3 >> 2; i; ++result )\n  {\n    v4 = *a2;\n    v5 = *result;\n    --i;\n    if ( COERCE_FLOAT(HIDWORD(a2->n128_u64[0])) > 0.0 )\n      v6 = 0;\n    else\n      v6 = -1;\n    if ( v4.n128_f32[0] > 0.0 )\n      v7 = 0;\n    else\n      v7 = -1;\n    v8.n128_u32[0] = v7;\n    if ( COERCE_FLOAT(a2->n128_u64[1]) > 0.0 )\n      v9 = 0;\n    else\n      v9 = -1;\n    v8.n128_u32[1] = v6;\n    if ( v4.n128_f32[3] > 0.0 )\n      v10 = 0;\n    else\n      v10 = -1;\n    v8.n128_u32[2] = v9;\n    if ( v5.n128_f32[1] > 0.0 )\n      v11 = 0;\n    else\n      v11 = -1;\n    v8.n128_u32[3] = v10;\n    if ( v5.n128_f32[0] > 0.0 )\n      v12 = 0;\n    else\n      v12 = -1;\n    v13.n128_u32[0] = v12;\n    if ( v5.n128_f32[2] > 0.0 )\n      v14 = 0;\n    else\n      v14 = -1;\n    v13.n128_u32[1] = v11;\n    v15 = vcgtzq_f32(v4);\n    if ( v5.n128_f32[3] > 0.0 )\n      v16 = 0;\n    else\n      v16 = -1;\n    v13.n128_u64[1] = __PAIR64__(v16, v14);\n    v17 = vcgtzq_f32(v5);\n    v18 = vandq_s8(v15, v4);\n    v19 = vandq_s8(v8, v4);\n    *a2 = vsubq_f32(vaddq_f32(v5, vandq_s8(v18, v13)), vandq_s8(v18, v17));\n    *result = vsubq_f32(vaddq_f32(v5, vandq_s8(v19, v17)), vandq_s8(v19, v13));\n    ++a2;\n  }\n  return result;\n}", "assembly": "; \n; sub_105778 from 0x105778 to 0x105854 (220 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x11c0b0\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\nASR             W8, W2, #2                                             ; +0x0, 0x105778\nCBZ             W8, locret_105850                                      ; +0x4, 0x10577c\nMOV             X9, X1                                                 ; +0x8, 0x105780\nLDR             Q0, [X9],#0x10                                         ; +0xc, 0x105784\nMOV             X10, X0                                                ; +0x10, 0x105788\nLDR             Q1, [X10],#0x10                                        ; +0x14, 0x10578c\nSUB             W8, W8, #1                                             ; +0x18, 0x105790\nDUP             S2, V0.S[1]                                            ; +0x1c, 0x105794\nFCMP            S2, #0.0                                               ; +0x20, 0x105798\nDUP             S3, V0.S[2]                                            ; +0x24, 0x10579c\nCSETM           W11, LE                                                ; +0x28, 0x1057a0\nFCMP            S0, #0.0                                               ; +0x2c, 0x1057a4\nDUP             S4, V0.S[3]                                            ; +0x30, 0x1057a8\nCSETM           W12, LE                                                ; +0x34, 0x1057ac\nFCMP            S3, #0.0                                               ; +0x38, 0x1057b0\nDUP             S2, V1.S[1]                                            ; +0x3c, 0x1057b4\nFMOV            S3, W12                                                ; +0x40, 0x1057b8\nCSETM           W12, LE                                                ; +0x44, 0x1057bc\nFCMP            S4, #0.0                                               ; +0x48, 0x1057c0\nINS             V3.S[1], W11                                           ; +0x4c, 0x1057c4\nCSETM           W11, LE                                                ; +0x50, 0x1057c8\nFCMP            S2, #0.0                                               ; +0x54, 0x1057cc\nINS             V3.S[2], W12                                           ; +0x58, 0x1057d0\nCSETM           W12, LE                                                ; +0x5c, 0x1057d4\nFCMP            S1, #0.0                                               ; +0x60, 0x1057d8\nDUP             S4, V1.S[2]                                            ; +0x64, 0x1057dc\nINS             V3.S[3], W11                                           ; +0x68, 0x1057e0\nCSETM           W11, LE                                                ; +0x6c, 0x1057e4\nDUP             S2, V1.S[3]                                            ; +0x70, 0x1057e8\nFCMP            S4, #0.0                                               ; +0x74, 0x1057ec\nFMOV            S4, W11                                                ; +0x78, 0x1057f0\nCSETM           W11, LE                                                ; +0x7c, 0x1057f4\nFCMP            S2, #0.0                                               ; +0x80, 0x1057f8\nINS             V4.S[1], W12                                           ; +0x84, 0x1057fc\nFCMGT           V5.4S, V0.4S, #0.0                                     ; +0x88, 0x105800\nCSETM           W12, LE                                                ; +0x8c, 0x105804\nINS             V4.S[2], W11                                           ; +0x90, 0x105808\nFCMGT           V2.4S, V1.4S, #0.0                                     ; +0x94, 0x10580c\nAND             V5.16B, V5.16B, V0.16B                                 ; +0x98, 0x105810\nAND             V0.16B, V3.16B, V0.16B                                 ; +0x9c, 0x105814\nINS             V4.S[3], W12                                           ; +0xa0, 0x105818\nAND             V3.16B, V5.16B, V2.16B                                 ; +0xa4, 0x10581c\nAND             V2.16B, V0.16B, V2.16B                                 ; +0xa8, 0x105820\nAND             V0.16B, V0.16B, V4.16B                                 ; +0xac, 0x105824\nAND             V4.16B, V5.16B, V4.16B                                 ; +0xb0, 0x105828\nFADD            V2.4S, V1.4S, V2.4S                                    ; +0xb4, 0x10582c\nFADD            V1.4S, V1.4S, V4.4S                                    ; +0xb8, 0x105830\nFSUB            V0.4S, V2.4S, V0.4S                                    ; +0xbc, 0x105834\nFSUB            V1.4S, V1.4S, V3.4S                                    ; +0xc0, 0x105838\nSTR             Q1, [X1]                                               ; +0xc4, 0x10583c\nSTR             Q0, [X0]                                               ; +0xc8, 0x105840\nMOV             X1, X9                                                 ; +0xcc, 0x105844\nMOV             X0, X10                                                ; +0xd0, 0x105848\nCBNZ            W8, loc_105780                                         ; +0xd4, 0x10584c\nRET                                                                    ; +0xd8, 0x105850", "xrefs": ["<???> @ 0x11c0b0"], "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"}