// // 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 // // Hidden C++ exception states: #wind=1 char __fastcall sub_18000C110( __int64 *a1, __int64 a2, cocos2d::CCObject *a3, cocos2d::CCObject *a4, cocos2d::CCObject *a5, cocos2d::CCObject *a6, cocos2d::CCObject *a7) { __int64 v10; // r14 struct cocos2d::CCTexture2D *v11; // rax cocos2d::CCObject *v12; // rbx float v13; // xmm6_4 cocos2d::CCObject *v14; // rcx cocos2d::CCObject *v15; // rcx cocos2d::CCObject *v16; // rcx cocos2d::CCObject *v17; // rbx cocos2d::CCObject *v18; // rcx cocos2d::CCObject *v19; // rbx cocos2d::CCObject *v20; // rcx cocos2d::CCObject *v21; // rax cocos2d::CCObject *v22; // rbx cocos2d::CCObject *v23; // rcx cocos2d::CCGLProgram *v24; // rbx cocos2d::CCGLProgram *v25; // rax cocos2d::CCGLProgram *v26; // rax cocos2d::CCGLProgram *v27; // rax cocos2d::CCGLProgram *v28; // rax cocos2d::CCGLProgram *v29; // rax __int64 v30; // rax __int64 v31; // rax __int64 v32; // rbx __int64 v33; // rax cocos2d::CCGLProgram *v35; // [rsp+58h] [rbp+10h] BYREF v10 = a2 + 344; v11 = (struct cocos2d::CCTexture2D *)(*(__int64 (__fastcall **)(__int64))(*(_QWORD *)(a2 + 344) + 16LL))(a2 + 344); if ( !cocos2d::CCSprite::initWithTexture((cocos2d::CCSprite *)a1, v11) ) return 0; *((_DWORD *)a1 + 153) = 0; v12 = a5; v13 = *(float *)(*(__int64 (__fastcall **)(cocos2d::CCObject *))(*(_QWORD *)a5 + 304LL))(a5); *((float *)a1 + 154) = (float)(v13 * 0.5) - *(float *)(*(__int64 (__fastcall **)(cocos2d::CCObject *))(*(_QWORD *)a3 + 304LL))(a3); *((_DWORD *)a1 + 152) = *((_DWORD *)a1 + 153); if ( (cocos2d::CCObject *)a1[80] != a3 ) { cocos2d::CCObject::retain(a3); v14 = (cocos2d::CCObject *)a1[80]; if ( v14 ) cocos2d::CCObject::release(v14); a1[80] = (__int64)a3; } if ( (cocos2d::CCObject *)a1[81] != a4 ) { if ( a4 ) cocos2d::CCObject::retain(a4); v15 = (cocos2d::CCObject *)a1[81]; if ( v15 ) cocos2d::CCObject::release(v15); a1[81] = (__int64)a4; } if ( (cocos2d::CCObject *)a1[82] != v12 ) { cocos2d::CCObject::retain(v12); v16 = (cocos2d::CCObject *)a1[82]; if ( v16 ) cocos2d::CCObject::release(v16); a1[82] = (__int64)v12; } v17 = a6; if ( (cocos2d::CCObject *)a1[83] != a6 ) { if ( a6 ) cocos2d::CCObject::retain(a6); v18 = (cocos2d::CCObject *)a1[83]; if ( v18 ) cocos2d::CCObject::release(v18); a1[83] = (__int64)v17; } v19 = a7; if ( (cocos2d::CCObject *)a1[84] != a7 ) { if ( a7 ) cocos2d::CCObject::retain(a7); v20 = (cocos2d::CCObject *)a1[84]; if ( v20 ) cocos2d::CCObject::release(v20); a1[84] = (__int64)v19; } (*(void (__fastcall **)(__int64 *, __int64))(*a1 + 448))(a1, a1[82]); v21 = (cocos2d::CCObject *)(*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v10 + 16LL))(v10); v22 = v21; if ( (cocos2d::CCObject *)a1[78] != v21 ) { if ( v21 ) cocos2d::CCObject::retain(v21); v23 = (cocos2d::CCObject *)a1[78]; if ( v23 ) cocos2d::CCObject::release(v23); a1[78] = (__int64)v22; } v24 = (cocos2d::CCGLProgram *)operator new(0x78u); v35 = v24; cocos2d::CCGLProgram::CCGLProgram(v24); *(_QWORD *)v24 = &cocos2d::CCGLProgram::`vftable'; cocos2d::CCGLProgram::initWithVertexShaderByteArray( v24, cocos2d::ccPositionTextureColor_vert, cocos2d::ccExSwitchMask_frag); (*(void (__fastcall **)(__int64 *, cocos2d::CCGLProgram *))(*a1 + 640))(a1, v24); cocos2d::CCObject::release(v24); v25 = (cocos2d::CCGLProgram *)(*(__int64 (__fastcall **)(__int64 *))(*a1 + 632))(a1); cocos2d::CCGLProgram::addAttribute(v25, "a_position", 0); v26 = (cocos2d::CCGLProgram *)(*(__int64 (__fastcall **)(__int64 *))(*a1 + 632))(a1); cocos2d::CCGLProgram::addAttribute(v26, "a_color", 1u); v27 = (cocos2d::CCGLProgram *)(*(__int64 (__fastcall **)(__int64 *))(*a1 + 632))(a1); cocos2d::CCGLProgram::addAttribute(v27, "a_texCoord", 2u); v28 = (cocos2d::CCGLProgram *)(*(__int64 (__fastcall **)(__int64 *))(*a1 + 632))(a1); cocos2d::CCGLProgram::link(v28); v29 = (cocos2d::CCGLProgram *)(*(__int64 (__fastcall **)(__int64 *))(*a1 + 632))(a1); cocos2d::CCGLProgram::updateUniforms(v29); v30 = (*(__int64 (__fastcall **)(__int64 *))(*a1 + 632))(a1); *((_DWORD *)a1 + 158) = _glewGetUniformLocation(*(unsigned int *)(v30 + 56), "u_texture"); v31 = (*(__int64 (__fastcall **)(__int64 *))(*a1 + 632))(a1); *((_DWORD *)a1 + 159) = _glewGetUniformLocation(*(unsigned int *)(v31 + 56), "u_mask"); v32 = *a1; v33 = (*(__int64 (__fastcall **)(__int64, cocos2d::CCGLProgram **))(*(_QWORD *)a1[78] + 136LL))(a1[78], &v35); (*(void (__fastcall **)(__int64 *, __int64))(v32 + 296))(a1, v33); sub_18000C670(a1); return 1; }