{"type": "func", "start": 6442505264, "end": 6442505515, "name": "cocos2d::extension::CCControlUtils::HSVfromRGB", "pseudocode": "// \n// cocos2d::extension::CCControlUtils::HSVfromRGB from 0x18000d430 to 0x18000d52b (251 bytes)\n// \n// 4 xrefs:\n// > cocos2d::extension::CCControlColourPicker::setColorValue @ 0x180007f38\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x180049df8\n// > <???> @ 0x180049e04\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\n__int64 __fastcall cocos2d::extension::CCControlUtils::HSVfromRGB(__int64 a1, double *a2)\n{\n  double v2; // xmm5_8\n  double v3; // xmm2_8\n  double v4; // xmm6_8\n  double v5; // xmm3_8\n  double v6; // xmm0_8\n  double v7; // xmm4_8\n  double v8; // xmm2_8\n  __int64 result; // rax\n  double v10; // xmm0_8\n\n  v2 = *a2;\n  v3 = a2[1];\n  v4 = a2[2];\n  v5 = fmax(v4, fmax(*a2, v3));\n  v6 = fmin(*a2, v3);\n  *(double *)(a1 + 16) = v5;\n  v7 = v5 - fmin(v4, v6);\n  if ( v5 <= 0.0 )\n  {\n    *(_QWORD *)(a1 + 8) = 0;\n    *(_QWORD *)a1 = 0xBFF0000000000000uLL;\n    return a1;\n  }\n  else\n  {\n    *(double *)(a1 + 8) = v7 / v5;\n    if ( v2 < v5 )\n    {\n      if ( v3 < v5 )\n        v8 = (v2 - v3) / v7 + 4.0;\n      else\n        v8 = (v4 - v2) / v7 + 2.0;\n    }\n    else if ( v7 == 0.0 )\n    {\n      v8 = 0.0;\n    }\n    else\n    {\n      v8 = (v3 - v4) / v7;\n    }\n    *(double *)a1 = v8;\n    result = a1;\n    v10 = *(double *)a1 * 60.0;\n    *(double *)a1 = v10;\n    if ( v10 < 0.0 )\n      *(double *)a1 = v10 + 360.0;\n  }\n  return result;\n}", "assembly": "; \n; cocos2d::extension::CCControlUtils::HSVfromRGB from 0x18000d430 to 0x18000d52b (251 bytes)\n; \n; 4 xrefs:\n; > cocos2d::extension::CCControlColourPicker::setColorValue @ 0x180007f38\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x180049df8\n; > <???> @ 0x180049e04\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\nsub     rsp, 18h                                                       ; +0x0, 0x18000d430\nmovsd   xmm5, qword ptr [rdx]                                          ; +0x4, 0x18000d434\nmovsd   xmm2, qword ptr [rdx+8]                                        ; +0x8, 0x18000d438\nmovaps  xmm0, xmm5                                                     ; +0xd, 0x18000d43d\nmaxsd   xmm0, xmm2                                                     ; +0x10, 0x18000d440\nmovaps  [rsp+18h+var_18], xmm6                                         ; +0x14, 0x18000d444\nmovsd   xmm6, qword ptr [rdx+10h]                                      ; +0x18, 0x18000d448\nmovaps  xmm3, xmm6                                                     ; +0x1d, 0x18000d44d\nmovaps  xmm1, xmm6                                                     ; +0x20, 0x18000d450\nmaxsd   xmm3, xmm0                                                     ; +0x23, 0x18000d453\nmovaps  xmm0, xmm5                                                     ; +0x27, 0x18000d457\nminsd   xmm0, xmm2                                                     ; +0x2a, 0x18000d45a\nmovaps  xmm4, xmm3                                                     ; +0x2e, 0x18000d45e\nmovsd   qword ptr [rcx+10h], xmm3                                      ; +0x31, 0x18000d461\nminsd   xmm1, xmm0                                                     ; +0x36, 0x18000d466\nsubsd   xmm4, xmm1                                                     ; +0x3a, 0x18000d46a\nxorps   xmm1, xmm1                                                     ; +0x3e, 0x18000d46e\ncomisd  xmm3, xmm1                                                     ; +0x41, 0x18000d471\njbe     loc_18000D50A                                                  ; +0x45, 0x18000d475\ncomisd  xmm5, xmm3                                                     ; +0x4b, 0x18000d47b\nmovaps  xmm0, xmm4                                                     ; +0x4f, 0x18000d47f\ndivsd   xmm0, xmm3                                                     ; +0x52, 0x18000d482\nmovsd   qword ptr [rcx+8], xmm0                                        ; +0x56, 0x18000d486\njb      short loc_18000D4A4                                            ; +0x5b, 0x18000d48b\nucomisd xmm4, xmm1                                                     ; +0x5d, 0x18000d48d\njp      short loc_18000D49A                                            ; +0x61, 0x18000d491\njnz     short loc_18000D49A                                            ; +0x63, 0x18000d493\nxorps   xmm2, xmm2                                                     ; +0x65, 0x18000d495\njmp     short loc_18000D4D2                                            ; +0x68, 0x18000d498\nsubsd   xmm2, xmm6                                                     ; +0x6a, 0x18000d49a\ndivsd   xmm2, xmm4                                                     ; +0x6e, 0x18000d49e\njmp     short loc_18000D4D2                                            ; +0x72, 0x18000d4a2\ncomisd  xmm2, xmm3                                                     ; +0x74, 0x18000d4a4\njb      short loc_18000D4BF                                            ; +0x78, 0x18000d4a8\nmovaps  xmm2, xmm6                                                     ; +0x7a, 0x18000d4aa\nsubsd   xmm2, xmm5                                                     ; +0x7d, 0x18000d4ad\ndivsd   xmm2, xmm4                                                     ; +0x81, 0x18000d4b1\naddsd   xmm2, cs:qword_180029540                                       ; +0x85, 0x18000d4b5\njmp     short loc_18000D4D2                                            ; +0x8d, 0x18000d4bd\nsubsd   xmm5, xmm2                                                     ; +0x8f, 0x18000d4bf\nmovaps  xmm2, xmm5                                                     ; +0x93, 0x18000d4c3\ndivsd   xmm2, xmm4                                                     ; +0x96, 0x18000d4c6\naddsd   xmm2, cs:qword_180029550                                       ; +0x9a, 0x18000d4ca\nmovsd   qword ptr [rcx], xmm2                                          ; +0xa2, 0x18000d4d2\nmov     rdx, rcx                                                       ; +0xa6, 0x18000d4d6\nmovsd   xmm0, qword ptr [rcx]                                          ; +0xa9, 0x18000d4d9\nmov     rax, rcx                                                       ; +0xad, 0x18000d4dd\nmulsd   xmm0, cs:qword_180029560                                       ; +0xb0, 0x18000d4e0\nmov     r8, rcx                                                        ; +0xb8, 0x18000d4e8\ncomisd  xmm1, xmm0                                                     ; +0xbb, 0x18000d4eb\nmovsd   qword ptr [rcx], xmm0                                          ; +0xbf, 0x18000d4ef\njbe     short loc_18000D522                                            ; +0xc3, 0x18000d4f3\naddsd   xmm0, cs:qword_180029578                                       ; +0xc5, 0x18000d4f5\nmovsd   qword ptr [rcx], xmm0                                          ; +0xcd, 0x18000d4fd\nmovaps  xmm6, [rsp+18h+var_18]                                         ; +0xd1, 0x18000d501\nadd     rsp, 18h                                                       ; +0xd5, 0x18000d505\nretn                                                                   ; +0xd9, 0x18000d509\nmov     rax, 0BFF0000000000000h                                        ; +0xda, 0x18000d50a\nmov     qword ptr [rcx+8], 0                                           ; +0xe4, 0x18000d514\nmov     [rcx], rax                                                     ; +0xec, 0x18000d51c\nmov     rax, rcx                                                       ; +0xef, 0x18000d51f\nmovaps  xmm6, [rsp+18h+var_18]                                         ; +0xf2, 0x18000d522\nadd     rsp, 18h                                                       ; +0xf6, 0x18000d526\nretn                                                                   ; +0xfa, 0x18000d52a", "xrefs": ["cocos2d::extension::CCControlColourPicker::setColorValue @ 0x180007f38", "<???> @ 0x18002fdf8", "<???> @ 0x180049df8", "<???> @ 0x180049e04"], "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"}