{"type": "func", "start": 6443262176, "end": 6443262414, "name": "FMOD_Memory_GetStats", "pseudocode": "// \n// FMOD_Memory_GetStats from 0x1800c60e0 to 0x1800c61ce (238 bytes)\n// \n// 4 xrefs:\n// > FMOD5_Memory_GetStats @ 0x1800f44b0\n// > sub_180107460 @ 0x1801074bf\n// > <???> @ 0x180194348\n// > <???> @ 0x1801fdfec\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_Memory_GetStats(_DWORD *a1, _DWORD *a2, int a3)\n{\n  __int64 v5; // rsi\n  __int64 v6; // rdi\n  __int64 v7; // rbx\n  __int64 v8; // rdx\n  unsigned int v9; // ebp\n\n  if ( !a3 )\n  {\nLABEL_10:\n    if ( a1 )\n      *a1 = *(_DWORD *)(*((_QWORD *)off_1801AED20 + 52) + 56LL);\n    if ( a2 )\n      *a2 = *(_DWORD *)(*((_QWORD *)off_1801AED20 + 52) + 60LL);\n    return 0;\n  }\n  v5 = 352;\n  while ( 1 )\n  {\n    v6 = *(_QWORD *)((char *)off_1801AED20 + v5);\n    if ( !v6 || !*(_BYTE *)(v6 + 8) )\n      goto LABEL_9;\n    v7 = 0;\n    v9 = sub_1801021E0(*(_QWORD *)((char *)off_1801AED20 + v5));\n    if ( v9 )\n      break;\n    LOBYTE(v8) = 1;\n    v7 = v6;\n    v9 = sub_1800FC980(v6, v8);\n    if ( v9 )\n      break;\n    v9 = sub_1800FCEA0(v6);\n    if ( v9 )\n      goto LABEL_16;\n    sub_180102320(v6);\nLABEL_9:\n    v5 += 8;\n    if ( v5 >= 416 )\n      goto LABEL_10;\n  }\n  if ( !v7 )\n    return v9;\nLABEL_16:\n  sub_180102320(v7);\n  return v9;\n}", "assembly": "; \n; FMOD_Memory_GetStats from 0x1800c60e0 to 0x1800c61ce (238 bytes)\n; \n; 4 xrefs:\n; > FMOD5_Memory_GetStats @ 0x1800f44b0\n; > sub_180107460 @ 0x1801074bf\n; > <???> @ 0x180194348\n; > <???> @ 0x1801fdfec\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\nmov     [rsp+arg_0], rbx                                               ; +0x0, 0x1800c60e0\nmov     [rsp+arg_8], rbp                                               ; +0x5, 0x1800c60e5\nmov     [rsp+arg_10], rsi                                              ; +0xa, 0x1800c60ea\npush    rdi                                                            ; +0xf, 0x1800c60ef\npush    r14                                                            ; +0x10, 0x1800c60f0\npush    r15                                                            ; +0x12, 0x1800c60f2\nsub     rsp, 20h                                                       ; +0x14, 0x1800c60f4\nmov     r14, rdx                                                       ; +0x18, 0x1800c60f8\nmov     r15, rcx                                                       ; +0x1b, 0x1800c60fb\ntest    r8d, r8d                                                       ; +0x1e, 0x1800c60fe\njz      short loc_1800C6170                                            ; +0x21, 0x1800c6101\nmov     esi, 160h                                                      ; +0x23, 0x1800c6103\nnop     dword ptr [rax+rax+00000000h]                                  ; +0x28, 0x1800c6108\nmov     rax, cs:off_1801AED20                                          ; +0x30, 0x1800c6110\nmov     rdi, [rsi+rax]                                                 ; +0x37, 0x1800c6117\ntest    rdi, rdi                                                       ; +0x3b, 0x1800c611b\njz      short loc_1800C6163                                            ; +0x3e, 0x1800c611e\ncmp     byte ptr [rdi+8], 0                                            ; +0x40, 0x1800c6120\njz      short loc_1800C6163                                            ; +0x44, 0x1800c6124\nmov     rcx, rdi                                                       ; +0x46, 0x1800c6126\nxor     ebx, ebx                                                       ; +0x49, 0x1800c6129\ncall    sub_1801021E0                                                  ; +0x4b, 0x1800c612b\nmov     ebp, eax                                                       ; +0x50, 0x1800c6130\ntest    eax, eax                                                       ; +0x52, 0x1800c6132\njnz     loc_1800C61BD                                                  ; +0x54, 0x1800c6134\nmov     dl, 1                                                          ; +0x5a, 0x1800c613a\nmov     rcx, rdi                                                       ; +0x5c, 0x1800c613c\nmov     rbx, rdi                                                       ; +0x5f, 0x1800c613f\ncall    sub_1800FC980                                                  ; +0x62, 0x1800c6142\nmov     ebp, eax                                                       ; +0x67, 0x1800c6147\ntest    eax, eax                                                       ; +0x69, 0x1800c6149\njnz     short loc_1800C61BD                                            ; +0x6b, 0x1800c614b\nmov     rcx, rdi                                                       ; +0x6d, 0x1800c614d\ncall    sub_1800FCEA0                                                  ; +0x70, 0x1800c6150\nmov     ebp, eax                                                       ; +0x75, 0x1800c6155\ntest    eax, eax                                                       ; +0x77, 0x1800c6157\njnz     short loc_1800C61C2                                            ; +0x79, 0x1800c6159\nmov     rcx, rdi                                                       ; +0x7b, 0x1800c615b\ncall    sub_180102320                                                  ; +0x7e, 0x1800c615e\nadd     rsi, 8                                                         ; +0x83, 0x1800c6163\ncmp     rsi, 1A0h                                                      ; +0x87, 0x1800c6167\njl      short loc_1800C6110                                            ; +0x8e, 0x1800c616e\ntest    r15, r15                                                       ; +0x90, 0x1800c6170\njz      short loc_1800C6189                                            ; +0x93, 0x1800c6173\nmov     rax, cs:off_1801AED20                                          ; +0x95, 0x1800c6175\nmov     rcx, [rax+1A0h]                                                ; +0x9c, 0x1800c617c\nmov     eax, [rcx+38h]                                                 ; +0xa3, 0x1800c6183\nmov     [r15], eax                                                     ; +0xa6, 0x1800c6186\ntest    r14, r14                                                       ; +0xa9, 0x1800c6189\njz      short loc_1800C61A2                                            ; +0xac, 0x1800c618c\nmov     rax, cs:off_1801AED20                                          ; +0xae, 0x1800c618e\nmov     rcx, [rax+1A0h]                                                ; +0xb5, 0x1800c6195\nmov     eax, [rcx+3Ch]                                                 ; +0xbc, 0x1800c619c\nmov     [r14], eax                                                     ; +0xbf, 0x1800c619f\nxor     eax, eax                                                       ; +0xc2, 0x1800c61a2\nmov     rbx, [rsp+38h+arg_0]                                           ; +0xc4, 0x1800c61a4\nmov     rbp, [rsp+38h+arg_8]                                           ; +0xc9, 0x1800c61a9\nmov     rsi, [rsp+38h+arg_10]                                          ; +0xce, 0x1800c61ae\nadd     rsp, 20h                                                       ; +0xd3, 0x1800c61b3\npop     r15                                                            ; +0xd7, 0x1800c61b7\npop     r14                                                            ; +0xd9, 0x1800c61b9\npop     rdi                                                            ; +0xdb, 0x1800c61bb\nretn                                                                   ; +0xdc, 0x1800c61bc\ntest    rbx, rbx                                                       ; +0xdd, 0x1800c61bd\njz      short loc_1800C61CA                                            ; +0xe0, 0x1800c61c0\nmov     rcx, rbx                                                       ; +0xe2, 0x1800c61c2\ncall    sub_180102320                                                  ; +0xe5, 0x1800c61c5\nmov     eax, ebp                                                       ; +0xea, 0x1800c61ca\njmp     short loc_1800C61A4                                            ; +0xec, 0x1800c61cc", "xrefs": ["FMOD5_Memory_GetStats @ 0x1800f44b0", "sub_180107460 @ 0x1801074bf", "<???> @ 0x180194348", "<???> @ 0x1801fdfec"], "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"}