// // cocos2d::extension::AssetsManager::downLoad from 0x180002510 to 0x180002824 (788 bytes) // // 3 xrefs: // > sub_180001B60 @ 0x180001baf // > @ 0x18002fdf8 // > @ 0x180049144 // // 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 __int64 __fastcall cocos2d::extension::AssetsManager::downLoad(cocos2d::extension::AssetsManager *this) { _QWORD *v2; // r14 size_t v3; // rbp size_t v4; // r15 unsigned __int64 v5; // rbx char *v6; // rdi size_t v7; // rax void *v8; // rax const char *v9; // rcx FILE *v10; // rdi _QWORD *v11; // rax unsigned __int8 v12; // bl int v13; // ebx _QWORD *v14; // rax char *v15; // rcx _QWORD *v17; // [rsp+20h] [rbp-58h] _QWORD *v18; // [rsp+20h] [rbp-58h] char *FileName[2]; // [rsp+28h] [rbp-50h] BYREF size_t v20; // [rsp+38h] [rbp-40h] unsigned __int64 v21; // [rsp+40h] [rbp-38h] v2 = (_QWORD *)((char *)this + 8); v3 = *((_QWORD *)this + 3); if ( 0x7FFFFFFFFFFFFFFFLL - v3 < 0x20 ) sub_180003D90(); if ( *((_QWORD *)this + 4) > 0xFu ) v2 = (_QWORD *)*v2; *(_OWORD *)FileName = 0; v20 = 0; v21 = 0; v4 = v3 + 32; v5 = 15; v6 = (char *)FileName; if ( v3 + 32 > 0xF ) { v5 = v4 | 0xF; if ( (v4 | 0xF) <= 0x7FFFFFFFFFFFFFFFLL ) { if ( v5 < 0x16 ) v5 = 22; if ( v5 + 1 < 0x1000 ) { if ( v5 == -1 ) v6 = nullptr; else v6 = (char *)operator new(v5 + 1); LABEL_17: FileName[0] = v6; goto LABEL_18; } v7 = v5 + 40; if ( v5 + 40 < v5 + 1 ) Concurrency::cancel_current_task(); } else { v5 = 0x7FFFFFFFFFFFFFFFLL; v7 = 0x8000000000000027uLL; } v8 = operator new(v7); if ( !v8 ) goto LABEL_28; v6 = (char *)(((unsigned __int64)v8 + 39) & 0xFFFFFFFFFFFFFFE0uLL); *((_QWORD *)v6 - 1) = v8; goto LABEL_17; } LABEL_18: v20 = v3 + 32; v21 = v5; memcpy(v6, v2, v3); qmemcpy(&v6[v3], "cocos2dx-update-temp-package.zip", 32); v6[v4] = 0; v9 = (const char *)FileName; if ( v21 > 0xF ) v9 = FileName[0]; v10 = fopen(v9, "wb"); if ( v10 ) { curl_easy_setopt(*((_QWORD *)this + 21), 10002); curl_easy_setopt(*((_QWORD *)this + 21), 20011); curl_easy_setopt(*((_QWORD *)this + 21), 10001); curl_easy_setopt(*((_QWORD *)this + 21), 43); curl_easy_setopt(*((_QWORD *)this + 21), 20056); curl_easy_setopt(*((_QWORD *)this + 21), 10057); v13 = curl_easy_perform(*((_QWORD *)this + 21)); curl_easy_cleanup(*((_QWORD *)this + 21)); if ( v13 ) { v18 = operator new(0x10u); v18[1] = 0; *(_DWORD *)v18 = 3; v14 = operator new(0x10u); *v14 = 1; v14[1] = this; v18[1] = v14; sub_180002B70(*((_QWORD *)this + 22), v18); fclose(v10); v12 = 0; } else { fclose(v10); v12 = 1; } } else { v17 = operator new(0x10u); v17[1] = 0; *(_DWORD *)v17 = 3; v11 = operator new(0x10u); *v11 = 0; v11[1] = this; v17[1] = v11; sub_180002B70(*((_QWORD *)this + 22), v17); v12 = 0; } if ( v21 > 0xF ) { v15 = FileName[0]; if ( v21 + 1 >= 0x1000 ) { v15 = *((char **)FileName[0] - 1); if ( (unsigned __int64)(FileName[0] - v15 - 8) > 0x1F ) LABEL_28: invalid_parameter_noinfo_noreturn(); } j_j_free(v15); } return v12; }