{"type": "func", "start": 6442533008, "end": 6442533297, "name": "cocos2d::extension::CCScrollView::getViewRect", "pseudocode": "// \n// cocos2d::extension::CCScrollView::getViewRect from 0x180014090 to 0x1800141b1 (289 bytes)\n// \n// 5 xrefs:\n// > cocos2d::extension::CCScrollView::beforeDraw @ 0x180013625\n// > cocos2d::extension::CCScrollView::ccTouchBegan @ 0x1800139b8\n// > cocos2d::extension::CCScrollView::ccTouchMoved @ 0x180013c8b\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x18004a5e4\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\ncocos2d::CCRect *__fastcall cocos2d::extension::CCScrollView::getViewRect(__int64 a1, cocos2d::CCRect *a2)\n{\n  double v4; // xmm0_8\n  float v5; // xmm7_4\n  double v6; // xmm0_8\n  __int64 v7; // rbx\n  float i; // xmm6_4\n  float v9; // xmm3_4\n  float v10; // xmm1_4\n  float v11; // xmm0_4\n  float v12; // xmm2_4\n  float v13; // xmm0_4\n  float v15; // [rsp+60h] [rbp+8h] BYREF\n  float v16; // [rsp+64h] [rbp+Ch]\n\n  cocos2d::CCNode::convertToWorldSpace(a1, &v15, &unk_180048620);\n  v4 = (*(double (__fastcall **)(__int64))(*(_QWORD *)a1 + 128LL))(a1);\n  v5 = *(float *)&v4;\n  v6 = (*(double (__fastcall **)(__int64))(*(_QWORD *)a1 + 144LL))(a1);\n  v7 = *(_QWORD *)(a1 + 216);\n  for ( i = *(float *)&v6; v7; v7 = (*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v7 + 488LL))(v7) )\n  {\n    v5 = v5 * (*(float (__fastcall **)(__int64))(*(_QWORD *)v7 + 128LL))(v7);\n    i = i * (*(float (__fastcall **)(__int64))(*(_QWORD *)v7 + 144LL))(v7);\n  }\n  v9 = *(float *)(a1 + 512);\n  v10 = v15;\n  if ( v5 < 0.0 )\n  {\n    v11 = v9 * v5;\n    v5 = -v5;\n    v10 = v15 + v11;\n    v15 = v15 + v11;\n  }\n  v12 = v16;\n  if ( i < 0.0 )\n  {\n    v13 = i;\n    i = -i;\n    v12 = v16 + (float)(v13 * *(float *)(a1 + 516));\n    v16 = v12;\n  }\n  cocos2d::CCRect::CCRect(a2, v10, v12, v9 * v5, i * *(float *)(a1 + 516));\n  return a2;\n}", "assembly": "; \n; cocos2d::extension::CCScrollView::getViewRect from 0x180014090 to 0x1800141b1 (289 bytes)\n; \n; 5 xrefs:\n; > cocos2d::extension::CCScrollView::beforeDraw @ 0x180013625\n; > cocos2d::extension::CCScrollView::ccTouchBegan @ 0x1800139b8\n; > cocos2d::extension::CCScrollView::ccTouchMoved @ 0x180013c8b\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x18004a5e4\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     [rsp+arg_8], rbx                                               ; +0x0, 0x180014090\nmov     [rsp+arg_10], rsi                                              ; +0x5, 0x180014095\npush    rdi                                                            ; +0xa, 0x18001409a\nsub     rsp, 50h                                                       ; +0xb, 0x18001409b\nmov     rsi, rdx                                                       ; +0xf, 0x18001409f\nmovaps  [rsp+58h+var_18], xmm6                                         ; +0x12, 0x1800140a2\nlea     rdx, [rsp+58h+arg_0]                                           ; +0x17, 0x1800140a7\nmovaps  [rsp+58h+var_28], xmm7                                         ; +0x1c, 0x1800140ac\nlea     r8, unk_180048620                                              ; +0x21, 0x1800140b1\nmov     rdi, rcx                                                       ; +0x28, 0x1800140b8\ncall    cs:?convertToWorldSpace@CCNode@cocos2d@@QEAA?AVCCPoint@2@AEBV32@@Z; cocos2d::CCNode::convertToWorldSpace(cocos2d::CCPoint const &) ; +0x2b, 0x1800140bb\nmov     rax, [rdi]                                                     ; +0x31, 0x1800140c1\nmov     rcx, rdi                                                       ; +0x34, 0x1800140c4\ncall    qword ptr [rax+80h]                                            ; +0x37, 0x1800140c7\nmov     rax, [rdi]                                                     ; +0x3d, 0x1800140cd\nmov     rcx, rdi                                                       ; +0x40, 0x1800140d0\nmovaps  xmm7, xmm0                                                     ; +0x43, 0x1800140d3\ncall    qword ptr [rax+90h]                                            ; +0x46, 0x1800140d6\nmov     rbx, [rdi+0D8h]                                                ; +0x4c, 0x1800140dc\nmovaps  xmm6, xmm0                                                     ; +0x53, 0x1800140e3\ntest    rbx, rbx                                                       ; +0x56, 0x1800140e6\njz      short loc_180014124                                            ; +0x59, 0x1800140e9\nnop     dword ptr [rax+rax+00h]                                        ; +0x5b, 0x1800140eb\nmov     rax, [rbx]                                                     ; +0x60, 0x1800140f0\nmov     rcx, rbx                                                       ; +0x63, 0x1800140f3\ncall    qword ptr [rax+80h]                                            ; +0x66, 0x1800140f6\nmov     rax, [rbx]                                                     ; +0x6c, 0x1800140fc\nmov     rcx, rbx                                                       ; +0x6f, 0x1800140ff\nmulss   xmm7, xmm0                                                     ; +0x72, 0x180014102\ncall    qword ptr [rax+90h]                                            ; +0x76, 0x180014106\nmov     rax, [rbx]                                                     ; +0x7c, 0x18001410c\nmov     rcx, rbx                                                       ; +0x7f, 0x18001410f\nmulss   xmm6, xmm0                                                     ; +0x82, 0x180014112\ncall    qword ptr [rax+1E8h]                                           ; +0x86, 0x180014116\nmov     rbx, rax                                                       ; +0x8c, 0x18001411c\ntest    rax, rax                                                       ; +0x8f, 0x18001411f\njnz     short loc_1800140F0                                            ; +0x92, 0x180014122\nmovss   xmm3, dword ptr [rdi+200h]                                     ; +0x94, 0x180014124\nxorps   xmm2, xmm2                                                     ; +0x9c, 0x18001412c\ncomiss  xmm2, xmm7                                                     ; +0x9f, 0x18001412f\nmovss   xmm4, dword ptr cs:xmmword_180029610                           ; +0xa2, 0x180014132\nmovss   xmm1, [rsp+58h+arg_0]                                          ; +0xaa, 0x18001413a\njbe     short loc_180014156                                            ; +0xb0, 0x180014140\nmovaps  xmm0, xmm3                                                     ; +0xb2, 0x180014142\nmulss   xmm0, xmm7                                                     ; +0xb5, 0x180014145\nxorps   xmm7, xmm4                                                     ; +0xb9, 0x180014149\naddss   xmm1, xmm0                                                     ; +0xbc, 0x18001414c\nmovss   [rsp+58h+arg_0], xmm1                                          ; +0xc0, 0x180014150\ncomiss  xmm2, xmm6                                                     ; +0xc6, 0x180014156\nmovss   xmm2, [rsp+58h+arg_4]                                          ; +0xc9, 0x180014159\njbe     short loc_180014179                                            ; +0xcf, 0x18001415f\nmovaps  xmm0, xmm6                                                     ; +0xd1, 0x180014161\nxorps   xmm6, xmm4                                                     ; +0xd4, 0x180014164\nmulss   xmm0, dword ptr [rdi+204h]                                     ; +0xd7, 0x180014167\naddss   xmm2, xmm0                                                     ; +0xdf, 0x18001416f\nmovss   [rsp+58h+arg_4], xmm2                                          ; +0xe3, 0x180014173\nmulss   xmm6, dword ptr [rdi+204h]                                     ; +0xe9, 0x180014179\nmov     rcx, rsi                                                       ; +0xf1, 0x180014181\nmulss   xmm3, xmm7                                                     ; +0xf4, 0x180014184\nmovss   [rsp+58h+var_38], xmm6                                         ; +0xf8, 0x180014188\ncall    cs:??0CCRect@cocos2d@@QEAA@MMMM@Z; cocos2d::CCRect::CCRect(float,float,float,float) ; +0xfe, 0x18001418e\nmov     rbx, [rsp+58h+arg_8]                                           ; +0x104, 0x180014194\nmov     rax, rsi                                                       ; +0x109, 0x180014199\nmov     rsi, [rsp+58h+arg_10]                                          ; +0x10c, 0x18001419c\nmovaps  xmm6, [rsp+58h+var_18]                                         ; +0x111, 0x1800141a1\nmovaps  xmm7, [rsp+58h+var_28]                                         ; +0x116, 0x1800141a6\nadd     rsp, 50h                                                       ; +0x11b, 0x1800141ab\npop     rdi                                                            ; +0x11f, 0x1800141af\nretn                                                                   ; +0x120, 0x1800141b0", "xrefs": ["cocos2d::extension::CCScrollView::beforeDraw @ 0x180013625", "cocos2d::extension::CCScrollView::ccTouchBegan @ 0x1800139b8", "cocos2d::extension::CCScrollView::ccTouchMoved @ 0x180013c8b", "<???> @ 0x18002fdf8", "<???> @ 0x18004a5e4"], "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"}