; ; sub_18000C110 from 0x18000c110 to 0x18000c45c (844 bytes) ; ; 2 xrefs: ; > cocos2d::extension::CCControlSwitch::initWithMaskSprite @ 0x18000cce6 ; > @ 0x180049d38 ; ; 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+arg_0], rbx ; +0x0, 0x18000c110 mov [rsp+arg_10], rbp ; +0x5, 0x18000c115 push rsi ; +0xa, 0x18000c11a push rdi ; +0xb, 0x18000c11b push r14 ; +0xc, 0x18000c11c sub rsp, 30h ; +0xe, 0x18000c11e movaps [rsp+48h+var_28], xmm6 ; +0x12, 0x18000c122 mov rbp, r9 ; +0x17, 0x18000c127 mov rsi, r8 ; +0x1a, 0x18000c12a mov rdi, rcx ; +0x1d, 0x18000c12d lea r14, [rdx+158h] ; +0x20, 0x18000c130 mov rax, [r14] ; +0x27, 0x18000c137 mov rcx, r14 ; +0x2a, 0x18000c13a call qword ptr [rax+10h] ; +0x2d, 0x18000c13d mov rdx, rax ; +0x30, 0x18000c140 mov rcx, rdi ; +0x33, 0x18000c143 call cs:__imp_?initWithTexture@CCSprite@cocos2d@@UEAA_NPEAVCCTexture2D@2@@Z; cocos2d::CCSprite::initWithTexture(cocos2d::CCTexture2D *) ; +0x36, 0x18000c146 test al, al ; +0x3c, 0x18000c14c jz loc_18000C442 ; +0x3e, 0x18000c14e mov dword ptr [rdi+264h], 0 ; +0x44, 0x18000c154 mov rbx, [rsp+48h+arg_20] ; +0x4e, 0x18000c15e mov rax, [rbx] ; +0x53, 0x18000c163 mov rcx, rbx ; +0x56, 0x18000c166 call qword ptr [rax+130h] ; +0x59, 0x18000c169 movss xmm6, dword ptr [rax] ; +0x5f, 0x18000c16f mov rax, [rsi] ; +0x63, 0x18000c173 mov rcx, rsi ; +0x66, 0x18000c176 call qword ptr [rax+130h] ; +0x69, 0x18000c179 mulss xmm6, cs:dword_180029510 ; +0x6f, 0x18000c17f subss xmm6, dword ptr [rax] ; +0x77, 0x18000c187 movss dword ptr [rdi+268h], xmm6 ; +0x7b, 0x18000c18b mov eax, [rdi+264h] ; +0x83, 0x18000c193 mov [rdi+260h], eax ; +0x89, 0x18000c199 cmp [rdi+280h], rsi ; +0x8f, 0x18000c19f jz short loc_18000C1CA ; +0x96, 0x18000c1a6 mov rcx, rsi ; +0x98, 0x18000c1a8 call cs:?retain@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::retain(void) ; +0x9b, 0x18000c1ab mov rcx, [rdi+280h] ; +0xa1, 0x18000c1b1 test rcx, rcx ; +0xa8, 0x18000c1b8 jz short loc_18000C1C3 ; +0xab, 0x18000c1bb call cs:?release@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::release(void) ; +0xad, 0x18000c1bd mov [rdi+280h], rsi ; +0xb3, 0x18000c1c3 cmp [rdi+288h], rbp ; +0xba, 0x18000c1ca jz short loc_18000C1FA ; +0xc1, 0x18000c1d1 test rbp, rbp ; +0xc3, 0x18000c1d3 jz short loc_18000C1E1 ; +0xc6, 0x18000c1d6 mov rcx, rbp ; +0xc8, 0x18000c1d8 call cs:?retain@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::retain(void) ; +0xcb, 0x18000c1db mov rcx, [rdi+288h] ; +0xd1, 0x18000c1e1 test rcx, rcx ; +0xd8, 0x18000c1e8 jz short loc_18000C1F3 ; +0xdb, 0x18000c1eb call cs:?release@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::release(void) ; +0xdd, 0x18000c1ed mov [rdi+288h], rbp ; +0xe3, 0x18000c1f3 cmp [rdi+290h], rbx ; +0xea, 0x18000c1fa jz short loc_18000C225 ; +0xf1, 0x18000c201 mov rcx, rbx ; +0xf3, 0x18000c203 call cs:?retain@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::retain(void) ; +0xf6, 0x18000c206 mov rcx, [rdi+290h] ; +0xfc, 0x18000c20c test rcx, rcx ; +0x103, 0x18000c213 jz short loc_18000C21E ; +0x106, 0x18000c216 call cs:?release@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::release(void) ; +0x108, 0x18000c218 mov [rdi+290h], rbx ; +0x10e, 0x18000c21e mov rbx, [rsp+48h+arg_28] ; +0x115, 0x18000c225 cmp [rdi+298h], rbx ; +0x11a, 0x18000c22a jz short loc_18000C25A ; +0x121, 0x18000c231 test rbx, rbx ; +0x123, 0x18000c233 jz short loc_18000C241 ; +0x126, 0x18000c236 mov rcx, rbx ; +0x128, 0x18000c238 call cs:?retain@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::retain(void) ; +0x12b, 0x18000c23b mov rcx, [rdi+298h] ; +0x131, 0x18000c241 test rcx, rcx ; +0x138, 0x18000c248 jz short loc_18000C253 ; +0x13b, 0x18000c24b call cs:?release@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::release(void) ; +0x13d, 0x18000c24d mov [rdi+298h], rbx ; +0x143, 0x18000c253 mov rbx, [rsp+48h+arg_30] ; +0x14a, 0x18000c25a cmp [rdi+2A0h], rbx ; +0x152, 0x18000c262 jz short loc_18000C292 ; +0x159, 0x18000c269 test rbx, rbx ; +0x15b, 0x18000c26b jz short loc_18000C279 ; +0x15e, 0x18000c26e mov rcx, rbx ; +0x160, 0x18000c270 call cs:?retain@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::retain(void) ; +0x163, 0x18000c273 mov rcx, [rdi+2A0h] ; +0x169, 0x18000c279 test rcx, rcx ; +0x170, 0x18000c280 jz short loc_18000C28B ; +0x173, 0x18000c283 call cs:?release@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::release(void) ; +0x175, 0x18000c285 mov [rdi+2A0h], rbx ; +0x17b, 0x18000c28b mov rax, [rdi] ; +0x182, 0x18000c292 mov rdx, [rdi+290h] ; +0x185, 0x18000c295 mov rcx, rdi ; +0x18c, 0x18000c29c call qword ptr [rax+1C0h] ; +0x18f, 0x18000c29f mov rax, [r14] ; +0x195, 0x18000c2a5 mov rcx, r14 ; +0x198, 0x18000c2a8 call qword ptr [rax+10h] ; +0x19b, 0x18000c2ab mov rbx, rax ; +0x19e, 0x18000c2ae cmp [rdi+270h], rax ; +0x1a1, 0x18000c2b1 jz short loc_18000C2E1 ; +0x1a8, 0x18000c2b8 test rax, rax ; +0x1aa, 0x18000c2ba jz short loc_18000C2C8 ; +0x1ad, 0x18000c2bd mov rcx, rax ; +0x1af, 0x18000c2bf call cs:?retain@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::retain(void) ; +0x1b2, 0x18000c2c2 mov rcx, [rdi+270h] ; +0x1b8, 0x18000c2c8 test rcx, rcx ; +0x1bf, 0x18000c2cf jz short loc_18000C2DA ; +0x1c2, 0x18000c2d2 call cs:?release@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::release(void) ; +0x1c4, 0x18000c2d4 mov [rdi+270h], rbx ; +0x1ca, 0x18000c2da mov ecx, 78h ; 'x'; Size ; +0x1d1, 0x18000c2e1 call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0x1d6, 0x18000c2e6 mov rbx, rax ; +0x1db, 0x18000c2eb mov [rsp+48h+arg_8], rax ; +0x1de, 0x18000c2ee mov rcx, rax ; +0x1e3, 0x18000c2f3 call cs:??0CCGLProgram@cocos2d@@QEAA@XZ; cocos2d::CCGLProgram::CCGLProgram(void) ; +0x1e6, 0x18000c2f6 lea rax, ??_7CCGLProgram@cocos2d@@6B@; const cocos2d::CCGLProgram::`vftable' ; +0x1ec, 0x18000c2fc mov [rbx], rax ; +0x1f3, 0x18000c303 mov r8, cs:?ccExSwitchMask_frag@cocos2d@@3PEBDEB; char const * const cocos2d::ccExSwitchMask_frag ; +0x1f6, 0x18000c306 mov r8, [r8] ; +0x1fd, 0x18000c30d mov rdx, cs:?ccPositionTextureColor_vert@cocos2d@@3PEBDEB; char const * const cocos2d::ccPositionTextureColor_vert ; +0x200, 0x18000c310 mov rdx, [rdx] ; +0x207, 0x18000c317 mov rcx, rbx ; +0x20a, 0x18000c31a call cs:?initWithVertexShaderByteArray@CCGLProgram@cocos2d@@QEAA_NPEBD0@Z; cocos2d::CCGLProgram::initWithVertexShaderByteArray(char const *,char const *) ; +0x20d, 0x18000c31d mov rax, [rdi] ; +0x213, 0x18000c323 mov rdx, rbx ; +0x216, 0x18000c326 mov rcx, rdi ; +0x219, 0x18000c329 call qword ptr [rax+280h] ; +0x21c, 0x18000c32c mov rcx, rbx ; +0x222, 0x18000c332 call cs:?release@CCObject@cocos2d@@QEAAXXZ; cocos2d::CCObject::release(void) ; +0x225, 0x18000c335 mov rax, [rdi] ; +0x22b, 0x18000c33b mov rcx, rdi ; +0x22e, 0x18000c33e call qword ptr [rax+278h] ; +0x231, 0x18000c341 mov rcx, rax ; +0x237, 0x18000c347 xor r8d, r8d ; +0x23a, 0x18000c34a lea rdx, aAPosition; "a_position" ; +0x23d, 0x18000c34d call cs:?addAttribute@CCGLProgram@cocos2d@@QEAAXPEBDI@Z; cocos2d::CCGLProgram::addAttribute(char const *,uint) ; +0x244, 0x18000c354 mov rax, [rdi] ; +0x24a, 0x18000c35a mov rcx, rdi ; +0x24d, 0x18000c35d call qword ptr [rax+278h] ; +0x250, 0x18000c360 mov rcx, rax ; +0x256, 0x18000c366 mov r8d, 1 ; +0x259, 0x18000c369 lea rdx, aAColor; "a_color" ; +0x25f, 0x18000c36f call cs:?addAttribute@CCGLProgram@cocos2d@@QEAAXPEBDI@Z; cocos2d::CCGLProgram::addAttribute(char const *,uint) ; +0x266, 0x18000c376 mov rax, [rdi] ; +0x26c, 0x18000c37c mov rcx, rdi ; +0x26f, 0x18000c37f call qword ptr [rax+278h] ; +0x272, 0x18000c382 mov rcx, rax ; +0x278, 0x18000c388 mov r8d, 2 ; +0x27b, 0x18000c38b lea rdx, aATexcoord; "a_texCoord" ; +0x281, 0x18000c391 call cs:?addAttribute@CCGLProgram@cocos2d@@QEAAXPEBDI@Z; cocos2d::CCGLProgram::addAttribute(char const *,uint) ; +0x288, 0x18000c398 mov rax, [rdi] ; +0x28e, 0x18000c39e mov rcx, rdi ; +0x291, 0x18000c3a1 call qword ptr [rax+278h] ; +0x294, 0x18000c3a4 mov rcx, rax ; +0x29a, 0x18000c3aa call cs:?link@CCGLProgram@cocos2d@@QEAA_NXZ; cocos2d::CCGLProgram::link(void) ; +0x29d, 0x18000c3ad mov rax, [rdi] ; +0x2a3, 0x18000c3b3 mov rcx, rdi ; +0x2a6, 0x18000c3b6 call qword ptr [rax+278h] ; +0x2a9, 0x18000c3b9 mov rcx, rax ; +0x2af, 0x18000c3bf call cs:?updateUniforms@CCGLProgram@cocos2d@@QEAAXXZ; cocos2d::CCGLProgram::updateUniforms(void) ; +0x2b2, 0x18000c3c2 mov rax, [rdi] ; +0x2b8, 0x18000c3c8 mov rcx, rdi ; +0x2bb, 0x18000c3cb call qword ptr [rax+278h] ; +0x2be, 0x18000c3ce lea rdx, aUTexture; "u_texture" ; +0x2c4, 0x18000c3d4 mov ecx, [rax+38h] ; +0x2cb, 0x18000c3db mov rax, cs:__glewGetUniformLocation ; +0x2ce, 0x18000c3de call qword ptr [rax] ; +0x2d5, 0x18000c3e5 mov [rdi+278h], eax ; +0x2d7, 0x18000c3e7 mov rax, [rdi] ; +0x2dd, 0x18000c3ed mov rcx, rdi ; +0x2e0, 0x18000c3f0 call qword ptr [rax+278h] ; +0x2e3, 0x18000c3f3 lea rdx, aUMask; "u_mask" ; +0x2e9, 0x18000c3f9 mov ecx, [rax+38h] ; +0x2f0, 0x18000c400 mov rax, cs:__glewGetUniformLocation ; +0x2f3, 0x18000c403 call qword ptr [rax] ; +0x2fa, 0x18000c40a mov [rdi+27Ch], eax ; +0x2fc, 0x18000c40c mov rbx, [rdi] ; +0x302, 0x18000c412 mov rcx, [rdi+270h] ; +0x305, 0x18000c415 mov rax, [rcx] ; +0x30c, 0x18000c41c lea rdx, [rsp+48h+arg_8] ; +0x30f, 0x18000c41f call qword ptr [rax+88h] ; +0x314, 0x18000c424 mov rdx, rax ; +0x31a, 0x18000c42a mov rcx, rdi ; +0x31d, 0x18000c42d call qword ptr [rbx+128h] ; +0x320, 0x18000c430 mov rcx, rdi ; +0x326, 0x18000c436 call sub_18000C670 ; +0x329, 0x18000c439 mov al, 1 ; +0x32e, 0x18000c43e jmp short loc_18000C444 ; +0x330, 0x18000c440 xor al, al ; +0x332, 0x18000c442 mov rbx, [rsp+48h+arg_0] ; +0x334, 0x18000c444 mov rbp, [rsp+48h+arg_10] ; +0x339, 0x18000c449 movaps xmm6, [rsp+48h+var_28] ; +0x33e, 0x18000c44e add rsp, 30h ; +0x343, 0x18000c453 pop r14 ; +0x347, 0x18000c457 pop rdi ; +0x349, 0x18000c459 pop rsi ; +0x34a, 0x18000c45a retn ; +0x34b, 0x18000c45b