// // PLII_Encode from 0x105fc0 to 0x106ad0 (2832 bytes) // // 5 xrefs: // > Biquad_Filter @ 0x105fbc // > .PLII_Encode @ 0x107fcc // > @ 0x2f68 // > .PLII_Encode @ 0x107fc4 // > @ 0x1108a8 // // 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 // __int64 __fastcall PLII_Encode(__int64 a1, int a2) { float *v3; // x9 __int64 v4; // x10 int v5; // w3 float *v6; // x6 float *v7; // x7 __int16 v8; // w0 float *v9; // x4 __int64 v10; // x5 float *v11; // x20 int v12; // w28 float *v13; // x21 int v14; // w27 int v15; // w23 double v16; // d0 double v17; // d1 double v18; // d2 double v19; // d3 double v20; // d4 double v21; // d5 double v22; // d6 double v23; // d7 int v24; // s11 double v26; // d0 double v27; // d1 double v28; // d2 double v29; // d3 double v30; // d4 double v31; // d5 double v32; // d6 double v33; // d0 double v34; // d1 double v35; // d2 double v36; // d3 double v37; // d4 double v38; // d5 double v39; // d6 double v40; // d0 double v41; // d1 double v42; // d2 double v43; // d3 double v44; // d4 double v45; // d5 double v46; // d6 double v47; // d0 double v48; // d1 double v49; // d2 double v50; // d3 double v51; // d4 double v52; // d5 double v53; // d6 double v54; // d0 double v55; // d1 double v56; // d2 double v57; // d3 double v58; // d4 double v59; // d5 double v60; // d6 double v61; // d0 double v62; // d1 double v63; // d2 double v64; // d3 double v65; // d4 double v66; // d5 double v67; // d6 double v68; // d0 double v69; // d1 double v70; // d2 double v71; // d3 double v72; // d4 double v73; // d5 double v74; // d6 int v75; // w24 float *v76; // x22 double v77; // d0 double v78; // d1 double v79; // d2 double v80; // d3 double v81; // d4 double v82; // d5 double v83; // d6 double v84; // d0 double v85; // d1 double v86; // d2 double v87; // d3 double v88; // d4 double v89; // d5 double v90; // d6 double v91; // d0 double v92; // d1 double v93; // d2 double v94; // d3 double v95; // d4 double v96; // d5 double v97; // d6 double v98; // d0 double v99; // d1 double v100; // d2 double v101; // d3 double v102; // d4 double v103; // d5 double v104; // d6 int v105; // w25 float *v106; // x19 double v107; // d0 double v108; // d1 double v109; // d2 double v110; // d3 double v111; // d4 double v112; // d5 double v113; // d6 double v114; // d0 double v115; // d1 double v116; // d2 double v117; // d3 double v118; // d4 double v119; // d5 double v120; // d6 double v121; // d0 double v122; // d1 double v123; // d2 double v124; // d3 double v125; // d4 double v126; // d5 double v127; // d6 double v128; // d0 double v129; // d1 double v130; // d2 double v131; // d3 double v132; // d4 double v133; // d5 double v134; // d6 double v135; // d0 double v136; // d1 double v137; // d2 double v138; // d3 double v139; // d4 double v140; // d5 double v141; // d6 int v142; // w8 float *v143; // x26 double v144; // d0 double v145; // d1 double v146; // d2 double v147; // d3 double v148; // d4 double v149; // d5 double v150; // d6 double v151; // d0 double v152; // d1 double v153; // d2 double v154; // d3 double v155; // d4 double v156; // d5 double v157; // d6 double v158; // d0 double v159; // d1 double v160; // d2 double v161; // d3 double v162; // d4 double v163; // d5 double v164; // d6 __int64 v165; // x28 __int64 v166; // d14 __int64 v167; // x27 int v168; // w24 __int64 v169; // d12 int v170; // w0 int v171; // w1 double v172; // d0 double v173; // d1 double v174; // d2 double v175; // d3 double v176; // d4 double v177; // d5 double v178; // d6 double v179; // d7 double v180; // d0 double v181; // d1 double v182; // d2 double v183; // d3 double v184; // d4 double v185; // d5 double v186; // d6 double v187; // d0 double v188; // d1 double v189; // d2 double v190; // d3 double v191; // d4 double v192; // d5 double v193; // d6 double v194; // d0 double v195; // d1 double v196; // d2 double v197; // d3 double v198; // d4 double v199; // d5 double v200; // d6 double v201; // d0 double v202; // d1 double v203; // d2 double v204; // d3 double v205; // d4 double v206; // d5 double v207; // d6 double v208; // d0 double v209; // d1 double v210; // d2 double v211; // d3 double v212; // d4 double v213; // d5 double v214; // d6 double v215; // d7 double v216; // d0 double v217; // d1 double v218; // d2 double v219; // d3 double v220; // d4 double v221; // d5 double v222; // d6 double v223; // d7 double v224; // d0 double v225; // d1 double v226; // d2 double v227; // d3 double v228; // d4 double v229; // d5 double v230; // d6 double v231; // d0 double v232; // d1 double v233; // d2 double v234; // d3 double v235; // d4 double v236; // d5 double v237; // d6 double v238; // d0 double v239; // d1 double v240; // d2 double v241; // d3 double v242; // d4 double v243; // d5 double v244; // d6 double v245; // d0 double v246; // d1 double v247; // d2 double v248; // d3 double v249; // d4 double v250; // d5 double v251; // d6 double v252; // d0 double v253; // d1 double v254; // d2 double v255; // d3 double v256; // d4 double v257; // d5 double v258; // d6 double v259; // d7 double v260; // d0 double v261; // d1 double v262; // d2 double v263; // d3 double v264; // d4 double v265; // d5 double v266; // d6 double v267; // d7 double v268; // d0 double v269; // d1 double v270; // d2 double v271; // d3 double v272; // d4 double v273; // d5 double v274; // d6 double v275; // d0 double v276; // d1 double v277; // d2 double v278; // d3 double v279; // d4 double v280; // d5 double v281; // d6 double v282; // d0 double v283; // d1 double v284; // d2 double v285; // d3 double v286; // d4 double v287; // d5 double v288; // d6 double v289; // d0 double v290; // d1 double v291; // d2 double v292; // d3 double v293; // d4 double v294; // d5 double v295; // d6 double v296; // d0 double v297; // d1 double v298; // d2 double v299; // d3 double v300; // d4 double v301; // d5 double v302; // d6 double v303; // d7 double v304; // d0 double v305; // d1 double v306; // d2 double v307; // d3 double v308; // d4 double v309; // d5 double v310; // d6 double v311; // d7 double v312; // d0 double v313; // d1 double v314; // d2 double v315; // d3 double v316; // d4 double v317; // d5 double v318; // d6 double v319; // d7 double v320; // d0 double v321; // d1 double v322; // d2 double v323; // d3 double v324; // d4 double v325; // d5 double v326; // d6 double v327; // d7 double v328; // d0 double v329; // d1 double v330; // d2 double v331; // d3 double v332; // d4 double v333; // d5 double v334; // d6 double v335; // d0 double v336; // d1 double v337; // d2 double v338; // d3 double v339; // d4 double v340; // d5 double v341; // d6 double v342; // d0 double v343; // d1 double v344; // d2 double v345; // d3 double v346; // d4 double v347; // d5 double v348; // d6 double v349; // d0 double v350; // d1 double v351; // d2 double v352; // d3 double v353; // d4 double v354; // d5 double v355; // d6 double v356; // d0 double v357; // d1 double v358; // d2 double v359; // d3 double v360; // d4 double v361; // d5 double v362; // d6 double v363; // d7 double v364; // d0 double v365; // d1 double v366; // d2 double v367; // d3 double v368; // d4 double v369; // d5 double v370; // d6 double v371; // d7 double v372; // d0 double v373; // d1 double v374; // d2 double v375; // d3 double v376; // d4 double v377; // d5 double v378; // d6 double v379; // d7 double v380; // d0 double v381; // d1 double v382; // d2 double v383; // d3 double v384; // d4 double v385; // d5 double v386; // d6 double v387; // d7 int v389; // [xsp+C8h] [xbp+C8h] int v390; // [xsp+C8h] [xbp+C8h] float v391; // [xsp+D8h] [xbp+D8h] BYREF float v392; // [xsp+DCh] [xbp+DCh] BYREF __int64 v393; // [xsp+E0h] [xbp+E0h] int v394; // [xsp+E8h] [xbp+E8h] float *v395; // [xsp+F0h] [xbp+F0h] float *v396; // [xsp+F8h] [xbp+F8h] float *v397; // [xsp+100h] [xbp+100h] float *v398; // [xsp+108h] [xbp+108h] float *v399; // [xsp+110h] [xbp+110h] __int64 v400; // [xsp+118h] [xbp+118h] v3 = *(float **)(a1 + 8); v4 = *(_QWORD *)(a1 + 48); v5 = *(_DWORD *)(a1 + 56); v6 = *(float **)(a1 + 16); v7 = *(float **)(a1 + 24); v395 = *(float **)a1; v396 = v3; v397 = v6; v398 = v7; v8 = *(_WORD *)(a1 + 84); v9 = *(float **)(a1 + 32); v10 = *(_QWORD *)(a1 + 40); v393 = v4; v399 = v9; v400 = v10; v394 = v5; v11 = *(float **)(a1 + 64); v12 = *(__int16 *)(a1 + 80); v13 = *(float **)(a1 + 72); v14 = *(__int16 *)(a1 + 82); v15 = *(__int16 *)(a1 + 86); v24 = PLII_Encode_Init(v8); if ( v24 <= 0 ) { if ( a2 ) { Pole_Zero_Filter_Phase( v395, v393, v11, v12, (_DWORD *)p_MainPhase1Coeffs, (float *)&MainPhase1Vars_L, v15, v16, v17, v18, v19, v20, v21, v22); Pole_Zero_Filter_Phase( v11, v12, v11, v12, (_DWORD *)p_MainPhase2Coeffs, (float *)&MainPhase2Vars_L, v15, v26, v27, v28, v29, v30, v31, v32); Pole_Zero_Filter_Phase( v11, v12, v11, v12, (_DWORD *)p_MainPhase3Coeffs, (float *)&MainPhase3Vars_L, v15, v33, v34, v35, v36, v37, v38, v39); Pole_Zero_Filter_Phase( v11, v12, v11, v12, (_DWORD *)p_MainPhase4Coeffs, (float *)&MainPhase4Vars_L, v15, v40, v41, v42, v43, v44, v45, v46); Pole_Zero_Filter_Phase( v397, SWORD2(v393), v13, v14, (_DWORD *)p_MainPhase1Coeffs, (float *)&MainPhase1Vars_R, v15, v47, v48, v49, v50, v51, v52, v53); Pole_Zero_Filter_Phase( v13, v14, v13, v14, (_DWORD *)p_MainPhase2Coeffs, (float *)&MainPhase2Vars_R, v15, v54, v55, v56, v57, v58, v59, v60); Pole_Zero_Filter_Phase( v13, v14, v13, v14, (_DWORD *)p_MainPhase3Coeffs, (float *)&MainPhase3Vars_R, v15, v61, v62, v63, v64, v65, v66, v67); Pole_Zero_Filter_Phase( v13, v14, v13, v14, (_DWORD *)p_MainPhase4Coeffs, (float *)&MainPhase4Vars_R, v15, v68, v69, v70, v71, v72, v73, v74); v75 = SWORD1(v393); v76 = v396; Pole_Zero_Filter_Phase( v76, SWORD1(v393), v76, SWORD1(v393), (_DWORD *)p_MainPhase1Coeffs, (float *)&MainPhase1Vars_C, v15, v77, v78, v79, v80, v81, v82, v83); Pole_Zero_Filter_Phase( v76, v75, v76, v75, (_DWORD *)p_MainPhase2Coeffs, (float *)&MainPhase2Vars_C, v15, v84, v85, v86, v87, v88, v89, v90); Pole_Zero_Filter_Phase( v76, v75, v76, v75, (_DWORD *)p_MainPhase3Coeffs, (float *)&MainPhase3Vars_C, v15, v91, v92, v93, v94, v95, v96, v97); Pole_Zero_Filter_Phase( v76, v75, v76, v75, (_DWORD *)p_MainPhase4Coeffs, (float *)&MainPhase4Vars_C, v15, v98, v99, v100, v101, v102, v103, v104); v105 = SHIWORD(v393); v106 = v398; Pole_Zero_Filter_Phase( v398, SHIWORD(v393), v398, SHIWORD(v393), (_DWORD *)p_SurrPhase1Coeffs, (float *)&SurrPhase1Vars_Ls, v15, v107, v108, v109, v110, v111, v112, v113); Pole_Zero_Filter_Phase( v106, v105, v106, v105, (_DWORD *)p_SurrPhase2Coeffs, (float *)&SurrPhase2Vars_Ls, v15, v114, v115, v116, v117, v118, v119, v120); Pole_Zero_Filter_Phase( v106, v105, v106, v105, (_DWORD *)p_SurrPhase3Coeffs, (float *)&SurrPhase3Vars_Ls, v15, v121, v122, v123, v124, v125, v126, v127); Pole_Zero_Filter_Phase( v106, v105, v106, v105, (_DWORD *)p_SurrPhase4Coeffs, (float *)&SurrPhase4Vars_Ls, v15, v128, v129, v130, v131, v132, v133, v134); v142 = (__int16)v394; v143 = v399; } else { Pole_Zero_Filter( v395, v393, v11, v12, p_MainHPFCoeffs, (float *)&MainHPFVars_L, v15, v16, v17, v18, v19, v20, v21, v22, v23); Biquad_Filter( v11, v12, v11, v12, p_MainLPFCoeffs, (float *)&MainLPFVars_L, v15, v172, v173, v174, v175, v176, v177, v178, v179); Pole_Zero_Filter_Phase( v11, v12, v11, v12, (_DWORD *)p_MainPhase1Coeffs, (float *)&MainPhase1Vars_L, v15, v180, v181, v182, v183, v184, v185, v186); Pole_Zero_Filter_Phase( v11, v12, v11, v12, (_DWORD *)p_MainPhase2Coeffs, (float *)&MainPhase2Vars_L, v15, v187, v188, v189, v190, v191, v192, v193); Pole_Zero_Filter_Phase( v11, v12, v11, v12, (_DWORD *)p_MainPhase3Coeffs, (float *)&MainPhase3Vars_L, v15, v194, v195, v196, v197, v198, v199, v200); Pole_Zero_Filter_Phase( v11, v12, v11, v12, (_DWORD *)p_MainPhase4Coeffs, (float *)&MainPhase4Vars_L, v15, v201, v202, v203, v204, v205, v206, v207); Pole_Zero_Filter( v397, SWORD2(v393), v13, v14, p_MainHPFCoeffs, (float *)&MainHPFVars_R, v15, v208, v209, v210, v211, v212, v213, v214, v215); Biquad_Filter( v13, v14, v13, v14, p_MainLPFCoeffs, (float *)&MainLPFVars_R, v15, v216, v217, v218, v219, v220, v221, v222, v223); Pole_Zero_Filter_Phase( v13, v14, v13, v14, (_DWORD *)p_MainPhase1Coeffs, (float *)&MainPhase1Vars_R, v15, v224, v225, v226, v227, v228, v229, v230); Pole_Zero_Filter_Phase( v13, v14, v13, v14, (_DWORD *)p_MainPhase2Coeffs, (float *)&MainPhase2Vars_R, v15, v231, v232, v233, v234, v235, v236, v237); Pole_Zero_Filter_Phase( v13, v14, v13, v14, (_DWORD *)p_MainPhase3Coeffs, (float *)&MainPhase3Vars_R, v15, v238, v239, v240, v241, v242, v243, v244); Pole_Zero_Filter_Phase( v13, v14, v13, v14, (_DWORD *)p_MainPhase4Coeffs, (float *)&MainPhase4Vars_R, v15, v245, v246, v247, v248, v249, v250, v251); v75 = SWORD1(v393); v76 = v396; Pole_Zero_Filter( v76, SWORD1(v393), v76, SWORD1(v393), p_MainHPFCoeffs, (float *)&MainHPFVars_C, v15, v252, v253, v254, v255, v256, v257, v258, v259); Biquad_Filter( v76, v75, v76, v75, p_MainLPFCoeffs, (float *)&MainLPFVars_C, v15, v260, v261, v262, v263, v264, v265, v266, v267); Pole_Zero_Filter_Phase( v76, v75, v76, v75, (_DWORD *)p_MainPhase1Coeffs, (float *)&MainPhase1Vars_C, v15, v268, v269, v270, v271, v272, v273, v274); Pole_Zero_Filter_Phase( v76, v75, v76, v75, (_DWORD *)p_MainPhase2Coeffs, (float *)&MainPhase2Vars_C, v15, v275, v276, v277, v278, v279, v280, v281); Pole_Zero_Filter_Phase( v76, v75, v76, v75, (_DWORD *)p_MainPhase3Coeffs, (float *)&MainPhase3Vars_C, v15, v282, v283, v284, v285, v286, v287, v288); Pole_Zero_Filter_Phase( v76, v75, v76, v75, (_DWORD *)p_MainPhase4Coeffs, (float *)&MainPhase4Vars_C, v15, v289, v290, v291, v292, v293, v294, v295); v105 = SHIWORD(v393); v106 = v398; Pole_Zero_Filter( v398, SHIWORD(v393), v398, SHIWORD(v393), p_SurrHPFCoeffs, (float *)&SurrHPF1Vars_Ls, v15, v296, v297, v298, v299, v300, v301, v302, v303); Pole_Zero_Filter( v106, v105, v106, v105, p_SurrHPFCoeffs, (float *)&SurrHPF2Vars_Ls, v15, v304, v305, v306, v307, v308, v309, v310, v311); Biquad_Filter( v106, v105, v106, v105, p_SurrLPFCoeffs, (float *)&SurrLPF1Vars_Ls, v15, v312, v313, v314, v315, v316, v317, v318, v319); Biquad_Filter( v106, v105, v106, v105, p_SurrLPFCoeffs, (float *)&SurrLPF2Vars_Ls, v15, v320, v321, v322, v323, v324, v325, v326, v327); Pole_Zero_Filter_Phase( v106, v105, v106, v105, (_DWORD *)p_SurrPhase1Coeffs, (float *)&SurrPhase1Vars_Ls, v15, v328, v329, v330, v331, v332, v333, v334); Pole_Zero_Filter_Phase( v106, v105, v106, v105, (_DWORD *)p_SurrPhase2Coeffs, (float *)&SurrPhase2Vars_Ls, v15, v335, v336, v337, v338, v339, v340, v341); Pole_Zero_Filter_Phase( v106, v105, v106, v105, (_DWORD *)p_SurrPhase3Coeffs, (float *)&SurrPhase3Vars_Ls, v15, v342, v343, v344, v345, v346, v347, v348); Pole_Zero_Filter_Phase( v106, v105, v106, v105, (_DWORD *)p_SurrPhase4Coeffs, (float *)&SurrPhase4Vars_Ls, v15, v349, v350, v351, v352, v353, v354, v355); v143 = v399; Pole_Zero_Filter( v143, v394, v143, v394, p_SurrHPFCoeffs, (float *)&SurrHPF1Vars_Rs, v15, v356, v357, v358, v359, v360, v361, v362, v363); Pole_Zero_Filter( v143, v394, v143, v394, p_SurrHPFCoeffs, (float *)&SurrHPF2Vars_Rs, v15, v364, v365, v366, v367, v368, v369, v370, v371); Biquad_Filter( v143, v394, v143, v394, p_SurrLPFCoeffs, (float *)&SurrLPF1Vars_Rs, v15, v372, v373, v374, v375, v376, v377, v378, v379); Biquad_Filter( v143, v394, v143, v394, p_SurrLPFCoeffs, (float *)&SurrLPF2Vars_Rs, v15, v380, v381, v382, v383, v384, v385, v386, v387); v142 = (__int16)v394; } v389 = v142; Pole_Zero_Filter_Phase( v143, v142, v143, v142, (_DWORD *)p_SurrPhase1Coeffs, (float *)&SurrPhase1Vars_Rs, v15, v135, v136, v137, v138, v139, v140, v141); Pole_Zero_Filter_Phase( v143, v389, v143, v389, (_DWORD *)p_SurrPhase2Coeffs, (float *)&SurrPhase2Vars_Rs, v15, v144, v145, v146, v147, v148, v149, v150); Pole_Zero_Filter_Phase( v143, v389, v143, v389, (_DWORD *)p_SurrPhase3Coeffs, (float *)&SurrPhase3Vars_Rs, v15, v151, v152, v153, v154, v155, v156, v157); Pole_Zero_Filter_Phase( v143, v389, v143, v389, (_DWORD *)p_SurrPhase4Coeffs, (float *)&SurrPhase4Vars_Rs, v15, v158, v159, v160, v161, v162, v163, v164); if ( v15 ) { v165 = 4LL * v12; v166 = 4LL * v75; v167 = 4LL * v14; v168 = 0; v169 = 4LL * v389; do { v391 = *v11; v392 = *v13; v391 = v391 + (float)(*v76 * 0.70711); v392 = v392 + (float)(*v76 * 0.70711); v391 = v391 - (float)(*v106 * 0.87096); v392 = v392 + (float)(*v106 * 0.48978); v391 = v391 - (float)(*v143 * 0.48978); v392 = v392 + (float)(*v143 * 0.87096); v171 = DSP_Saturate(&v391); if ( v24 ) { DSP_Saturate(&v392); } else { v390 = v171; v170 = DSP_Saturate(&v392); if ( v390 ) v170 = v390; v24 = v170; } ++v168; v76 = (float *)((char *)v76 + v166); v106 += v105; v143 = (float *)((char *)v143 + v169); *v11 = v391; v11 = (float *)((char *)v11 + v165); *v13 = v392; v13 = (float *)((char *)v13 + v167); } while ( v15 != v168 ); } } return (unsigned int)v24; }