// // cocos2d::extension::CCControlSaturationBrightnessPicker::updateSliderPosition from 0x180009e50 to 0x18000a0f1 (673 bytes) // // 6 xrefs: // > cocos2d::extension::CCControlSaturationBrightnessPicker::updateDraggerWithHSV @ 0x180009e43 // > cocos2d::extension::CCControlSaturationBrightnessPicker::checkSliderPosition @ 0x18000a1e6 // > @ 0x18002dcf0 // > @ 0x18002dda4 // > @ 0x18002fdf8 // > @ 0x180049a8c // // 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 // int *__fastcall cocos2d::extension::CCControlSaturationBrightnessPicker::updateSliderPosition(__int64 a1, float *a2) { float v4; // xmm11_4 __int64 v5; // rax float v6; // xmm6_4 float v7; // xmm12_4 float v8; // xmm8_4 float v9; // xmm10_4 float v10; // xmm9_4 float v11; // xmm8_4 float v12; // xmm0_4 float *v13; // rcx float v14; // xmm4_4 int *result; // rax float v16; // xmm1_4 float v17; // xmm0_4 float v18; // xmm2_4 float v19; // xmm0_4 float v20; // xmm1_4 float v21; // xmm3_4 float v22; // xmm2_4 float v23; // xmm0_4 float v24; // xmm3_4 _BYTE v25[16]; // [rsp+20h] [rbp-98h] BYREF v4 = (float)(*(float *)(cocos2d::CCNode::boundingBox(*(_QWORD *)(a1 + 480), v25) + 8) * 0.5) + *(float *)(a1 + 512); v5 = cocos2d::CCNode::boundingBox(*(_QWORD *)(a1 + 480), v25); v6 = *a2 - v4; v7 = (float)(*(float *)(v5 + 12) * 0.5) + *(float *)(a1 + 516); v8 = a2[1] - v7; v9 = atan2f(v8, v6); v10 = *(float *)(cocos2d::CCNode::boundingBox(*(_QWORD *)(a1 + 480), v25) + 8) * 0.5; v11 = (float)(v8 * v8) + (float)(v6 * v6); if ( v11 < 0.0 ) v12 = sqrtf(v11); else v12 = fsqrt(v11); if ( v12 > v10 ) { *a2 = (float)(cosf(v9) * v10) + v4; a2[1] = (float)(sinf(v9) * v10) + v7; } (*(void (__fastcall **)(_QWORD, float *))(**(_QWORD **)(a1 + 504) + 184LL))(*(_QWORD *)(a1 + 504), a2); v13 = a2 + 1; v14 = *a2; result = (int *)(a1 + 524); v16 = (float)*(int *)(a1 + 520) + *(float *)(a1 + 512); if ( v16 <= *a2 ) { v17 = (float)((float)*result + v16) - 1.0; if ( v14 > v17 ) { *a2 = v17; v14 = v17; v13 = a2 + 1; } } else { *a2 = v16; v14 = v16; } v18 = a2[1]; v19 = (float)*(int *)(a1 + 520) + *(float *)(a1 + 516); if ( v19 <= v18 ) { v20 = (float)*result + v19; if ( v18 > v20 ) *v13 = v20; } else { *v13 = v19; } v21 = (float)*(int *)(a1 + 520); v22 = (float)*result; v23 = v21 + *(float *)(a1 + 512); v24 = v21 + *(float *)(a1 + 516); *(float *)(a1 + 472) = 1.0 - fabs((float)(v23 - v14) / v22); *(float *)(a1 + 476) = fabs((float)(v24 - *v13) / v22); return result; }