{"type": "func", "start": 6443264096, "end": 6443264391, "name": "FMOD_System_Create", "pseudocode": "// \n// FMOD_System_Create from 0x1800c6860 to 0x1800c6987 (295 bytes)\n// \n// 7 xrefs:\n// > FMOD5_System_Create @ 0x1800f4950\n// > <???> @ 0x18018abd8\n// > <???> @ 0x18018abf0\n// > <???> @ 0x18018ac08\n// > <???> @ 0x18018ac18\n// > <???> @ 0x180194348\n// > <???> @ 0x1801fe01c\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\n__int64 __fastcall FMOD_System_Create(__int64 *a1, int a2)\n{\n  __int64 result; // rax\n  int v4; // ebx\n  void *v5; // rax\n  __int64 v6; // rax\n  __int64 v7; // rdx\n  __int64 v8; // r8\n  _DWORD *v9; // rsi\n  __int64 v10; // r9\n  _QWORD *v11; // rax\n\n  if ( (unsigned int)(a2 - 131584) > 0xFF )\n    return 20;\n  if ( !a1 )\n    return 31;\n  v4 = 0;\n  v5 = sub_1800B6880(\n         *((_QWORD *)off_1801AED20 + 52),\n         74224,\n         \"C:\\\\buildagent1\\\\work\\\\570ad728b1678096\\\\core_api\\\\src\\\\fmod.cpp\",\n         145,\n         0);\n  if ( !v5 )\n  {\n    *a1 = 0;\n    return 38;\n  }\n  v6 = sub_1800E14F0(v5);\n  *a1 = v6;\n  v9 = (_DWORD *)v6;\n  if ( !v6 )\n    return 38;\n  v10 = 0;\n  v11 = (_QWORD *)((char *)off_1801AED20 + 352);\n  do\n  {\n    if ( !*v11 )\n      break;\n    ++v4;\n    ++v10;\n    ++v11;\n  }\n  while ( v10 < 8 );\n  if ( v4 >= 8 )\n  {\n    sub_1800B6AA0(*((_QWORD *)off_1801AED20 + 52), v9);\n    return 38;\n  }\n  result = sub_1800D45C0(off_1801AED20, v7, v8, v10);\n  if ( !(_DWORD)result )\n  {\n    *((_QWORD *)off_1801AED20 + v4 + 44) = v9;\n    v9[17452] = v4;\n    return 0;\n  }\n  return result;\n}", "assembly": "; \n; FMOD_System_Create from 0x1800c6860 to 0x1800c6987 (295 bytes)\n; \n; 7 xrefs:\n; > FMOD5_System_Create @ 0x1800f4950\n; > <???> @ 0x18018abd8\n; > <???> @ 0x18018abf0\n; > <???> @ 0x18018ac08\n; > <???> @ 0x18018ac18\n; > <???> @ 0x180194348\n; > <???> @ 0x1801fe01c\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\npush    rdi                                                            ; +0x0, 0x1800c6860\nsub     rsp, 30h                                                       ; +0x2, 0x1800c6862\nlea     eax, [rdx-20200h]                                              ; +0x6, 0x1800c6866\nmov     rdi, rcx                                                       ; +0xc, 0x1800c686c\ncmp     eax, 0FFh                                                      ; +0xf, 0x1800c686f\nja      loc_1800C697C                                                  ; +0x14, 0x1800c6874\ntest    rcx, rcx                                                       ; +0x1a, 0x1800c687a\njnz     short loc_1800C6888                                            ; +0x1d, 0x1800c687d\nlea     eax, [rcx+1Fh]                                                 ; +0x1f, 0x1800c687f\nadd     rsp, 30h                                                       ; +0x22, 0x1800c6882\npop     rdi                                                            ; +0x26, 0x1800c6886\nretn                                                                   ; +0x27, 0x1800c6887\nmov     rcx, cs:off_1801AED20                                          ; +0x28, 0x1800c6888\nlea     r8, aCBuildagent1Wo_49; \"C:\\\\buildagent1\\\\work\\\\570ad728b1678096\"... ; +0x2f, 0x1800c688f\nmov     [rsp+38h+arg_0], rbx                                           ; +0x36, 0x1800c6896\nmov     r9d, 91h                                                       ; +0x3b, 0x1800c689b\nxor     ebx, ebx                                                       ; +0x41, 0x1800c68a1\nmov     [rsp+38h+arg_8], rsi                                           ; +0x43, 0x1800c68a3\nmov     edx, 121F0h                                                    ; +0x48, 0x1800c68a8\nmov     [rsp+38h+var_18], ebx                                          ; +0x4d, 0x1800c68ad\nmov     rcx, [rcx+1A0h]                                                ; +0x51, 0x1800c68b1\ncall    sub_1800B6880                                                  ; +0x58, 0x1800c68b8\ntest    rax, rax                                                       ; +0x5d, 0x1800c68bd\njz      loc_1800C6977                                                  ; +0x60, 0x1800c68c0\nmov     rcx, rax                                                       ; +0x66, 0x1800c68c6\ncall    sub_1800E14F0                                                  ; +0x69, 0x1800c68c9\nmov     [rdi], rax                                                     ; +0x6e, 0x1800c68ce\nmov     rsi, rax                                                       ; +0x71, 0x1800c68d1\ntest    rax, rax                                                       ; +0x74, 0x1800c68d4\njz      short loc_1800C692B                                            ; +0x77, 0x1800c68d7\nmov     rcx, cs:off_1801AED20                                          ; +0x79, 0x1800c68d9\nmov     r9d, ebx                                                       ; +0x80, 0x1800c68e0\nlea     rax, [rcx+160h]                                                ; +0x83, 0x1800c68e3\nnop     word ptr [rax+rax+00h]                                         ; +0x8a, 0x1800c68ea\ncmp     qword ptr [rax], 0                                             ; +0x90, 0x1800c68f0\njz      short loc_1800C6905                                            ; +0x94, 0x1800c68f4\ninc     ebx                                                            ; +0x96, 0x1800c68f6\ninc     r9                                                             ; +0x98, 0x1800c68f8\nadd     rax, 8                                                         ; +0x9b, 0x1800c68fb\ncmp     r9, 8                                                          ; +0x9f, 0x1800c68ff\njl      short loc_1800C68F0                                            ; +0xa3, 0x1800c6903\ncmp     ebx, 8                                                         ; +0xa5, 0x1800c6905\njl      short loc_1800C6940                                            ; +0xa8, 0x1800c6908\nmov     rcx, [rcx+1A0h]                                                ; +0xaa, 0x1800c690a\nlea     r8, aCBuildagent1Wo_49; \"C:\\\\buildagent1\\\\work\\\\570ad728b1678096\"... ; +0xb1, 0x1800c6911\nmov     r9d, 0A3h                                                      ; +0xb8, 0x1800c6918\nmov     byte ptr [rsp+38h+var_18], 1                                   ; +0xbe, 0x1800c691e\nmov     rdx, rsi                                                       ; +0xc3, 0x1800c6923\ncall    sub_1800B6AA0                                                  ; +0xc6, 0x1800c6926\nmov     eax, 26h ; '&'                                                 ; +0xcb, 0x1800c692b\nmov     rbx, [rsp+38h+arg_0]                                           ; +0xd0, 0x1800c6930\nmov     rsi, [rsp+38h+arg_8]                                           ; +0xd5, 0x1800c6935\nadd     rsp, 30h                                                       ; +0xda, 0x1800c693a\npop     rdi                                                            ; +0xde, 0x1800c693e\nretn                                                                   ; +0xdf, 0x1800c693f\ncall    sub_1800D45C0                                                  ; +0xe0, 0x1800c6940\ntest    eax, eax                                                       ; +0xe5, 0x1800c6945\njnz     short loc_1800C6930                                            ; +0xe7, 0x1800c6947\nmovsxd  rax, ebx                                                       ; +0xe9, 0x1800c6949\nlea     rcx, ds:160h[rax*8]                                            ; +0xec, 0x1800c694c\nmov     rax, cs:off_1801AED20                                          ; +0xf4, 0x1800c6954\nmov     [rcx+rax], rsi                                                 ; +0xfb, 0x1800c695b\nxor     eax, eax                                                       ; +0xff, 0x1800c695f\nmov     [rsi+110B0h], ebx                                              ; +0x101, 0x1800c6961\nmov     rbx, [rsp+38h+arg_0]                                           ; +0x107, 0x1800c6967\nmov     rsi, [rsp+38h+arg_8]                                           ; +0x10c, 0x1800c696c\nadd     rsp, 30h                                                       ; +0x111, 0x1800c6971\npop     rdi                                                            ; +0x115, 0x1800c6975\nretn                                                                   ; +0x116, 0x1800c6976\nmov     [rdi], rbx                                                     ; +0x117, 0x1800c6977\njmp     short loc_1800C692B                                            ; +0x11a, 0x1800c697a\nmov     eax, 14h                                                       ; +0x11c, 0x1800c697c\nadd     rsp, 30h                                                       ; +0x121, 0x1800c6981\npop     rdi                                                            ; +0x125, 0x1800c6985\nretn                                                                   ; +0x126, 0x1800c6986", "xrefs": ["FMOD5_System_Create @ 0x1800f4950", "<???> @ 0x18018abd8", "<???> @ 0x18018abf0", "<???> @ 0x18018ac08", "<???> @ 0x18018ac18", "<???> @ 0x180194348", "<???> @ 0x1801fe01c"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}