{"type": "func", "start": 6442528720, "end": 6442529463, "name": "cocos2d::extension::CCScrollView::deaccelerateScrolling", "pseudocode": "// \n// cocos2d::extension::CCScrollView::deaccelerateScrolling from 0x180012fd0 to 0x1800132b7 (743 bytes)\n// \n// 7 xrefs:\n// > cocos2d::extension::CCScrollView::deaccelerateScrolling @ 0x180012fe2\n// > cocos2d::extension::CCScrollView::deaccelerateScrolling @ 0x18001328c\n// > cocos2d::extension::CCScrollView::ccTouchEnded @ 0x180013fd5\n// > <???> @ 0x18002e998\n// > <???> @ 0x18002e9b0\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x18004a470\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\nvoid __fastcall cocos2d::extension::CCScrollView::deaccelerateScrolling(\n        cocos2d::extension::CCScrollView *this,\n        float a2)\n{\n  __int64 v3; // rax\n  cocos2d::CCPoint *v4; // rdx\n  float *v5; // rax\n  __int64 v6; // rax\n  float v7; // xmm8_4\n  float v8; // xmm7_4\n  float v9; // xmm6_4\n  float *v10; // rax\n  __int64 v11; // rax\n  float *v12; // rax\n  _BYTE v13[16]; // [rsp+20h] [rbp-48h] BYREF\n  float v14; // [rsp+70h] [rbp+8h] BYREF\n  float v15; // [rsp+74h] [rbp+Ch]\n  float v16; // [rsp+80h] [rbp+18h] BYREF\n  float v17; // [rsp+84h] [rbp+1Ch]\n  char v18; // [rsp+88h] [rbp+20h] BYREF\n\n  if ( *((_BYTE *)this + 436) )\n  {\n    cocos2d::CCNode::unschedule(this, cocos2d::extension::CCScrollView::deaccelerateScrolling);\n  }\n  else\n  {\n    cocos2d::CCPoint::CCPoint((cocos2d::CCPoint *)&v14);\n    cocos2d::CCPoint::CCPoint((cocos2d::CCPoint *)&v16);\n    v3 = (*(__int64 (__fastcall **)(_QWORD))(**((_QWORD **)this + 56) + 200LL))(*((_QWORD *)this + 56));\n    cocos2d::CCPoint::operator+(v3, &v18, (char *)this + 480);\n    (*(void (__fastcall **)(_QWORD, char *))(**((_QWORD **)this + 56) + 184LL))(*((_QWORD *)this + 56), &v18);\n    if ( *((_BYTE *)this + 476) )\n    {\n      cocos2d::CCPoint::operator=(&v14, (char *)this + 460);\n      v4 = (cocos2d::extension::CCScrollView *)((char *)this + 468);\n    }\n    else\n    {\n      cocos2d::CCPoint::CCPoint((cocos2d::CCPoint *)&v18, 0.0, 0.0);\n      cocos2d::CCPoint::operator=(&v14, &v18);\n      v4 = cocos2d::extension::CCScrollView::minContainerOffset((__int64)this, (cocos2d::CCPoint *)&v18);\n    }\n    cocos2d::CCPoint::operator=(&v16, v4);\n    v5 = (float *)(*(__int64 (__fastcall **)(_QWORD))(**((_QWORD **)this + 56) + 200LL))(*((_QWORD *)this + 56));\n    if ( v14 > *v5 )\n      (*(void (__fastcall **)(_QWORD))(**((_QWORD **)this + 56) + 200LL))(*((_QWORD *)this + 56));\n    v6 = (*(__int64 (__fastcall **)(_QWORD))(**((_QWORD **)this + 56) + 200LL))(*((_QWORD *)this + 56));\n    if ( v15 > *(float *)(v6 + 4) )\n      (*(void (__fastcall **)(_QWORD))(**((_QWORD **)this + 56) + 200LL))(*((_QWORD *)this + 56));\n    v7 = *(float *)(*(__int64 (__fastcall **)(_QWORD))(**((_QWORD **)this + 56) + 200LL))(*((_QWORD *)this + 56));\n    v8 = *(float *)((*(__int64 (__fastcall **)(_QWORD))(**((_QWORD **)this + 56) + 200LL))(*((_QWORD *)this + 56)) + 4);\n    v9 = *(float *)((*(__int64 (__fastcall **)(_QWORD))(**((_QWORD **)this + 56) + 200LL))(*((_QWORD *)this + 56)) + 4);\n    v10 = (float *)(*(__int64 (__fastcall **)(_QWORD))(**((_QWORD **)this + 56) + 200LL))(*((_QWORD *)this + 56));\n    cocos2d::CCPoint::CCPoint((cocos2d::CCPoint *)v13, v7 - *v10, v8 - v9);\n    cocos2d::CCPoint::operator-((char *)this + 480, &v18, v11);\n    cocos2d::CCPoint::operator=((char *)this + 480, &v18);\n    cocos2d::CCPoint::operator*((char *)this + 480, &v18);\n    cocos2d::CCPoint::operator=((char *)this + 480, &v18);\n    cocos2d::CCPoint::CCPoint((cocos2d::CCPoint *)&v18, v7, v8);\n    cocos2d::extension::CCScrollView::setContentOffset((__int64)this, v12, 0);\n    if ( fabs(*((float *)this + 120)) <= 1.0 && fabs(*((float *)this + 121)) <= 1.0\n      || v8 > v15\n      || v17 > v8\n      || v7 > v14\n      || v16 > v7\n      || v7 == v14\n      || v7 == v16\n      || v8 == v15\n      || v8 == v17 )\n    {\n      cocos2d::CCNode::unschedule(this, cocos2d::extension::CCScrollView::deaccelerateScrolling);\n      cocos2d::extension::CCScrollView::relocateContainer(this, 1);\n    }\n  }\n}", "assembly": "; \n; cocos2d::extension::CCScrollView::deaccelerateScrolling from 0x180012fd0 to 0x1800132b7 (743 bytes)\n; \n; 7 xrefs:\n; > cocos2d::extension::CCScrollView::deaccelerateScrolling @ 0x180012fe2\n; > cocos2d::extension::CCScrollView::deaccelerateScrolling @ 0x18001328c\n; > cocos2d::extension::CCScrollView::ccTouchEnded @ 0x180013fd5\n; > <???> @ 0x18002e998\n; > <???> @ 0x18002e9b0\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x18004a470\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\npush    rbx                                                            ; +0x0, 0x180012fd0\nsub     rsp, 60h                                                       ; +0x2, 0x180012fd2\ncmp     byte ptr [rcx+1B4h], 0                                         ; +0x6, 0x180012fd6\nmov     rbx, rcx                                                       ; +0xd, 0x180012fdd\njz      short loc_180012FF5                                            ; +0x10, 0x180012fe0\nlea     rdx, ?deaccelerateScrolling@CCScrollView@extension@cocos2d@@AEAAXM@Z; cocos2d::extension::CCScrollView::deaccelerateScrolling(float) ; +0x12, 0x180012fe2\ncall    cs:?unschedule@CCNode@cocos2d@@QEAAXP8CCObject@2@EAAXM@Z@Z; cocos2d::CCNode::unschedule(void (cocos2d::CCObject::*)(float)) ; +0x19, 0x180012fe9\nadd     rsp, 60h                                                       ; +0x1f, 0x180012fef\npop     rbx                                                            ; +0x23, 0x180012ff3\nretn                                                                   ; +0x24, 0x180012ff4\nmov     [rsp+68h+arg_8], rdi                                           ; +0x25, 0x180012ff5\nlea     rcx, [rsp+68h+arg_0]                                           ; +0x2a, 0x180012ffa\nmovaps  [rsp+68h+var_18], xmm6                                         ; +0x2f, 0x180012fff\nmovaps  [rsp+68h+var_28], xmm7                                         ; +0x34, 0x180013004\nmovaps  [rsp+68h+var_38], xmm8                                         ; +0x39, 0x180013009\ncall    cs:??0CCPoint@cocos2d@@QEAA@XZ; cocos2d::CCPoint::CCPoint(void) ; +0x3f, 0x18001300f\nlea     rcx, [rsp+68h+arg_10]                                          ; +0x45, 0x180013015\ncall    cs:??0CCPoint@cocos2d@@QEAA@XZ; cocos2d::CCPoint::CCPoint(void) ; +0x4d, 0x18001301d\nmov     rcx, [rbx+1C0h]                                                ; +0x53, 0x180013023\nmov     rax, [rcx]                                                     ; +0x5a, 0x18001302a\ncall    qword ptr [rax+0C8h]                                           ; +0x5d, 0x18001302d\nlea     rdi, [rbx+1E0h]                                                ; +0x63, 0x180013033\nmov     rcx, rax                                                       ; +0x6a, 0x18001303a\nmov     r8, rdi                                                        ; +0x6d, 0x18001303d\nlea     rdx, [rsp+68h+arg_18]                                          ; +0x70, 0x180013040\ncall    cs:??HCCPoint@cocos2d@@QEBA?AV01@AEBV01@@Z; cocos2d::CCPoint::operator+(cocos2d::CCPoint const &) ; +0x78, 0x180013048\nmov     rcx, [rbx+1C0h]                                                ; +0x7e, 0x18001304e\nlea     rdx, [rsp+68h+arg_18]                                          ; +0x85, 0x180013055\nmov     rax, [rcx]                                                     ; +0x8d, 0x18001305d\ncall    qword ptr [rax+0B8h]                                           ; +0x90, 0x180013060\ncmp     byte ptr [rbx+1DCh], 0                                         ; +0x96, 0x180013066\njz      short loc_18001308A                                            ; +0x9d, 0x18001306d\nlea     rdx, [rbx+1CCh]                                                ; +0x9f, 0x18001306f\nlea     rcx, [rsp+68h+arg_0]                                           ; +0xa6, 0x180013076\ncall    cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0xab, 0x18001307b\nlea     rdx, [rbx+1D4h]                                                ; +0xb1, 0x180013081\njmp     short loc_1800130C4                                            ; +0xb8, 0x180013088\nxorps   xmm2, xmm2                                                     ; +0xba, 0x18001308a\nlea     rcx, [rsp+68h+arg_18]                                          ; +0xbd, 0x18001308d\nxorps   xmm1, xmm1                                                     ; +0xc5, 0x180013095\ncall    cs:??0CCPoint@cocos2d@@QEAA@MM@Z; cocos2d::CCPoint::CCPoint(float,float) ; +0xc8, 0x180013098\nlea     rdx, [rsp+68h+arg_18]                                          ; +0xce, 0x18001309e\nlea     rcx, [rsp+68h+arg_0]                                           ; +0xd6, 0x1800130a6\ncall    cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0xdb, 0x1800130ab\nlea     rdx, [rsp+68h+arg_18]                                          ; +0xe1, 0x1800130b1\nmov     rcx, rbx                                                       ; +0xe9, 0x1800130b9\ncall    ?minContainerOffset@CCScrollView@extension@cocos2d@@QEAA?AVCCPoint@3@XZ; cocos2d::extension::CCScrollView::minContainerOffset(void) ; +0xec, 0x1800130bc\nmov     rdx, rax                                                       ; +0xf1, 0x1800130c1\nlea     rcx, [rsp+68h+arg_10]                                          ; +0xf4, 0x1800130c4\ncall    cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0xfc, 0x1800130cc\nmov     rcx, [rbx+1C0h]                                                ; +0x102, 0x1800130d2\nmov     rax, [rcx]                                                     ; +0x109, 0x1800130d9\ncall    qword ptr [rax+0C8h]                                           ; +0x10c, 0x1800130dc\nmovss   xmm0, [rsp+68h+arg_0]                                          ; +0x112, 0x1800130e2\ncomiss  xmm0, dword ptr [rax]                                          ; +0x118, 0x1800130e8\njbe     short loc_1800130FD                                            ; +0x11b, 0x1800130eb\nmov     rcx, [rbx+1C0h]                                                ; +0x11d, 0x1800130ed\nmov     rax, [rcx]                                                     ; +0x124, 0x1800130f4\ncall    qword ptr [rax+0C8h]                                           ; +0x127, 0x1800130f7\nmov     rcx, [rbx+1C0h]                                                ; +0x12d, 0x1800130fd\nmov     rax, [rcx]                                                     ; +0x134, 0x180013104\ncall    qword ptr [rax+0C8h]                                           ; +0x137, 0x180013107\nmovss   xmm0, [rsp+68h+arg_4]                                          ; +0x13d, 0x18001310d\ncomiss  xmm0, dword ptr [rax+4]                                        ; +0x143, 0x180013113\njbe     short loc_180013129                                            ; +0x147, 0x180013117\nmov     rcx, [rbx+1C0h]                                                ; +0x149, 0x180013119\nmov     rax, [rcx]                                                     ; +0x150, 0x180013120\ncall    qword ptr [rax+0C8h]                                           ; +0x153, 0x180013123\nmov     rcx, [rbx+1C0h]                                                ; +0x159, 0x180013129\nmov     rax, [rcx]                                                     ; +0x160, 0x180013130\ncall    qword ptr [rax+0C8h]                                           ; +0x163, 0x180013133\nmov     rcx, [rbx+1C0h]                                                ; +0x169, 0x180013139\nmovss   xmm8, dword ptr [rax]                                          ; +0x170, 0x180013140\nmov     rax, [rcx]                                                     ; +0x175, 0x180013145\ncall    qword ptr [rax+0C8h]                                           ; +0x178, 0x180013148\nmov     rcx, [rbx+1C0h]                                                ; +0x17e, 0x18001314e\nmovss   xmm7, dword ptr [rax+4]                                        ; +0x185, 0x180013155\nmov     rax, [rcx]                                                     ; +0x18a, 0x18001315a\ncall    qword ptr [rax+0C8h]                                           ; +0x18d, 0x18001315d\nmov     rcx, [rbx+1C0h]                                                ; +0x193, 0x180013163\nmovss   xmm6, dword ptr [rax+4]                                        ; +0x19a, 0x18001316a\nmov     rax, [rcx]                                                     ; +0x19f, 0x18001316f\ncall    qword ptr [rax+0C8h]                                           ; +0x1a2, 0x180013172\nmovaps  xmm2, xmm7                                                     ; +0x1a8, 0x180013178\nlea     rcx, [rsp+68h+var_48]                                          ; +0x1ab, 0x18001317b\nmovaps  xmm1, xmm8                                                     ; +0x1b0, 0x180013180\nsubss   xmm2, xmm6                                                     ; +0x1b4, 0x180013184\nsubss   xmm1, dword ptr [rax]                                          ; +0x1b8, 0x180013188\ncall    cs:??0CCPoint@cocos2d@@QEAA@MM@Z; cocos2d::CCPoint::CCPoint(float,float) ; +0x1bc, 0x18001318c\nlea     rdx, [rsp+68h+arg_18]                                          ; +0x1c2, 0x180013192\nmov     rcx, rdi                                                       ; +0x1ca, 0x18001319a\nmov     r8, rax                                                        ; +0x1cd, 0x18001319d\ncall    cs:??GCCPoint@cocos2d@@QEBA?AV01@AEBV01@@Z; cocos2d::CCPoint::operator-(cocos2d::CCPoint const &) ; +0x1d0, 0x1800131a0\nlea     rdx, [rsp+68h+arg_18]                                          ; +0x1d6, 0x1800131a6\nmov     rcx, rdi                                                       ; +0x1de, 0x1800131ae\ncall    cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0x1e1, 0x1800131b1\nmovss   xmm2, cs:dword_180029514                                       ; +0x1e7, 0x1800131b7\nlea     rdx, [rsp+68h+arg_18]                                          ; +0x1ef, 0x1800131bf\nmov     rcx, rdi                                                       ; +0x1f7, 0x1800131c7\ncall    cs:??DCCPoint@cocos2d@@QEBA?AV01@M@Z; cocos2d::CCPoint::operator*(float) ; +0x1fa, 0x1800131ca\nlea     rdx, [rsp+68h+arg_18]                                          ; +0x200, 0x1800131d0\nmov     rcx, rdi                                                       ; +0x208, 0x1800131d8\ncall    cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0x20b, 0x1800131db\nmovaps  xmm2, xmm7                                                     ; +0x211, 0x1800131e1\nlea     rcx, [rsp+68h+arg_18]                                          ; +0x214, 0x1800131e4\nmovaps  xmm1, xmm8                                                     ; +0x21c, 0x1800131ec\ncall    cs:??0CCPoint@cocos2d@@QEAA@MM@Z; cocos2d::CCPoint::CCPoint(float,float) ; +0x220, 0x1800131f0\nxor     r8d, r8d                                                       ; +0x226, 0x1800131f6\nmov     rcx, rbx                                                       ; +0x229, 0x1800131f9\nmov     rdx, rax                                                       ; +0x22c, 0x1800131fc\ncall    ?setContentOffset@CCScrollView@extension@cocos2d@@QEAAXVCCPoint@3@_N@Z; cocos2d::extension::CCScrollView::setContentOffset(cocos2d::CCPoint,bool) ; +0x22f, 0x1800131ff\nmovss   xmm0, dword ptr [rdi]                                          ; +0x234, 0x180013204\nmovss   xmm1, dword ptr cs:xmmword_180029600                           ; +0x238, 0x180013208\nmovss   xmm2, cs:dword_180029518                                       ; +0x240, 0x180013210\nandps   xmm0, xmm1                                                     ; +0x248, 0x180013218\ncomiss  xmm2, xmm0                                                     ; +0x24b, 0x18001321b\nmov     rdi, [rsp+68h+arg_8]                                           ; +0x24e, 0x18001321e\nmovaps  xmm6, [rsp+68h+var_18]                                         ; +0x253, 0x180013223\njb      short loc_18001323A                                            ; +0x258, 0x180013228\nmovss   xmm0, dword ptr [rbx+1E4h]                                     ; +0x25a, 0x18001322a\nandps   xmm0, xmm1                                                     ; +0x262, 0x180013232\ncomiss  xmm2, xmm0                                                     ; +0x265, 0x180013235\njnb     short loc_18001328C                                            ; +0x268, 0x180013238\nmovss   xmm0, [rsp+68h+arg_4]                                          ; +0x26a, 0x18001323a\ncomiss  xmm7, xmm0                                                     ; +0x270, 0x180013240\nja      short loc_18001328C                                            ; +0x273, 0x180013243\nmovss   xmm1, [rsp+68h+arg_14]                                         ; +0x275, 0x180013245\ncomiss  xmm1, xmm7                                                     ; +0x27e, 0x18001324e\nja      short loc_18001328C                                            ; +0x281, 0x180013251\nmovss   xmm2, [rsp+68h+arg_0]                                          ; +0x283, 0x180013253\ncomiss  xmm8, xmm2                                                     ; +0x289, 0x180013259\nja      short loc_18001328C                                            ; +0x28d, 0x18001325d\nmovss   xmm3, [rsp+68h+arg_10]                                         ; +0x28f, 0x18001325f\ncomiss  xmm3, xmm8                                                     ; +0x298, 0x180013268\nja      short loc_18001328C                                            ; +0x29c, 0x18001326c\nucomiss xmm8, xmm2                                                     ; +0x29e, 0x18001326e\njp      short loc_180013276                                            ; +0x2a2, 0x180013272\njz      short loc_18001328C                                            ; +0x2a4, 0x180013274\nucomiss xmm8, xmm3                                                     ; +0x2a6, 0x180013276\njp      short loc_18001327E                                            ; +0x2aa, 0x18001327a\njz      short loc_18001328C                                            ; +0x2ac, 0x18001327c\nucomiss xmm7, xmm0                                                     ; +0x2ae, 0x18001327e\njp      short loc_180013285                                            ; +0x2b1, 0x180013281\njz      short loc_18001328C                                            ; +0x2b3, 0x180013283\nucomiss xmm7, xmm1                                                     ; +0x2b5, 0x180013285\njp      short loc_1800132A6                                            ; +0x2b8, 0x180013288\njnz     short loc_1800132A6                                            ; +0x2ba, 0x18001328a\nlea     rdx, ?deaccelerateScrolling@CCScrollView@extension@cocos2d@@AEAAXM@Z; cocos2d::extension::CCScrollView::deaccelerateScrolling(float) ; +0x2bc, 0x18001328c\nmov     rcx, rbx                                                       ; +0x2c3, 0x180013293\ncall    cs:?unschedule@CCNode@cocos2d@@QEAAXP8CCObject@2@EAAXM@Z@Z; cocos2d::CCNode::unschedule(void (cocos2d::CCObject::*)(float)) ; +0x2c6, 0x180013296\nmov     dl, 1; bool                                                    ; +0x2cc, 0x18001329c\nmov     rcx, rbx; this                                                 ; +0x2ce, 0x18001329e\ncall    ?relocateContainer@CCScrollView@extension@cocos2d@@AEAAX_N@Z; cocos2d::extension::CCScrollView::relocateContainer(bool) ; +0x2d1, 0x1800132a1\nmovaps  xmm7, [rsp+68h+var_28]                                         ; +0x2d6, 0x1800132a6\nmovaps  xmm8, [rsp+68h+var_38]                                         ; +0x2db, 0x1800132ab\nadd     rsp, 60h                                                       ; +0x2e1, 0x1800132b1\npop     rbx                                                            ; +0x2e5, 0x1800132b5\nretn                                                                   ; +0x2e6, 0x1800132b6", "xrefs": ["cocos2d::extension::CCScrollView::deaccelerateScrolling @ 0x180012fe2", "cocos2d::extension::CCScrollView::deaccelerateScrolling @ 0x18001328c", "cocos2d::extension::CCScrollView::ccTouchEnded @ 0x180013fd5", "<???> @ 0x18002e998", "<???> @ 0x18002e9b0", "<???> @ 0x18002fdf8", "<???> @ 0x18004a470"], "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"}