; ; cocos2d::extension::CCScrollView::ccTouchMoved from 0x180013be0 to 0x180013f63 (899 bytes) ; ; 7 xrefs: ; > cocos2d::extension::CCTableView::ccTouchMoved @ 0x180016649 ; > @ 0x1800282e0 ; > @ 0x18002eae0 ; > @ 0x18002eb14 ; > @ 0x18002eb28 ; > @ 0x18002fdf8 ; > @ 0x18004a584 ; ; 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 ; mov [rsp-18h+arg_8], rbx ; +0x0, 0x180013be0 push rbp ; +0x5, 0x180013be5 push rsi ; +0x6, 0x180013be6 push rdi ; +0x7, 0x180013be7 mov rbp, rsp ; +0x8, 0x180013be8 sub rsp, 70h ; +0xb, 0x180013beb lea rsi, [rcx-140h] ; +0xf, 0x180013bef mov rdi, rcx ; +0x16, 0x180013bf6 mov rax, [rsi] ; +0x19, 0x180013bf9 mov rcx, rsi ; +0x1c, 0x180013bfc mov rbx, rdx ; +0x1f, 0x180013bff call qword ptr [rax+148h] ; +0x22, 0x180013c02 test al, al ; +0x28, 0x180013c08 jz loc_180013EB6 ; +0x2a, 0x180013c0a mov rcx, [rdi+0B8h] ; +0x30, 0x180013c10 mov rdx, rbx ; +0x37, 0x180013c17 call cs:?containsObject@CCArray@cocos2d@@QEBA_NPEAVCCObject@2@@Z; cocos2d::CCArray::containsObject(cocos2d::CCObject *) ; +0x3a, 0x180013c1a test al, al ; +0x40, 0x180013c20 jz loc_180013EB6 ; +0x42, 0x180013c22 mov rcx, [rdi+0B8h] ; +0x48, 0x180013c28 movaps [rsp+70h+var_10], xmm6 ; +0x4f, 0x180013c2f call cs:?count@CCArray@cocos2d@@QEBAIXZ; cocos2d::CCArray::count(void) ; +0x54, 0x180013c34 cmp eax, 1 ; +0x5a, 0x180013c3a jnz loc_180013EC6 ; +0x5d, 0x180013c3d cmp byte ptr [rdi+74h], 0 ; +0x63, 0x180013c43 jz loc_180013EC6 ; +0x67, 0x180013c47 lea rcx, [rbp+arg_0] ; +0x6d, 0x180013c4d movaps [rsp+70h+var_20], xmm7 ; +0x71, 0x180013c51 call cs:??0CCPoint@cocos2d@@QEAA@XZ; cocos2d::CCPoint::CCPoint(void) ; +0x76, 0x180013c56 lea rcx, [rbp+arg_18] ; +0x7c, 0x180013c5c call cs:??0CCPoint@cocos2d@@QEAA@XZ; cocos2d::CCPoint::CCPoint(void) ; +0x80, 0x180013c60 lea rcx, [rbp+var_40] ; +0x86, 0x180013c66 call cs:??0CCPoint@cocos2d@@QEAA@XZ; cocos2d::CCPoint::CCPoint(void) ; +0x8a, 0x180013c6a lea rcx, [rbp+var_38] ; +0x90, 0x180013c70 call cs:??0CCPoint@cocos2d@@QEAA@XZ; cocos2d::CCPoint::CCPoint(void) ; +0x94, 0x180013c74 lea rcx, [rbp+var_30] ; +0x9a, 0x180013c7a call cs:??0CCRect@cocos2d@@QEAA@XZ; cocos2d::CCRect::CCRect(void) ; +0x9e, 0x180013c7e lea rdx, [rbp+var_50] ; +0xa4, 0x180013c84 mov rcx, rsi ; +0xa8, 0x180013c88 call ?getViewRect@CCScrollView@extension@cocos2d@@IEAA?AVCCRect@3@XZ; cocos2d::extension::CCScrollView::getViewRect(void) ; +0xab, 0x180013c8b mov rdx, rax ; +0xb0, 0x180013c90 lea rcx, [rbp+var_30] ; +0xb3, 0x180013c93 call cs:??4CCRect@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCRect::operator=(cocos2d::CCRect const &) ; +0xb7, 0x180013c97 mov rcx, [rdi+0B8h] ; +0xbd, 0x180013c9d xor edx, edx ; +0xc4, 0x180013ca4 call cs:?objectAtIndex@CCArray@cocos2d@@QEAAPEAVCCObject@2@I@Z; cocos2d::CCArray::objectAtIndex(uint) ; +0xc6, 0x180013ca6 lea rdx, [rbp+var_50] ; +0xcc, 0x180013cac mov rcx, rsi ; +0xd0, 0x180013cb0 mov r8, rax ; +0xd3, 0x180013cb3 call cs:?convertTouchToNodeSpace@CCNode@cocos2d@@QEAA?AVCCPoint@2@PEAVCCTouch@2@@Z; cocos2d::CCNode::convertTouchToNodeSpace(cocos2d::CCTouch *) ; +0xd6, 0x180013cb6 mov rdx, rax ; +0xdc, 0x180013cbc lea rcx, [rbp+arg_18] ; +0xdf, 0x180013cbf call cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0xe3, 0x180013cc3 lea r8, [rdi+0A8h] ; +0xe9, 0x180013cc9 lea rdx, [rbp+var_50] ; +0xf0, 0x180013cd0 lea rcx, [rbp+arg_18] ; +0xf4, 0x180013cd4 call cs:??GCCPoint@cocos2d@@QEBA?AV01@AEBV01@@Z; cocos2d::CCPoint::operator-(cocos2d::CCPoint const &) ; +0xf8, 0x180013cd8 lea rdx, [rbp+var_50] ; +0xfe, 0x180013cde lea rcx, [rbp+arg_0] ; +0x102, 0x180013ce2 call cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0x106, 0x180013ce6 mov eax, [rdi+70h] ; +0x10c, 0x180013cec cmp eax, 1 ; +0x10f, 0x180013cef jnz short loc_180013CFB ; +0x112, 0x180013cf2 movss xmm7, [rbp+arg_4] ; +0x114, 0x180013cf4 jmp short loc_180013D38 ; +0x119, 0x180013cf9 test eax, eax ; +0x11b, 0x180013cfb jnz short loc_180013D06 ; +0x11d, 0x180013cfd movss xmm7, [rbp+arg_0] ; +0x11f, 0x180013cff jmp short loc_180013D38 ; +0x124, 0x180013d04 movss xmm0, [rbp+arg_4] ; +0x126, 0x180013d06 movss xmm1, [rbp+arg_0] ; +0x12b, 0x180013d0b mulss xmm0, xmm0 ; +0x130, 0x180013d10 mulss xmm1, xmm1 ; +0x134, 0x180013d14 addss xmm1, xmm0 ; +0x138, 0x180013d18 xorps xmm0, xmm0 ; +0x13c, 0x180013d1c ucomiss xmm0, xmm1 ; +0x13f, 0x180013d1f ja short loc_180013D2D ; +0x142, 0x180013d22 xorps xmm7, xmm7 ; +0x144, 0x180013d24 sqrtss xmm7, xmm1 ; +0x147, 0x180013d27 jmp short loc_180013D38 ; +0x14b, 0x180013d2b movaps xmm0, xmm1; X ; +0x14d, 0x180013d2d call sqrtf ; +0x150, 0x180013d30 movaps xmm7, xmm0 ; +0x155, 0x180013d35 cmp byte ptr [rdi+88h], 0 ; +0x158, 0x180013d38 jnz short loc_180013DB5 ; +0x15f, 0x180013d3f call cs:?sharedOpenGLView@CCEGLView@cocos2d@@SAPEAV12@XZ; cocos2d::CCEGLView::sharedOpenGLView(void) ; +0x161, 0x180013d41 mov rcx, rax ; +0x167, 0x180013d47 call cs:?getScaleY@CCEGLViewProtocol@cocos2d@@QEBAMXZ; cocos2d::CCEGLViewProtocol::getScaleY(void) ; +0x16a, 0x180013d4a movaps xmm6, xmm0 ; +0x170, 0x180013d50 call cs:?sharedOpenGLView@CCEGLView@cocos2d@@SAPEAV12@XZ; cocos2d::CCEGLView::sharedOpenGLView(void) ; +0x173, 0x180013d53 mov rcx, rax ; +0x179, 0x180013d59 call cs:?getScaleX@CCEGLViewProtocol@cocos2d@@QEBAMXZ; cocos2d::CCEGLViewProtocol::getScaleX(void) ; +0x17c, 0x180013d5c addss xmm6, xmm0 ; +0x182, 0x180013d62 mulss xmm6, cs:dword_180029510 ; +0x186, 0x180013d66 mulss xmm6, xmm7 ; +0x18e, 0x180013d6e call cs:?getDPI@CCDevice@cocos2d@@SAHXZ; cocos2d::CCDevice::getDPI(void) ; +0x192, 0x180013d72 movss xmm0, cs:dword_1800294FC ; +0x198, 0x180013d78 xorps xmm1, xmm1 ; +0x1a0, 0x180013d80 cvtsi2ss xmm1, eax ; +0x1a3, 0x180013d83 divss xmm6, xmm1 ; +0x1a7, 0x180013d87 andps xmm6, cs:xmmword_180029600 ; +0x1ab, 0x180013d8b comiss xmm0, xmm6 ; +0x1b2, 0x180013d92 ja loc_180013EAC ; +0x1b5, 0x180013d95 cmp byte ptr [rdi+88h], 0 ; +0x1bb, 0x180013d9b jnz short loc_180013DB5 ; +0x1c2, 0x180013da2 lea rdx, unk_180048620 ; +0x1c4, 0x180013da4 lea rcx, [rbp+arg_0] ; +0x1cb, 0x180013dab call cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0x1cf, 0x180013daf lea rdx, [rbp+arg_18] ; +0x1d5, 0x180013db5 lea rcx, [rdi+0A8h] ; +0x1d9, 0x180013db9 call cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0x1e0, 0x180013dc0 lea r8, [rbp+arg_18] ; +0x1e6, 0x180013dc6 mov byte ptr [rdi+88h], 1 ; +0x1ea, 0x180013dca lea rdx, [rbp+var_50] ; +0x1f1, 0x180013dd1 mov rcx, rsi ; +0x1f5, 0x180013dd5 call cs:?convertToWorldSpace@CCNode@cocos2d@@QEAA?AVCCPoint@2@AEBV32@@Z; cocos2d::CCNode::convertToWorldSpace(cocos2d::CCPoint const &) ; +0x1f8, 0x180013dd8 mov rdx, rax ; +0x1fe, 0x180013dde lea rcx, [rbp+var_30] ; +0x201, 0x180013de1 call cs:?containsPoint@CCRect@cocos2d@@QEBA_NAEBVCCPoint@2@@Z; cocos2d::CCRect::containsPoint(cocos2d::CCPoint const &) ; +0x205, 0x180013de5 test al, al ; +0x20b, 0x180013deb jz loc_180013EAC ; +0x20d, 0x180013ded mov ecx, [rdi+70h] ; +0x213, 0x180013df3 test ecx, ecx ; +0x216, 0x180013df6 jz short loc_180013E09 ; +0x218, 0x180013df8 cmp ecx, 1 ; +0x21a, 0x180013dfa jnz short loc_180013E28 ; +0x21d, 0x180013dfd movss xmm2, [rbp+arg_4] ; +0x21f, 0x180013dff xorps xmm1, xmm1 ; +0x224, 0x180013e04 jmp short loc_180013E11 ; +0x227, 0x180013e07 movss xmm1, [rbp+arg_0] ; +0x229, 0x180013e09 xorps xmm2, xmm2 ; +0x22e, 0x180013e0e lea rcx, [rbp+var_50] ; +0x231, 0x180013e11 call cs:??0CCPoint@cocos2d@@QEAA@MM@Z; cocos2d::CCPoint::CCPoint(float,float) ; +0x235, 0x180013e15 mov rdx, rax ; +0x23b, 0x180013e1b lea rcx, [rbp+arg_0] ; +0x23e, 0x180013e1e call cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0x242, 0x180013e22 lea rdx, [rdi+8Ch] ; +0x248, 0x180013e28 lea rcx, [rbp+var_40] ; +0x24f, 0x180013e2f call cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0x253, 0x180013e33 lea rdx, [rdi+94h] ; +0x259, 0x180013e39 lea rcx, [rbp+var_38] ; +0x260, 0x180013e40 call cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0x264, 0x180013e44 mov rcx, [rdi+80h] ; +0x26a, 0x180013e4a mov rax, [rcx] ; +0x271, 0x180013e51 call qword ptr [rax+0C8h] ; +0x274, 0x180013e54 mov rcx, [rdi+80h] ; +0x27a, 0x180013e5a movss xmm7, [rbp+arg_0] ; +0x281, 0x180013e61 addss xmm7, dword ptr [rax] ; +0x286, 0x180013e66 mov rax, [rcx] ; +0x28a, 0x180013e6a call qword ptr [rax+0C8h] ; +0x28d, 0x180013e6d movss xmm6, [rbp+arg_4] ; +0x293, 0x180013e73 lea rcx, [rdi+0A0h] ; +0x298, 0x180013e78 lea rdx, [rbp+arg_0] ; +0x29f, 0x180013e7f addss xmm6, dword ptr [rax+4] ; +0x2a3, 0x180013e83 call cs:??4CCPoint@cocos2d@@QEAAAEAV01@AEBV01@@Z; cocos2d::CCPoint::operator=(cocos2d::CCPoint const &) ; +0x2a8, 0x180013e88 movaps xmm2, xmm6 ; +0x2ae, 0x180013e8e lea rcx, [rbp+var_50] ; +0x2b1, 0x180013e91 movaps xmm1, xmm7 ; +0x2b5, 0x180013e95 call cs:??0CCPoint@cocos2d@@QEAA@MM@Z; cocos2d::CCPoint::CCPoint(float,float) ; +0x2b8, 0x180013e98 xor r8d, r8d ; +0x2be, 0x180013e9e mov rcx, rsi ; +0x2c1, 0x180013ea1 mov rdx, rax ; +0x2c4, 0x180013ea4 call ?setContentOffset@CCScrollView@extension@cocos2d@@QEAAXVCCPoint@3@_N@Z; cocos2d::extension::CCScrollView::setContentOffset(cocos2d::CCPoint,bool) ; +0x2c7, 0x180013ea7 movaps xmm7, [rsp+70h+var_20] ; +0x2cc, 0x180013eac movaps xmm6, [rsp+70h+var_10] ; +0x2d1, 0x180013eb1 mov rbx, [rsp+70h+arg_8] ; +0x2d6, 0x180013eb6 add rsp, 70h ; +0x2de, 0x180013ebe pop rdi ; +0x2e2, 0x180013ec2 pop rsi ; +0x2e3, 0x180013ec3 pop rbp ; +0x2e4, 0x180013ec4 retn ; +0x2e5, 0x180013ec5 mov rcx, [rdi+0B8h] ; +0x2e6, 0x180013ec6 call cs:?count@CCArray@cocos2d@@QEBAIXZ; cocos2d::CCArray::count(void) ; +0x2ed, 0x180013ecd cmp eax, 2 ; +0x2f3, 0x180013ed3 jnz short loc_180013EB1 ; +0x2f6, 0x180013ed6 cmp byte ptr [rdi+74h], 0 ; +0x2f8, 0x180013ed8 jnz short loc_180013EB1 ; +0x2fc, 0x180013edc mov rcx, [rdi+0B8h] ; +0x2fe, 0x180013ede lea edx, [rax-1] ; +0x305, 0x180013ee5 call cs:?objectAtIndex@CCArray@cocos2d@@QEAAPEAVCCObject@2@I@Z; cocos2d::CCArray::objectAtIndex(uint) ; +0x308, 0x180013ee8 mov rcx, [rdi+80h] ; +0x30e, 0x180013eee lea rdx, [rbp+arg_0] ; +0x315, 0x180013ef5 mov r8, rax ; +0x319, 0x180013ef9 call cs:?convertTouchToNodeSpace@CCNode@cocos2d@@QEAA?AVCCPoint@2@PEAVCCTouch@2@@Z; cocos2d::CCNode::convertTouchToNodeSpace(cocos2d::CCTouch *) ; +0x31c, 0x180013efc mov rcx, [rdi+0B8h] ; +0x322, 0x180013f02 xor edx, edx ; +0x329, 0x180013f09 mov rbx, rax ; +0x32b, 0x180013f0b call cs:?objectAtIndex@CCArray@cocos2d@@QEAAPEAVCCObject@2@I@Z; cocos2d::CCArray::objectAtIndex(uint) ; +0x32e, 0x180013f0e mov rcx, [rdi+80h] ; +0x334, 0x180013f14 lea rdx, [rbp+arg_18] ; +0x33b, 0x180013f1b mov r8, rax ; +0x33f, 0x180013f1f call cs:?convertTouchToNodeSpace@CCNode@cocos2d@@QEAA?AVCCPoint@2@PEAVCCTouch@2@@Z; cocos2d::CCNode::convertTouchToNodeSpace(cocos2d::CCTouch *) ; +0x342, 0x180013f22 mov rcx, rax ; +0x348, 0x180013f28 mov rdx, rbx ; +0x34b, 0x180013f2b call cs:?ccpDistance@cocos2d@@YAMAEBVCCPoint@1@0@Z; cocos2d::ccpDistance(cocos2d::CCPoint const &,cocos2d::CCPoint const &) ; +0x34e, 0x180013f2e mov rcx, [rdi+80h] ; +0x354, 0x180013f34 movaps xmm6, xmm0 ; +0x35b, 0x180013f3b mov rax, [rcx] ; +0x35e, 0x180013f3e call qword ptr [rax+0A8h] ; +0x361, 0x180013f41 mulss xmm0, xmm6 ; +0x367, 0x180013f47 mov rcx, rsi; this ; +0x36b, 0x180013f4b divss xmm0, dword ptr [rdi+0B0h] ; +0x36e, 0x180013f4e movaps xmm1, xmm0; float ; +0x376, 0x180013f56 call ?setZoomScale@CCScrollView@extension@cocos2d@@QEAAXM@Z; cocos2d::extension::CCScrollView::setZoomScale(float) ; +0x379, 0x180013f59 jmp loc_180013EB1 ; +0x37e, 0x180013f5e