{"type": "func", "start": 6442491472, "end": 6442492145, "name": "cocos2d::extension::CCControlSaturationBrightnessPicker::updateSliderPosition", "pseudocode": "// \n// cocos2d::extension::CCControlSaturationBrightnessPicker::updateSliderPosition from 0x180009e50 to 0x18000a0f1 (673 bytes)\n// \n// 6 xrefs:\n// > cocos2d::extension::CCControlSaturationBrightnessPicker::updateDraggerWithHSV @ 0x180009e43\n// > cocos2d::extension::CCControlSaturationBrightnessPicker::checkSliderPosition @ 0x18000a1e6\n// > <???> @ 0x18002dcf0\n// > <???> @ 0x18002dda4\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x180049a8c\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\nint *__fastcall cocos2d::extension::CCControlSaturationBrightnessPicker::updateSliderPosition(__int64 a1, float *a2)\n{\n  float v4; // xmm11_4\n  __int64 v5; // rax\n  float v6; // xmm6_4\n  float v7; // xmm12_4\n  float v8; // xmm8_4\n  float v9; // xmm10_4\n  float v10; // xmm9_4\n  float v11; // xmm8_4\n  float v12; // xmm0_4\n  float *v13; // rcx\n  float v14; // xmm4_4\n  int *result; // rax\n  float v16; // xmm1_4\n  float v17; // xmm0_4\n  float v18; // xmm2_4\n  float v19; // xmm0_4\n  float v20; // xmm1_4\n  float v21; // xmm3_4\n  float v22; // xmm2_4\n  float v23; // xmm0_4\n  float v24; // xmm3_4\n  _BYTE v25[16]; // [rsp+20h] [rbp-98h] BYREF\n\n  v4 = (float)(*(float *)(cocos2d::CCNode::boundingBox(*(_QWORD *)(a1 + 480), v25) + 8) * 0.5) + *(float *)(a1 + 512);\n  v5 = cocos2d::CCNode::boundingBox(*(_QWORD *)(a1 + 480), v25);\n  v6 = *a2 - v4;\n  v7 = (float)(*(float *)(v5 + 12) * 0.5) + *(float *)(a1 + 516);\n  v8 = a2[1] - v7;\n  v9 = atan2f(v8, v6);\n  v10 = *(float *)(cocos2d::CCNode::boundingBox(*(_QWORD *)(a1 + 480), v25) + 8) * 0.5;\n  v11 = (float)(v8 * v8) + (float)(v6 * v6);\n  if ( v11 < 0.0 )\n    v12 = sqrtf(v11);\n  else\n    v12 = fsqrt(v11);\n  if ( v12 > v10 )\n  {\n    *a2 = (float)(cosf(v9) * v10) + v4;\n    a2[1] = (float)(sinf(v9) * v10) + v7;\n  }\n  (*(void (__fastcall **)(_QWORD, float *))(**(_QWORD **)(a1 + 504) + 184LL))(*(_QWORD *)(a1 + 504), a2);\n  v13 = a2 + 1;\n  v14 = *a2;\n  result = (int *)(a1 + 524);\n  v16 = (float)*(int *)(a1 + 520) + *(float *)(a1 + 512);\n  if ( v16 <= *a2 )\n  {\n    v17 = (float)((float)*result + v16) - 1.0;\n    if ( v14 > v17 )\n    {\n      *a2 = v17;\n      v14 = v17;\n      v13 = a2 + 1;\n    }\n  }\n  else\n  {\n    *a2 = v16;\n    v14 = v16;\n  }\n  v18 = a2[1];\n  v19 = (float)*(int *)(a1 + 520) + *(float *)(a1 + 516);\n  if ( v19 <= v18 )\n  {\n    v20 = (float)*result + v19;\n    if ( v18 > v20 )\n      *v13 = v20;\n  }\n  else\n  {\n    *v13 = v19;\n  }\n  v21 = (float)*(int *)(a1 + 520);\n  v22 = (float)*result;\n  v23 = v21 + *(float *)(a1 + 512);\n  v24 = v21 + *(float *)(a1 + 516);\n  *(float *)(a1 + 472) = 1.0 - fabs((float)(v23 - v14) / v22);\n  *(float *)(a1 + 476) = fabs((float)(v24 - *v13) / v22);\n  return result;\n}", "assembly": "; \n; cocos2d::extension::CCControlSaturationBrightnessPicker::updateSliderPosition from 0x180009e50 to 0x18000a0f1 (673 bytes)\n; \n; 6 xrefs:\n; > cocos2d::extension::CCControlSaturationBrightnessPicker::updateDraggerWithHSV @ 0x180009e43\n; > cocos2d::extension::CCControlSaturationBrightnessPicker::checkSliderPosition @ 0x18000a1e6\n; > <???> @ 0x18002dcf0\n; > <???> @ 0x18002dda4\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x180049a8c\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\nmov     rax, rsp                                                       ; +0x0, 0x180009e50\npush    rbx                                                            ; +0x3, 0x180009e53\npush    r14                                                            ; +0x4, 0x180009e54\npush    r15                                                            ; +0x6, 0x180009e56\nsub     rsp, 0A0h                                                      ; +0x8, 0x180009e58\nmov     [rax+10h], rsi                                                 ; +0xf, 0x180009e5f\nmov     rbx, rcx                                                       ; +0x13, 0x180009e63\nmov     rcx, [rcx+1E0h]                                                ; +0x16, 0x180009e66\nmov     [rax+18h], rdi                                                 ; +0x1d, 0x180009e6d\nmov     rdi, rdx                                                       ; +0x21, 0x180009e71\nmov     [rax-20h], r12                                                 ; +0x24, 0x180009e74\nlea     rdx, [rsp+0B8h+var_98]                                         ; +0x28, 0x180009e78\nmov     [rax-28h], r13                                                 ; +0x2d, 0x180009e7d\nmovaps  xmmword ptr [rax-38h], xmm6                                    ; +0x31, 0x180009e81\nmovaps  xmmword ptr [rax-48h], xmm8                                    ; +0x35, 0x180009e85\nmovaps  xmmword ptr [rax-58h], xmm9                                    ; +0x3a, 0x180009e8a\nmovaps  xmmword ptr [rax-68h], xmm10                                   ; +0x3f, 0x180009e8f\nmovaps  xmmword ptr [rax-78h], xmm11                                   ; +0x44, 0x180009e94\nmovaps  [rsp+0B8h+var_88], xmm12                                       ; +0x49, 0x180009e99\ncall    cs:?boundingBox@CCNode@cocos2d@@QEAA?AVCCRect@2@XZ; cocos2d::CCNode::boundingBox(void) ; +0x4f, 0x180009e9f\nmov     rcx, [rbx+1E0h]                                                ; +0x55, 0x180009ea5\nlea     rdx, [rsp+0B8h+var_98]                                         ; +0x5c, 0x180009eac\nmovss   xmm11, dword ptr [rax+8]                                       ; +0x61, 0x180009eb1\nmulss   xmm11, cs:dword_180029510                                      ; +0x67, 0x180009eb7\naddss   xmm11, dword ptr [rbx+200h]                                    ; +0x70, 0x180009ec0\ncall    cs:?boundingBox@CCNode@cocos2d@@QEAA?AVCCRect@2@XZ; cocos2d::CCNode::boundingBox(void) ; +0x79, 0x180009ec9\nmovss   xmm6, dword ptr [rdi]                                          ; +0x7f, 0x180009ecf\nmovss   xmm8, dword ptr [rdi+4]                                        ; +0x83, 0x180009ed3\nsubss   xmm6, xmm11                                                    ; +0x89, 0x180009ed9\nmovss   xmm12, dword ptr [rax+0Ch]                                     ; +0x8e, 0x180009ede\nmulss   xmm12, cs:dword_180029510                                      ; +0x94, 0x180009ee4\nmovaps  xmm1, xmm6; X                                                  ; +0x9d, 0x180009eed\naddss   xmm12, dword ptr [rbx+204h]                                    ; +0xa0, 0x180009ef0\nsubss   xmm8, xmm12                                                    ; +0xa9, 0x180009ef9\nmovaps  xmm0, xmm8; Y                                                  ; +0xae, 0x180009efe\ncall    atan2f                                                         ; +0xb2, 0x180009f02\nmov     rcx, [rbx+1E0h]                                                ; +0xb7, 0x180009f07\nlea     rdx, [rsp+0B8h+var_98]                                         ; +0xbe, 0x180009f0e\nmovaps  xmm10, xmm0                                                    ; +0xc3, 0x180009f13\ncall    cs:?boundingBox@CCNode@cocos2d@@QEAA?AVCCRect@2@XZ; cocos2d::CCNode::boundingBox(void) ; +0xc7, 0x180009f17\nmulss   xmm6, xmm6                                                     ; +0xcd, 0x180009f1d\nxorps   xmm0, xmm0                                                     ; +0xd1, 0x180009f21\nmulss   xmm8, xmm8                                                     ; +0xd4, 0x180009f24\nmovss   xmm9, dword ptr [rax+8]                                        ; +0xd9, 0x180009f29\nmulss   xmm9, cs:dword_180029510                                       ; +0xdf, 0x180009f2f\naddss   xmm8, xmm6                                                     ; +0xe8, 0x180009f38\nmovaps  xmm6, [rsp+0B8h+var_38]                                        ; +0xed, 0x180009f3d\nucomiss xmm0, xmm8                                                     ; +0xf5, 0x180009f45\nja      short loc_180009F55                                            ; +0xf9, 0x180009f49\nxorps   xmm0, xmm0                                                     ; +0xfb, 0x180009f4b\nsqrtss  xmm0, xmm8                                                     ; +0xfe, 0x180009f4e\njmp     short loc_180009F5E                                            ; +0x103, 0x180009f53\nmovaps  xmm0, xmm8; X                                                  ; +0x105, 0x180009f55\ncall    sqrtf                                                          ; +0x109, 0x180009f59\ncomiss  xmm0, xmm9                                                     ; +0x10e, 0x180009f5e\nmov     [rsp+0B8h+arg_0], rbp                                          ; +0x112, 0x180009f62\nmovaps  xmm8, [rsp+0B8h+var_48]                                        ; +0x11a, 0x180009f6a\njbe     short loc_180009FA1                                            ; +0x120, 0x180009f70\nmovaps  xmm0, xmm10; X                                                 ; +0x122, 0x180009f72\ncall    cosf                                                           ; +0x126, 0x180009f76\nmulss   xmm0, xmm9                                                     ; +0x12b, 0x180009f7b\naddss   xmm0, xmm11                                                    ; +0x130, 0x180009f80\nmovss   dword ptr [rdi], xmm0                                          ; +0x135, 0x180009f85\nmovaps  xmm0, xmm10; X                                                 ; +0x139, 0x180009f89\ncall    sinf                                                           ; +0x13d, 0x180009f8d\nmulss   xmm0, xmm9                                                     ; +0x142, 0x180009f92\naddss   xmm0, xmm12                                                    ; +0x147, 0x180009f97\nmovss   dword ptr [rdi+4], xmm0                                        ; +0x14c, 0x180009f9c\nmov     rcx, [rbx+1F8h]                                                ; +0x151, 0x180009fa1\nlea     r15, [rbx+204h]                                                ; +0x158, 0x180009fa8\nmov     rdx, rdi                                                       ; +0x15f, 0x180009faf\nlea     r14, [rbx+200h]                                                ; +0x162, 0x180009fb2\nlea     rbp, [rdi+4]                                                   ; +0x169, 0x180009fb9\nmov     rax, [rcx]                                                     ; +0x16d, 0x180009fbd\ncall    qword ptr [rax+0B8h]                                           ; +0x170, 0x180009fc0\nmovd    xmm1, dword ptr [rbx+208h]                                     ; +0x176, 0x180009fc6\nlea     rcx, [rdi+4]                                                   ; +0x17e, 0x180009fce\nmovss   xmm4, dword ptr [rdi]                                          ; +0x182, 0x180009fd2\nlea     rax, [rbx+20Ch]                                                ; +0x186, 0x180009fd6\nmovss   xmm5, cs:dword_180029518                                       ; +0x18d, 0x180009fdd\nmovaps  xmm12, [rsp+0B8h+var_88]                                       ; +0x195, 0x180009fe5\nmovaps  xmm11, [rsp+0B8h+var_78]                                       ; +0x19b, 0x180009feb\nmovaps  xmm10, [rsp+0B8h+var_68]                                       ; +0x1a1, 0x180009ff1\nmovaps  xmm9, [rsp+0B8h+var_58]                                        ; +0x1a7, 0x180009ff7\nmov     r12, [rsp+0B8h+var_20]                                         ; +0x1ad, 0x180009ffd\ncvtdq2ps xmm1, xmm1                                                    ; +0x1b5, 0x18000a005\naddss   xmm1, dword ptr [rbx+200h]                                     ; +0x1b8, 0x18000a008\ncomiss  xmm1, xmm4                                                     ; +0x1c0, 0x18000a010\njbe     short loc_18000A01E                                            ; +0x1c3, 0x18000a013\nmovss   dword ptr [rdi], xmm1                                          ; +0x1c5, 0x18000a015\nmovaps  xmm4, xmm1                                                     ; +0x1c9, 0x18000a019\njmp     short loc_18000A03C                                            ; +0x1cc, 0x18000a01c\nmovd    xmm0, dword ptr [rax]                                          ; +0x1ce, 0x18000a01e\ncvtdq2ps xmm0, xmm0                                                    ; +0x1d2, 0x18000a022\naddss   xmm0, xmm1                                                     ; +0x1d5, 0x18000a025\nsubss   xmm0, xmm5                                                     ; +0x1d9, 0x18000a029\ncomiss  xmm4, xmm0                                                     ; +0x1dd, 0x18000a02d\njbe     short loc_18000A03C                                            ; +0x1e0, 0x18000a030\nmovss   dword ptr [rdi], xmm0                                          ; +0x1e2, 0x18000a032\nmovaps  xmm4, xmm0                                                     ; +0x1e6, 0x18000a036\nmov     rcx, rbp                                                       ; +0x1e9, 0x18000a039\nmovss   xmm2, dword ptr [rdi+4]                                        ; +0x1ec, 0x18000a03c\nmovd    xmm0, dword ptr [rbx+208h]                                     ; +0x1f1, 0x18000a041\nmov     r13, [rsp+0B8h+var_28]                                         ; +0x1f9, 0x18000a049\nmov     rdi, [rsp+0B8h+arg_10]                                         ; +0x201, 0x18000a051\nmov     rsi, [rsp+0B8h+arg_8]                                          ; +0x209, 0x18000a059\nmov     rbp, [rsp+0B8h+arg_0]                                          ; +0x211, 0x18000a061\ncvtdq2ps xmm0, xmm0                                                    ; +0x219, 0x18000a069\naddss   xmm0, dword ptr [rbx+204h]                                     ; +0x21c, 0x18000a06c\ncomiss  xmm0, xmm2                                                     ; +0x224, 0x18000a074\njbe     short loc_18000A07F                                            ; +0x227, 0x18000a077\nmovss   dword ptr [rcx], xmm0                                          ; +0x229, 0x18000a079\njmp     short loc_18000A093                                            ; +0x22d, 0x18000a07d\nmovd    xmm1, dword ptr [rax]                                          ; +0x22f, 0x18000a07f\ncvtdq2ps xmm1, xmm1                                                    ; +0x233, 0x18000a083\naddss   xmm1, xmm0                                                     ; +0x236, 0x18000a086\ncomiss  xmm2, xmm1                                                     ; +0x23a, 0x18000a08a\njbe     short loc_18000A093                                            ; +0x23d, 0x18000a08d\nmovss   dword ptr [rcx], xmm1                                          ; +0x23f, 0x18000a08f\nxorps   xmm3, xmm3                                                     ; +0x243, 0x18000a093\nxorps   xmm2, xmm2                                                     ; +0x246, 0x18000a096\ncvtsi2ss xmm3, dword ptr [rbx+208h]                                    ; +0x249, 0x18000a099\ncvtsi2ss xmm2, dword ptr [rax]                                         ; +0x251, 0x18000a0a1\nmovaps  xmm0, xmm3                                                     ; +0x255, 0x18000a0a5\naddss   xmm0, dword ptr [r14]                                          ; +0x258, 0x18000a0a8\naddss   xmm3, dword ptr [r15]                                          ; +0x25d, 0x18000a0ad\nsubss   xmm0, xmm4                                                     ; +0x262, 0x18000a0b2\ndivss   xmm0, xmm2                                                     ; +0x266, 0x18000a0b6\nandps   xmm0, cs:xmmword_180029600                                     ; +0x26a, 0x18000a0ba\nsubss   xmm5, xmm0                                                     ; +0x271, 0x18000a0c1\nmovss   dword ptr [rbx+1D8h], xmm5                                     ; +0x275, 0x18000a0c5\nsubss   xmm3, dword ptr [rcx]                                          ; +0x27d, 0x18000a0cd\ndivss   xmm3, xmm2                                                     ; +0x281, 0x18000a0d1\nandps   xmm3, cs:xmmword_180029600                                     ; +0x285, 0x18000a0d5\nmovss   dword ptr [rbx+1DCh], xmm3                                     ; +0x28c, 0x18000a0dc\nadd     rsp, 0A0h                                                      ; +0x294, 0x18000a0e4\npop     r15                                                            ; +0x29b, 0x18000a0eb\npop     r14                                                            ; +0x29d, 0x18000a0ed\npop     rbx                                                            ; +0x29f, 0x18000a0ef\nretn                                                                   ; +0x2a0, 0x18000a0f0", "xrefs": ["cocos2d::extension::CCControlSaturationBrightnessPicker::updateDraggerWithHSV @ 0x180009e43", "cocos2d::extension::CCControlSaturationBrightnessPicker::checkSliderPosition @ 0x18000a1e6", "<???> @ 0x18002dcf0", "<???> @ 0x18002dda4", "<???> @ 0x18002fdf8", "<???> @ 0x180049a8c"], "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"}