// // FMOD::SystemI::createDiskFile from 0x1800fde80 to 0x1800fe2fb (1147 bytes) // // 4 xrefs: // > sub_1800FE610 @ 0x1800fe878 // > @ 0x180194348 // > @ 0x180201058 // > @ 0x180201064 // // 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 // __int64 __fastcall FMOD::SystemI::createDiskFile(__int64 a1, char *a2, __int64 a3, __int64 *a4, _BYTE *a5) { int v9; // eax int v10; // ebp void *v11; // rax __int64 v12; // rbx void *v14; // rax __int64 v15; // rbx _DWORD *v16; // rdx __int64 v17; // r11 __int64 v18; // rax __int64 v19; // rcx __int64 v20; // r8 __int64 v21; // r9 __int64 v22; // r10 unsigned int v23; // ebx void *v24; // rax void *v25; // rax void *v26; // rax __int64 v27; // rax __int64 v28; // rbx char v29; // [rsp+30h] [rbp-28h] char v30; // [rsp+30h] [rbp-28h] char v31; // [rsp+30h] [rbp-28h] char v32; // [rsp+30h] [rbp-28h] char v33; // [rsp+30h] [rbp-28h] if ( a3 && (v9 = *(_DWORD *)(a3 + 176)) != 0 ) { v10 = 0; if ( v9 != -1 ) v10 = *(_DWORD *)(a3 + 176); } else { v10 = *(_DWORD *)(a1 + 69972); } if ( !(unsigned int)sub_1800B7FF0("fmod:///remote/", a2, 15) ) { v29 = 1; v11 = sub_1800B6530( *((_QWORD *)off_1801AED20 + 52), 512, "C:\\buildagent1\\work\\570ad728b1678096\\core_api\\src\\fmod_systemi_sound.cpp", 509, 0, 0, v29); v12 = (__int64)v11; if ( v11 ) { sub_1800B2170((__int64)v11); *(_DWORD *)(v12 + 56) = 5; *(_QWORD *)v12 = off_18016E7F8; sub_1800B3130(v12, a1, 0, *(_DWORD *)(a1 + 69972)); *a4 = v12; return 0; } goto LABEL_49; } if ( a3 && *(_QWORD *)(a3 + 120) && *(_QWORD *)(a3 + 128) && (*(_QWORD *)(a3 + 136) && *(_QWORD *)(a3 + 144) || *(_QWORD *)(a3 + 152) && *(_QWORD *)(a3 + 160)) && !*(_DWORD *)(a3 + 200) ) { v30 = 1; v14 = sub_1800B6530( *((_QWORD *)off_1801AED20 + 52), 568, "C:\\buildagent1\\work\\570ad728b1678096\\core_api\\src\\fmod_systemi_sound.cpp", 520, 0, 0, v30); if ( v14 ) { v15 = sub_1800FD640((__int64)v14); v16 = (_DWORD *)v15; if ( v15 ) { v17 = *(_QWORD *)(a3 + 120); v18 = *(_QWORD *)(a3 + 160); v19 = *(_QWORD *)(a3 + 152); v20 = *(_QWORD *)(a3 + 144); v21 = *(_QWORD *)(a3 + 136); v22 = *(_QWORD *)(a3 + 128); if ( !v17 || !v22 || (!v21 || !v20) && (!v19 || !v18) ) { v23 = 28; LABEL_51: if ( v16 ) sub_1800B6AA0(*((_QWORD *)off_1801AED20 + 52), v16); return v23; } *(_QWORD *)(v15 + 504) = v17; *(_QWORD *)(v15 + 512) = v22; *(_QWORD *)(v15 + 520) = v21; *(_QWORD *)(v15 + 528) = v20; *(_QWORD *)(v15 + 536) = v19; *(_QWORD *)(v15 + 544) = v18; *(_QWORD *)(v15 + 560) = *(_QWORD *)(a3 + 168); LABEL_43: sub_1800B3130(v15, a1, 0, v10); *a4 = v15; return 0; } LABEL_50: v23 = 38; goto LABEL_51; } goto LABEL_49; } if ( *(_BYTE *)(a1 + 69968) && (!a3 || !*(_DWORD *)(a3 + 200)) ) { v31 = 1; v24 = sub_1800B6530( *((_QWORD *)off_1801AED20 + 52), 568, "C:\\buildagent1\\work\\570ad728b1678096\\core_api\\src\\fmod_systemi_sound.cpp", 535, 0, 0, v31); if ( v24 ) { v15 = sub_1800FD640((__int64)v24); v16 = (_DWORD *)v15; if ( v15 ) { if ( a3 ) *(_QWORD *)(v15 + 560) = *(_QWORD *)(a3 + 168); goto LABEL_43; } goto LABEL_50; } LABEL_49: v16 = nullptr; goto LABEL_50; } if ( (unsigned int)sub_1800B7FF0("http://", a2, 7) && (unsigned int)sub_1800B7FF0("http:\\\\", a2, 7) && (unsigned int)sub_1800B7FF0("https://", a2, 8) && (unsigned int)sub_1800B7FF0("https:\\\\", a2, 8) && (unsigned int)sub_1800B7FF0("mms://", a2, 6) && (unsigned int)sub_1800B7FF0("mms:\\\\", a2, 6) ) { v32 = 1; v25 = sub_1800B6530( *((_QWORD *)off_1801AED20 + 52), 504, "C:\\buildagent1\\work\\570ad728b1678096\\core_api\\src\\fmod_systemi_sound.cpp", 568, 0, 0, v32); v15 = (__int64)v25; if ( v25 ) { sub_1800B2170((__int64)v25); *(_DWORD *)(v15 + 56) = 4; *(_QWORD *)v15 = off_18016E708; *(_QWORD *)(v15 + 496) = 0; goto LABEL_43; } goto LABEL_49; } v33 = 1; v26 = sub_1800B6530( *((_QWORD *)off_1801AED20 + 52), 8840, "C:\\buildagent1\\work\\570ad728b1678096\\core_api\\src\\fmod_systemi_sound.cpp", 555, 0, 0, v33); if ( !v26 ) goto LABEL_49; v27 = sub_1800B43B0((__int64)v26); v28 = v27; v16 = (_DWORD *)v27; if ( !v27 ) goto LABEL_50; sub_1800B3130(v27, a1, 0, v10); if ( a5 ) *a5 = 1; *a4 = v28; return 0; }