{"type": "func", "start": 6443140576, "end": 6443140881, "name": "FMOD::Sound::getSubSound", "pseudocode": "// \n// FMOD::Sound::getSubSound from 0x1800a85e0 to 0x1800a8711 (305 bytes)\n// \n// 3 xrefs:\n// > FMOD_Sound_GetSubSound @ 0x1800c66b9\n// > <???> @ 0x180194348\n// > <???> @ 0x1801fbb44\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::Sound::getSubSound(__int64 a1, unsigned int a2, __int64 a3)\n{\n  int v5; // ebx\n  int v6; // r14d\n  unsigned int v7; // esi\n  __int64 v8; // rax\n  int v9; // ebx\n  int v10; // eax\n  __int64 v12; // [rsp+30h] [rbp-148h] BYREF\n  __int64 v13; // [rsp+38h] [rbp-140h] BYREF\n  _BYTE v14[256]; // [rsp+40h] [rbp-138h] BYREF\n\n  v5 = 0;\n  v13 = 0;\n  v6 = a1;\n  v7 = sub_1800E1460(a1, &v12, &v13);\n  if ( !v7 )\n  {\n    v8 = *(_QWORD *)(v12 + 264);\n    if ( v8 )\n      v5 = *(_DWORD *)(v8 + 292);\n    if ( !*(_DWORD *)(v12 + 272) || v5 == 15 )\n    {\n      v7 = (*(__int64 (__fastcall **)(__int64, _QWORD, __int64))(*(_QWORD *)v12 + 120LL))(v12, a2, a3);\n      if ( !v7 )\n        goto LABEL_10;\n    }\n    else\n    {\n      v7 = 46;\n    }\n  }\n  if ( *((char *)off_1801AED20 + 16) < 0 )\n  {\n    v9 = sub_1800F2EC0(v14, 256, a2);\n    v10 = sub_1800F2F70(&v14[v9]);\n    sub_1800F3230(&v14[v10 + v9], (unsigned int)(256 - (v10 + v9)), a3);\n    sub_1800B20E0(v7, 5, v6, (unsigned int)\"Sound::getSubSound\", (__int64)v14);\n  }\nLABEL_10:\n  if ( v13 )\n    sub_180102300(v13, 12);\n  return v7;\n}", "assembly": "; \n; FMOD::Sound::getSubSound from 0x1800a85e0 to 0x1800a8711 (305 bytes)\n; \n; 3 xrefs:\n; > FMOD_Sound_GetSubSound @ 0x1800c66b9\n; > <???> @ 0x180194348\n; > <???> @ 0x1801fbb44\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    rbx                                                            ; +0x0, 0x1800a85e0\npush    rbp                                                            ; +0x2, 0x1800a85e2\npush    rsi                                                            ; +0x3, 0x1800a85e3\npush    rdi                                                            ; +0x4, 0x1800a85e4\npush    r14                                                            ; +0x5, 0x1800a85e5\nsub     rsp, 150h                                                      ; +0x7, 0x1800a85e7\nmov     rax, cs:__security_cookie                                      ; +0xe, 0x1800a85ee\nxor     rax, rsp                                                       ; +0x15, 0x1800a85f5\nmov     [rsp+178h+var_38], rax                                         ; +0x18, 0x1800a85f8\nmov     rbp, r8                                                        ; +0x20, 0x1800a8600\nmov     edi, edx                                                       ; +0x23, 0x1800a8603\nxor     ebx, ebx                                                       ; +0x25, 0x1800a8605\nlea     r8, [rsp+178h+var_140]                                         ; +0x27, 0x1800a8607\nlea     rdx, [rsp+178h+var_148]                                        ; +0x2c, 0x1800a860c\nmov     [rsp+178h+var_140], rbx                                        ; +0x31, 0x1800a8611\nmov     r14, rcx                                                       ; +0x36, 0x1800a8616\ncall    sub_1800E1460                                                  ; +0x39, 0x1800a8619\nmov     esi, eax                                                       ; +0x3e, 0x1800a861e\ntest    eax, eax                                                       ; +0x40, 0x1800a8620\njnz     short loc_1800A8668                                            ; +0x42, 0x1800a8622\nmov     rcx, [rsp+178h+var_148]                                        ; +0x44, 0x1800a8624\nmov     rax, [rcx+108h]                                                ; +0x49, 0x1800a8629\ntest    rax, rax                                                       ; +0x50, 0x1800a8630\njz      short loc_1800A863B                                            ; +0x53, 0x1800a8633\nmov     ebx, [rax+124h]                                                ; +0x55, 0x1800a8635\nmov     eax, [rcx+110h]                                                ; +0x5b, 0x1800a863b\nnop                                                                    ; +0x61, 0x1800a8641\ntest    eax, eax                                                       ; +0x62, 0x1800a8642\njz      short loc_1800A8652                                            ; +0x64, 0x1800a8644\ncmp     ebx, 0Fh                                                       ; +0x66, 0x1800a8646\njz      short loc_1800A8652                                            ; +0x69, 0x1800a8649\nmov     esi, 2Eh ; '.'                                                 ; +0x6b, 0x1800a864b\njmp     short loc_1800A8668                                            ; +0x70, 0x1800a8650\nmov     rcx, [rsp+178h+var_148]                                        ; +0x72, 0x1800a8652\nmov     r8, rbp                                                        ; +0x77, 0x1800a8657\nmov     edx, edi                                                       ; +0x7a, 0x1800a865a\nmov     rax, [rcx]                                                     ; +0x7c, 0x1800a865c\ncall    qword ptr [rax+78h]                                            ; +0x7f, 0x1800a865f\nmov     esi, eax                                                       ; +0x82, 0x1800a8662\ntest    eax, eax                                                       ; +0x84, 0x1800a8664\njz      short loc_1800A86DD                                            ; +0x86, 0x1800a8666\nmov     rax, cs:off_1801AED20                                          ; +0x88, 0x1800a8668\ntest    byte ptr [rax+10h], 80h                                        ; +0x8f, 0x1800a866f\njz      short loc_1800A86DD                                            ; +0x93, 0x1800a8673\nmov     r8d, edi                                                       ; +0x95, 0x1800a8675\nlea     rcx, [rsp+178h+var_138]                                        ; +0x98, 0x1800a8678\nmov     edi, 100h                                                      ; +0x9d, 0x1800a867d\nmov     edx, edi                                                       ; +0xa2, 0x1800a8682\ncall    sub_1800F2EC0                                                  ; +0xa4, 0x1800a8684\nmovsxd  rbx, eax                                                       ; +0xa9, 0x1800a8689\nlea     rcx, [rsp+178h+var_138]                                        ; +0xac, 0x1800a868c\nmov     edx, edi                                                       ; +0xb1, 0x1800a8691\nlea     r8, asc_18014572C; \", \"                                        ; +0xb3, 0x1800a8693\nsub     edx, ebx                                                       ; +0xba, 0x1800a869a\nadd     rcx, rbx; void *                                               ; +0xbc, 0x1800a869c\ncall    sub_1800F2F70                                                  ; +0xbf, 0x1800a869f\nadd     ebx, eax                                                       ; +0xc4, 0x1800a86a4\nlea     rcx, [rsp+178h+var_138]                                        ; +0xc6, 0x1800a86a6\nmovsxd  rax, ebx                                                       ; +0xcb, 0x1800a86ab\nsub     edi, ebx                                                       ; +0xce, 0x1800a86ae\nadd     rcx, rax                                                       ; +0xd0, 0x1800a86b0\nmov     edx, edi                                                       ; +0xd3, 0x1800a86b3\nmov     r8, rbp                                                        ; +0xd5, 0x1800a86b5\ncall    sub_1800F3230                                                  ; +0xd8, 0x1800a86b8\nlea     rax, [rsp+178h+var_138]                                        ; +0xdd, 0x1800a86bd\nmov     r8, r14                                                        ; +0xe2, 0x1800a86c2\nlea     r9, aSoundGetsubsou; \"Sound::getSubSound\"                      ; +0xe5, 0x1800a86c5\nmov     [rsp+178h+var_158], rax                                        ; +0xec, 0x1800a86cc\nmov     edx, 5                                                         ; +0xf1, 0x1800a86d1\nmov     ecx, esi                                                       ; +0xf6, 0x1800a86d6\ncall    sub_1800B20E0                                                  ; +0xf8, 0x1800a86d8\nmov     rcx, [rsp+178h+var_140]                                        ; +0xfd, 0x1800a86dd\ntest    rcx, rcx                                                       ; +0x102, 0x1800a86e2\njz      short loc_1800A86F1                                            ; +0x105, 0x1800a86e5\nmov     edx, 0Ch                                                       ; +0x107, 0x1800a86e7\ncall    sub_180102300                                                  ; +0x10c, 0x1800a86ec\nmov     eax, esi                                                       ; +0x111, 0x1800a86f1\nmov     rcx, [rsp+178h+var_38]                                         ; +0x113, 0x1800a86f3\nxor     rcx, rsp; StackCookie                                          ; +0x11b, 0x1800a86fb\ncall    __security_check_cookie                                        ; +0x11e, 0x1800a86fe\nadd     rsp, 150h                                                      ; +0x123, 0x1800a8703\npop     r14                                                            ; +0x12a, 0x1800a870a\npop     rdi                                                            ; +0x12c, 0x1800a870c\npop     rsi                                                            ; +0x12d, 0x1800a870d\npop     rbp                                                            ; +0x12e, 0x1800a870e\npop     rbx                                                            ; +0x12f, 0x1800a870f\nretn                                                                   ; +0x130, 0x1800a8710", "xrefs": ["FMOD_Sound_GetSubSound @ 0x1800c66b9", "<???> @ 0x180194348", "<???> @ 0x1801fbb44"], "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"}