// // sub_180003AB0 from 0x180003ab0 to 0x180003bbf (271 bytes) // // 19 xrefs: // > cocos2d::extension::AssetsManager::AssetsManager @ 0x1800014e0 // > cocos2d::extension::AssetsManager::AssetsManager @ 0x18000151d // > cocos2d::extension::AssetsManager::AssetsManager @ 0x180001545 // > sub_180002C10 @ 0x180002d3f // > sub_180002DE0 @ 0x180002e3e // > cocos2d::extension::CCControlButton::initWithLabelAndBackgroundSprite @ 0x180005c82 // > cocos2d::extension::CCEditBoxImplWin::openKeyboard @ 0x180011d71 // > cocos2d::extension::CCEditBoxImplWin::openKeyboard @ 0x180011f12 // > cocos2d::extension::CCEditBoxImplWin::openKeyboard @ 0x180011fcb // > cocos2d::extension::WebSocket::init @ 0x180019d4b // > cocos2d::extension::WebSocket::init @ 0x180019ea4 // > CWin32InputBox::InitDialog @ 0x18001e383 // > CWin32InputBox::InitDialog @ 0x18001e413 // > CWin32InputBox::InitDialog @ 0x18001e4f0 // > CWin32InputBox::DlgProc @ 0x18001e72e // > @ 0x18002d36c // > @ 0x18002d37c // > @ 0x18002d390 // > @ 0x1800492d0 // // 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 // void *__fastcall sub_180003AB0(_QWORD *a1, const void *a2, size_t a3) { __int64 v3; // rdi void *result; // rax size_t v8; // rax void *v9; // rax _QWORD *v10; // rsi v3 = 0x7FFFFFFFFFFFFFFFLL; if ( a3 > 0x7FFFFFFFFFFFFFFFLL ) sub_180003D90(); a1[3] = 15; if ( a3 <= 0xF ) { a1[2] = a3; result = memcpy(a1, a2, a3); *((_BYTE *)a1 + a3) = 0; return result; } if ( (a3 | 0xF) > 0x7FFFFFFFFFFFFFFFLL ) { v8 = 0x8000000000000027uLL; LABEL_6: v9 = operator new(v8); if ( !v9 ) invalid_parameter_noinfo_noreturn(); v10 = (_QWORD *)(((unsigned __int64)v9 + 39) & 0xFFFFFFFFFFFFFFE0uLL); *(v10 - 1) = v9; goto LABEL_17; } v3 = a3 | 0xF; if ( (a3 | 0xF) < 0x16 ) v3 = 22; if ( (unsigned __int64)(v3 + 1) >= 0x1000 ) { v8 = v3 + 40; if ( v3 + 40 < (unsigned __int64)(v3 + 1) ) Concurrency::cancel_current_task(); goto LABEL_6; } if ( v3 == -1 ) v10 = nullptr; else v10 = operator new(v3 + 1); LABEL_17: *a1 = v10; a1[2] = a3; a1[3] = v3; result = memcpy(v10, a2, a3); *((_BYTE *)v10 + a3) = 0; return result; }