// // sub_1010C0 from 0x1010c0 to 0x101a98 (2520 bytes) // // 1 xrefs: // > sub_101080 @ 0x1010a4 // // 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 // int8x16_t *__usercall sub_1010C0@( int8x16_t *result@, int8x16_t *a2@, int a3@, float32x4_t *a4@, int a5@, int a6@, int a7@, int8x16_t a8@) { int v8; // w9 int8x16_t v9; // q0 int v10; // w10 int8x16_t v11; // q1 int v12; // w11 __int64 v13; // x14 int8x16_t *v14; // x16 float32x4_t *v15; // x17 int v16; // w4 int8x16_t v17; // q2 int8x16_t v18; // q4 int8x16_t v19; // q5 int8x16_t v20; // q6 int8x16_t v21; // q7 int32x4_t v22; // q16 int32x4_t v23; // q5 int v24; // w4 float32x4_t v25; // t1 float32x4_t v26; // q3 float32x4_t v27; // q2 int8x16_t *v28; // x16 float32x4_t *v29; // x17 int v30; // w4 int8x16_t v31; // q3 int8x16_t v32; // q5 int8x16_t v33; // q7 int8x16_t v34; // q17 int8x16_t v35; // q19 int32x4_t v36; // q6 int32x4_t v37; // q16 int v38; // w4 float32x4_t v39; // q4 float32x4_t v40; // q5 float32x4_t v41; // q4 float32x4_t v42; // q3 float32x4_t v43; // q2 int8x16_t *v44; // x16 float32x4_t *v45; // x17 int8x16_t v46; // q4 int v47; // w4 int8x16_t v48; // q6 int8x16_t v49; // q16 int8x16_t v50; // q18 int8x16_t v51; // q20 int32x4_t v52; // q7 int32x4_t v53; // q17 int v54; // w4 float32x4_t v55; // q5 float32x4_t v56; // q2 float32x4_t v57; // q3 float32x4_t v58; // q4 int8x16_t *v59; // x16 float32x4_t *v60; // x17 int8x16_t v61; // q5 int v62; // w4 float32x4_t v63; // q21 int8x16_t v64; // q7 int8x16_t v65; // q17 float32x4_t v66; // q16 float32x4_t v67; // q18 int8x16_t v68; // q19 int8x16_t v69; // q21 int32x4_t v70; // q16 int32x4_t v71; // q18 int v72; // w4 float32x4_t v73; // q6 float32x4_t v74; // q7 float32x4_t v75; // q16 float32x4_t v76; // q6 float32x4_t v77; // q5 float32x4_t v78; // q2 float32x4_t v79; // q3 float32x4_t v80; // q4 int8x16_t *v81; // x16 int8x16_t v82; // q6 float32x4_t *v83; // x17 int v84; // w4 int8x16_t v85; // q16 int8x16_t v86; // q7 int8x16_t v87; // q19 int8x16_t v88; // q21 int32x4_t v89; // q17 int32x4_t v90; // q20 int v91; // w4 float32x4_t v92; // q17 float32x4_t v93; // q7 float32x4_t v94; // q7 float32x4_t v95; // q4 float32x4_t v96; // q2 float32x4_t v97; // q3 float32x4_t v98; // q5 float32x4_t v99; // q6 int8x16_t *v100; // x16 int8x16_t v101; // q7 float32x4_t *v102; // x17 int v103; // w4 int8x16_t v104; // q18 int8x16_t v105; // q17 int8x16_t v106; // q19 int32x4_t v107; // q21 int8x16_t v108; // q20 int32x4_t v109; // q22 int v110; // w4 float32x4_t v111; // q16 float32x4_t v112; // q17 float32x4_t v113; // q18 float32x4_t v114; // q16 float32x4_t v115; // q7 float32x4_t v116; // q2 float32x4_t v117; // q3 float32x4_t v118; // q4 float32x4_t v119; // q5 float32x4_t v120; // q6 int8x16_t v121; // q16 int8x16_t *v122; // x16 float32x4_t *v123; // x17 int v124; // w4 int8x16_t v125; // q18 int8x16_t v126; // q17 int8x16_t v127; // q19 int8x16_t v128; // q20 int32x4_t v129; // q21 int32x4_t v130; // q22 int v131; // w4 float32x4_t v132; // q18 float32x4_t v133; // q17 float32x4_t v134; // q17 float32x4_t v135; // q6 float32x4_t v136; // q2 float32x4_t v137; // q3 float32x4_t v138; // q4 float32x4_t v139; // q5 float32x4_t v140; // q7 float32x4_t v141; // q16 int8x16_t v142; // q17 int8x16_t *v143; // x16 float32x4_t *v144; // x17 int v145; // w4 float32x4_t v146; // q22 int8x16_t v147; // q20 int8x16_t v148; // q19 int32x4_t v149; // q23 float32x4_t v150; // q24 float32x4_t v151; // q27 int8x16_t v152; // q21 int8x16_t v153; // q22 int32x4_t v154; // q24 int v155; // w4 float32x4_t v156; // q18 float32x4_t v157; // q19 float32x4_t v158; // q20 float32x4_t v159; // q18 v9.n128_u64[1] = -1; v9.n128_u64[0] = -1; v10 = 0; v11 = vmvnq_s8(a8); v12 = a6 >> 2; v13 = a5; while ( v10 < a3 ) { switch ( a7 ) { case 0: case 1: case 2: case 3: v14 = a2; v15 = a4; v16 = a6 >> 2; v17 = vandq_s8(*result, v9); if ( v12 ) { do { v18 = vmulq_f32(*v15, v17); v19 = vmulq_f32(v15[8], v17); v20 = vmulq_f32(v15[16], v17); v21 = vmulq_f32(v15[24], v17); v22 = vextq_s8(v18, vextq_s8(v19, v18, 8u), 8u); v18.n128_u64[1] = v19.n128_u64[0]; v23 = vextq_s8(v20, vextq_s8(v21, v20, 8u), 8u); v20.n128_u64[1] = v21.n128_u64[0]; --v16; *v14 = vaddq_f32( vuzp1q_s32(v18, v20), vaddq_f32( vaddq_f32(vaddq_f32(vandq_s8(*v14, v11), vuzp2q_s32(v18, v20)), vuzp1q_s32(v22, v23)), vuzp2q_s32(v22, v23))); ++v14; v15 += 32; } while ( v16 ); } v24 = a6 & 3; if ( (a6 & 3) != 0 ) { do { v25 = *v15; v15 += 8; --v24; v26 = vmulq_f32(v25, v17); v14->n128_f32[0] = vaddv_f32((float32x2_t)vpaddq_f32(v26, v26).n128_u64[0]) + COERCE_FLOAT(v14->n128_u32[0] & v8); v14 = (int8x16_t *)((char *)v14 + 4); } while ( v24 ); } goto LABEL_43; case 4: case 5: case 6: case 7: v27 = *result; v28 = a2; v29 = a4; v30 = a6 >> 2; v31 = vandq_s8(result[1], v9); if ( v12 ) { do { v32 = vmlaq_f32(vmulq_f32(*v29, v27), v31, v29[1]); v33 = vmlaq_f32(vmulq_f32(v29[8], v27), v31, v29[9]); v34 = vmlaq_f32(vmulq_f32(v29[16], v27), v31, v29[17]); v35 = vmlaq_f32(vmulq_f32(v29[24], v27), v31, v29[25]); v36 = vextq_s8(v32, vextq_s8(v33, v32, 8u), 8u); v37 = vextq_s8(v34, vextq_s8(v35, v34, 8u), 8u); v32.n128_u64[1] = v33.n128_u64[0]; v34.n128_u64[1] = v35.n128_u64[0]; --v30; *v28 = vaddq_f32( vuzp1q_s32(v32, v34), vaddq_f32( vaddq_f32(vaddq_f32(vandq_s8(*v28, v11), vuzp2q_s32(v32, v34)), vuzp1q_s32(v36, v37)), vuzp2q_s32(v36, v37))); ++v28; v29 += 32; } while ( v30 ); } v38 = a6 & 3; if ( (a6 & 3) != 0 ) { do { v39 = *v29; v40 = v29[1]; v29 += 8; --v38; v41 = vmlaq_f32(vmulq_f32(v39, v27), v31, v40); v28->n128_f32[0] = vaddv_f32((float32x2_t)vpaddq_f32(v41, v41).n128_u64[0]) + COERCE_FLOAT(v28->n128_u32[0] & v8); v28 = (int8x16_t *)((char *)v28 + 4); } while ( v38 ); } goto LABEL_43; case 8: case 9: case 10: case 11: v42 = result[1]; v43 = *result; v44 = a2; v45 = a4; v46 = vandq_s8(result[2], v9); v47 = a6 >> 2; if ( v12 ) { do { v48 = vmlaq_f32(vmlaq_f32(vmulq_f32(*v45, v43), v42, v45[1]), v46, v45[2]); v49 = vmlaq_f32(vmlaq_f32(vmulq_f32(v45[8], v43), v42, v45[9]), v46, v45[10]); v50 = vmlaq_f32(vmlaq_f32(vmulq_f32(v45[16], v43), v42, v45[17]), v46, v45[18]); v51 = vmlaq_f32(vmlaq_f32(vmulq_f32(v45[24], v43), v42, v45[25]), v46, v45[26]); v52 = vextq_s8(v48, vextq_s8(v49, v48, 8u), 8u); v53 = vextq_s8(v50, vextq_s8(v51, v50, 8u), 8u); v48.n128_u64[1] = v49.n128_u64[0]; v50.n128_u64[1] = v51.n128_u64[0]; --v47; *v44 = vaddq_f32( vuzp1q_s32(v48, v50), vaddq_f32( vaddq_f32(vaddq_f32(vandq_s8(*v44, v11), vuzp2q_s32(v48, v50)), vuzp1q_s32(v52, v53)), vuzp2q_s32(v52, v53))); ++v44; v45 += 32; } while ( v47 ); } v54 = a6 & 3; if ( (a6 & 3) != 0 ) { do { --v54; v55 = vmlaq_f32(vmlaq_f32(vmulq_f32(*v45, v43), v42, v45[1]), v46, v45[2]); v44->n128_f32[0] = vaddv_f32((float32x2_t)vpaddq_f32(v55, v55).n128_u64[0]) + COERCE_FLOAT(v44->n128_u32[0] & v8); v44 = (int8x16_t *)((char *)v44 + 4); v45 += 8; } while ( v54 ); } goto LABEL_43; case 12: case 13: case 14: case 15: v56 = result[2]; v57 = *result; v58 = result[1]; v59 = a2; v60 = a4; v61 = vandq_s8(result[3], v9); v62 = a6 >> 2; if ( v12 ) { do { v63 = vmlaq_f32(vmulq_f32(v60[24], v57), v58, v60[25]); v64 = vmlaq_f32(vmlaq_f32(vmlaq_f32(vmulq_f32(*v60, v57), v58, v60[1]), v56, v60[2]), v61, v60[3]); v65 = vmlaq_f32(vmlaq_f32(vmlaq_f32(vmulq_f32(v60[8], v57), v58, v60[9]), v56, v60[10]), v61, v60[11]); --v62; v67 = v60[26]; v66 = v60[27]; v68 = vmlaq_f32(vmlaq_f32(vmlaq_f32(vmulq_f32(v60[16], v57), v58, v60[17]), v56, v60[18]), v61, v60[19]); v60 += 32; v69 = vmlaq_f32(vmlaq_f32(v63, v56, v67), v61, v66); v70 = vextq_s8(v64, vextq_s8(v65, v64, 8u), 8u); v71 = vextq_s8(v68, vextq_s8(v69, v68, 8u), 8u); v64.n128_u64[1] = v65.n128_u64[0]; v68.n128_u64[1] = v69.n128_u64[0]; *v59 = vaddq_f32( vuzp1q_s32(v64, v68), vaddq_f32( vaddq_f32(vaddq_f32(vandq_s8(*v59, v11), vuzp2q_s32(v64, v68)), vuzp1q_s32(v70, v71)), vuzp2q_s32(v70, v71))); ++v59; } while ( v62 ); } v72 = a6 & 3; if ( (a6 & 3) != 0 ) { do { --v72; v73 = vmlaq_f32(vmulq_f32(*v60, v57), v58, v60[1]); v75 = v60[2]; v74 = v60[3]; v60 += 8; v76 = vmlaq_f32(vmlaq_f32(v73, v56, v75), v61, v74); v59->n128_f32[0] = vaddv_f32((float32x2_t)vpaddq_f32(v76, v76).n128_u64[0]) + COERCE_FLOAT(v59->n128_u32[0] & v8); v59 = (int8x16_t *)((char *)v59 + 4); } while ( v72 ); } goto LABEL_43; case 16: case 17: case 18: case 19: v77 = result[3]; v78 = *result; v79 = result[1]; v80 = result[2]; v81 = a2; v82 = vandq_s8(result[4], v9); v83 = a4; v84 = a6 >> 2; if ( v12 ) { do { --v84; v85 = vmlaq_f32( vmlaq_f32(vmlaq_f32(vmlaq_f32(vmulq_f32(*v83, v78), v79, v83[1]), v80, v83[2]), v77, v83[3]), v82, v83[4]); v86 = vmlaq_f32( vmlaq_f32(vmlaq_f32(vmlaq_f32(vmulq_f32(v83[8], v78), v79, v83[9]), v80, v83[10]), v77, v83[11]), v82, v83[12]); v87 = vmlaq_f32( vmlaq_f32(vmlaq_f32(vmlaq_f32(vmulq_f32(v83[16], v78), v79, v83[17]), v80, v83[18]), v77, v83[19]), v82, v83[20]); v88 = vmlaq_f32( vmlaq_f32(vmlaq_f32(vmlaq_f32(vmulq_f32(v83[24], v78), v79, v83[25]), v80, v83[26]), v77, v83[27]), v82, v83[28]); v89 = vextq_s8(v85, vextq_s8(v86, v85, 8u), 8u); v90 = vextq_s8(v87, vextq_s8(v88, v87, 8u), 8u); v85.n128_u64[1] = v86.n128_u64[0]; v87.n128_u64[1] = v88.n128_u64[0]; *v81 = vaddq_f32( vuzp1q_s32(v85, v87), vaddq_f32( vaddq_f32(vaddq_f32(vandq_s8(*v81, v11), vuzp2q_s32(v85, v87)), vuzp1q_s32(v89, v90)), vuzp2q_s32(v89, v90))); ++v81; v83 += 32; } while ( v84 ); } v91 = a6 & 3; if ( (a6 & 3) != 0 ) { do { --v91; v92 = v83[4]; v93 = vmlaq_f32(vmlaq_f32(vmlaq_f32(vmulq_f32(*v83, v78), v79, v83[1]), v80, v83[2]), v77, v83[3]); v83 += 8; v94 = vmlaq_f32(v93, v82, v92); v81->n128_f32[0] = vaddv_f32((float32x2_t)vpaddq_f32(v94, v94).n128_u64[0]) + COERCE_FLOAT(v81->n128_u32[0] & v8); v81 = (int8x16_t *)((char *)v81 + 4); } while ( v91 ); } goto LABEL_43; case 20: case 21: case 22: case 23: v95 = result[4]; v96 = *result; v97 = result[1]; v98 = result[2]; v99 = result[3]; v100 = a2; v101 = vandq_s8(result[5], v9); v102 = a4; v103 = a6 >> 2; if ( v12 ) { do { v104 = vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmlaq_f32(vmulq_f32(*v102, v96), v97, v102[1]), v98, v102[2]), v99, v102[3]), v95, v102[4]), v101, v102[5]); --v103; v105 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(v102[8], v96), v97, v102[9]), v98, v102[10]), v99, v102[11]), v95, v102[12]), v101, v102[13]); v106 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(v102[16], v96), v97, v102[17]), v98, v102[18]), v99, v102[19]), v95, v102[20]), v101, v102[21]); v107 = vextq_s8(v104, vextq_s8(v105, v104, 8u), 8u); v108 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(v102[24], v96), v97, v102[25]), v98, v102[26]), v99, v102[27]), v95, v102[28]), v101, v102[29]); v109 = vextq_s8(v106, vextq_s8(v108, v106, 8u), 8u); v104.n128_u64[1] = v105.n128_u64[0]; v106.n128_u64[1] = v108.n128_u64[0]; *v100 = vaddq_f32( vuzp1q_s32(v104, v106), vaddq_f32( vaddq_f32(vaddq_f32(vandq_s8(*v100, v11), vuzp2q_s32(v104, v106)), vuzp1q_s32(v107, v109)), vuzp2q_s32(v107, v109))); ++v100; v102 += 32; } while ( v103 ); } v110 = a6 & 3; if ( (a6 & 3) != 0 ) { do { --v110; v111 = vmlaq_f32(vmlaq_f32(vmlaq_f32(vmulq_f32(*v102, v96), v97, v102[1]), v98, v102[2]), v99, v102[3]); v113 = v102[4]; v112 = v102[5]; v102 += 8; v114 = vmlaq_f32(vmlaq_f32(v111, v95, v113), v101, v112); v100->n128_f32[0] = vaddv_f32((float32x2_t)vpaddq_f32(v114, v114).n128_u64[0]) + COERCE_FLOAT(v100->n128_u32[0] & v8); v100 = (int8x16_t *)((char *)v100 + 4); } while ( v110 ); } goto LABEL_43; case 24: case 25: case 26: case 27: v115 = result[5]; v116 = *result; v117 = result[1]; v118 = result[2]; v119 = result[3]; v120 = result[4]; v121 = vandq_s8(result[6], v9); v122 = a2; v123 = a4; v124 = a6 >> 2; if ( v12 ) { do { --v124; v125 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(*v123, v116), v117, v123[1]), v118, v123[2]), v119, v123[3]), v120, v123[4]), v115, v123[5]), v121, v123[6]); v126 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(v123[8], v116), v117, v123[9]), v118, v123[10]), v119, v123[11]), v120, v123[12]), v115, v123[13]), v121, v123[14]); v127 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(v123[16], v116), v117, v123[17]), v118, v123[18]), v119, v123[19]), v120, v123[20]), v115, v123[21]), v121, v123[22]); v128 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(v123[24], v116), v117, v123[25]), v118, v123[26]), v119, v123[27]), v120, v123[28]), v115, v123[29]), v121, v123[30]); v129 = vextq_s8(v125, vextq_s8(v126, v125, 8u), 8u); v130 = vextq_s8(v127, vextq_s8(v128, v127, 8u), 8u); v125.n128_u64[1] = v126.n128_u64[0]; v127.n128_u64[1] = v128.n128_u64[0]; *v122 = vaddq_f32( vuzp1q_s32(v125, v127), vaddq_f32( vaddq_f32(vaddq_f32(vandq_s8(*v122, v11), vuzp2q_s32(v125, v127)), vuzp1q_s32(v129, v130)), vuzp2q_s32(v129, v130))); ++v122; v123 += 32; } while ( v124 ); } v131 = a6 & 3; if ( (a6 & 3) != 0 ) { do { --v131; v132 = v123[6]; v133 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(*v123, v116), v117, v123[1]), v118, v123[2]), v119, v123[3]), v120, v123[4]), v115, v123[5]); v123 += 8; v134 = vmlaq_f32(v133, v121, v132); v122->n128_f32[0] = vaddv_f32((float32x2_t)vpaddq_f32(v134, v134).n128_u64[0]) + COERCE_FLOAT(v122->n128_u32[0] & v8); v122 = (int8x16_t *)((char *)v122 + 4); } while ( v131 ); } goto LABEL_43; case 28: case 29: case 30: case 31: v135 = result[6]; v136 = *result; v137 = result[1]; v138 = result[2]; v139 = result[3]; v140 = result[4]; v141 = result[5]; v142 = vandq_s8(result[7], v9); v143 = a2; v144 = a4; v145 = a6 >> 2; if ( v12 ) { do { --v145; v146 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(v144[24], v136), v137, v144[25]), v138, v144[26]), v139, v144[27]), v140, v144[28]), v141, v144[29]); v147 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(*v144, v136), v137, v144[1]), v138, v144[2]), v139, v144[3]), v140, v144[4]), v141, v144[5]), v135, v144[6]), v142, v144[7]); v148 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(v144[8], v136), v137, v144[9]), v138, v144[10]), v139, v144[11]), v140, v144[12]), v141, v144[13]), v135, v144[14]), v142, v144[15]); v149 = vextq_s8(v147, vextq_s8(v148, v147, 8u), 8u); v150 = v144[30]; v151 = v144[31]; v152 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(v144[16], v136), v137, v144[17]), v138, v144[18]), v139, v144[19]), v140, v144[20]), v141, v144[21]), v135, v144[22]), v142, v144[23]); v147.n128_u64[1] = v148.n128_u64[0]; v144 += 32; v153 = vmlaq_f32(vmlaq_f32(v146, v135, v150), v142, v151); v154 = vextq_s8(v152, vextq_s8(v153, v152, 8u), 8u); v152.n128_u64[1] = v153.n128_u64[0]; *v143 = vaddq_f32( vuzp1q_s32(v147, v152), vaddq_f32( vaddq_f32(vaddq_f32(vandq_s8(*v143, v11), vuzp2q_s32(v147, v152)), vuzp1q_s32(v149, v154)), vuzp2q_s32(v149, v154))); ++v143; } while ( v145 ); } v155 = a6 & 3; if ( (a6 & 3) != 0 ) { do { --v155; v156 = vmlaq_f32( vmlaq_f32( vmlaq_f32( vmlaq_f32(vmlaq_f32(vmulq_f32(*v144, v136), v137, v144[1]), v138, v144[2]), v139, v144[3]), v140, v144[4]), v141, v144[5]); v157 = v144[6]; v158 = v144[7]; v144 += 8; v159 = vmlaq_f32(vmlaq_f32(v156, v135, v157), v142, v158); v143->n128_f32[0] = vaddv_f32((float32x2_t)vpaddq_f32(v159, v159).n128_u64[0]) + COERCE_FLOAT(v143->n128_u32[0] & v8); v143 = (int8x16_t *)((char *)v143 + 4); } while ( v155 ); } LABEL_43: a2 = (int8x16_t *)((char *)a2 + 4 * a6); break; default: break; } result = (int8x16_t *)((char *)result + 4 * v13); ++v10; } return result; }