{"type": "func", "start": 6443142720, "end": 6443143374, "name": "FMOD::Sound::lock", "pseudocode": "// \n// FMOD::Sound::lock from 0x1800a8e40 to 0x1800a90ce (654 bytes)\n// \n// 5 xrefs:\n// > FMOD_Sound_Lock @ 0x1800c672b\n// > <???> @ 0x180186d10\n// > <???> @ 0x180186d44\n// > <???> @ 0x180194348\n// > <???> @ 0x1801fbc28\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::lock(\n        __int64 a1,\n        unsigned int a2,\n        unsigned int a3,\n        __int64 a4,\n        __int64 a5,\n        __int64 a6,\n        __int64 a7)\n{\n  unsigned int v10; // esi\n  int v11; // ebx\n  int v12; // ebx\n  int v13; // ebx\n  int v14; // ebx\n  int v15; // ebx\n  int v16; // ebx\n  int v17; // ebx\n  int v18; // ebx\n  int v19; // ebx\n  int v20; // eax\n  _DWORD *v22; // [rsp+40h] [rbp-178h] BYREF\n  __int64 v23; // [rsp+48h] [rbp-170h] BYREF\n  __int64 v24; // [rsp+50h] [rbp-168h]\n  _BYTE v25[256]; // [rsp+60h] [rbp-158h] BYREF\n\n  v24 = a1;\n  v23 = 0;\n  v10 = sub_1800E1460(a1, &v22, &v23);\n  if ( !v10 )\n  {\n    if ( !v22[68] || v22[68] == 7 )\n    {\n      v10 = (*(__int64 (__fastcall **)(_DWORD *, _QWORD, _QWORD, __int64, __int64, __int64, __int64))(*(_QWORD *)v22 + 40LL))(\n              v22,\n              a2,\n              a3,\n              a4,\n              a5,\n              a6,\n              a7);\n      if ( !v10 )\n        goto LABEL_8;\n    }\n    else\n    {\n      v10 = 46;\n    }\n  }\n  if ( *((char *)off_1801AED20 + 16) < 0 )\n  {\n    v11 = sub_1800F2EF0(v25, 256, a2);\n    v12 = sub_1800F2F70(&v25[v11]) + v11;\n    v13 = sub_1800F2EF0(&v25[v12], (unsigned int)(256 - v12), a3) + v12;\n    v14 = sub_1800F2F70(&v25[v13]) + v13;\n    v15 = sub_1800F3230(&v25[v14], (unsigned int)(256 - v14), a4) + v14;\n    v16 = sub_1800F2F70(&v25[v15]) + v15;\n    v17 = sub_1800F3230(&v25[v16], (unsigned int)(256 - v16), a5) + v16;\n    v18 = sub_1800F2F70(&v25[v17]) + v17;\n    v19 = sub_1800F3060(&v25[v18], (unsigned int)(256 - v18), a6) + v18;\n    v20 = sub_1800F2F70(&v25[v19]);\n    sub_1800F3060(&v25[v20 + v19], (unsigned int)(256 - (v20 + v19)), a7);\n    sub_1800B20E0(v10, 5, v24, (unsigned int)\"Sound::lock\", (__int64)v25);\n  }\nLABEL_8:\n  if ( v23 )\n    sub_180102300(v23, 12);\n  return v10;\n}", "assembly": "; \n; FMOD::Sound::lock from 0x1800a8e40 to 0x1800a90ce (654 bytes)\n; \n; 5 xrefs:\n; > FMOD_Sound_Lock @ 0x1800c672b\n; > <???> @ 0x180186d10\n; > <???> @ 0x180186d44\n; > <???> @ 0x180194348\n; > <???> @ 0x1801fbc28\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     r11, rsp                                                       ; +0x0, 0x1800a8e40\npush    rsi                                                            ; +0x3, 0x1800a8e43\nsub     rsp, 1B0h                                                      ; +0x4, 0x1800a8e44\nmov     rax, cs:__security_cookie                                      ; +0xb, 0x1800a8e4b\nxor     rax, rsp                                                       ; +0x12, 0x1800a8e52\nmov     [rsp+1B8h+var_58], rax                                         ; +0x15, 0x1800a8e55\nmov     [r11-10h], rbx                                                 ; +0x1d, 0x1800a8e5d\nmov     ebx, edx                                                       ; +0x21, 0x1800a8e61\nmov     [r11-18h], rbp                                                 ; +0x23, 0x1800a8e63\nlea     rdx, [rsp+1B8h+var_178]                                        ; +0x27, 0x1800a8e67\nmov     [r11-28h], r12                                                 ; +0x2c, 0x1800a8e6c\nmov     ebp, r8d                                                       ; +0x30, 0x1800a8e70\nmov     r12, [rsp+1B8h+arg_28]                                         ; +0x33, 0x1800a8e73\nlea     r8, [rsp+1B8h+var_170]                                         ; +0x3b, 0x1800a8e7b\nmov     [r11-30h], r13                                                 ; +0x40, 0x1800a8e80\nmov     r13, [rsp+1B8h+arg_30]                                         ; +0x44, 0x1800a8e84\nmov     [r11-38h], r14                                                 ; +0x4c, 0x1800a8e8c\nmov     r14, r9                                                        ; +0x50, 0x1800a8e90\nmov     [r11-40h], r15                                                 ; +0x53, 0x1800a8e93\nmov     r15, [rsp+1B8h+arg_20]                                         ; +0x57, 0x1800a8e97\nmov     [rsp+1B8h+var_168], rcx                                        ; +0x5f, 0x1800a8e9f\nmov     [rsp+1B8h+var_170], 0                                          ; +0x64, 0x1800a8ea4\ncall    sub_1800E1460                                                  ; +0x6d, 0x1800a8ead\nmov     esi, eax                                                       ; +0x72, 0x1800a8eb2\ntest    eax, eax                                                       ; +0x74, 0x1800a8eb4\njnz     short loc_1800A8F0C                                            ; +0x76, 0x1800a8eb6\nmov     rax, [rsp+1B8h+var_178]                                        ; +0x78, 0x1800a8eb8\nmov     ecx, [rax+110h]                                                ; +0x7d, 0x1800a8ebd\nnop                                                                    ; +0x83, 0x1800a8ec3\ntest    ecx, ecx                                                       ; +0x84, 0x1800a8ec4\njz      short loc_1800A8EE0                                            ; +0x86, 0x1800a8ec6\nmov     rax, [rsp+1B8h+var_178]                                        ; +0x88, 0x1800a8ec8\nmov     ecx, [rax+110h]                                                ; +0x8d, 0x1800a8ecd\nnop                                                                    ; +0x93, 0x1800a8ed3\ncmp     ecx, 7                                                         ; +0x94, 0x1800a8ed4\njz      short loc_1800A8EE0                                            ; +0x97, 0x1800a8ed7\nmov     esi, 2Eh ; '.'                                                 ; +0x99, 0x1800a8ed9\njmp     short loc_1800A8F0C                                            ; +0x9e, 0x1800a8ede\nmov     rcx, [rsp+1B8h+var_178]                                        ; +0xa0, 0x1800a8ee0\nmov     r9, r14                                                        ; +0xa5, 0x1800a8ee5\nmov     [rsp+1B8h+var_188], r13                                        ; +0xa8, 0x1800a8ee8\nmov     r8d, ebp                                                       ; +0xad, 0x1800a8eed\nmov     [rsp+1B8h+var_190], r12                                        ; +0xb0, 0x1800a8ef0\nmov     edx, ebx                                                       ; +0xb5, 0x1800a8ef5\nmov     [rsp+1B8h+var_198], r15                                        ; +0xb7, 0x1800a8ef7\nmov     rax, [rcx]                                                     ; +0xbc, 0x1800a8efc\ncall    qword ptr [rax+28h]                                            ; +0xbf, 0x1800a8eff\nmov     esi, eax                                                       ; +0xc2, 0x1800a8f02\ntest    eax, eax                                                       ; +0xc4, 0x1800a8f04\njz      loc_1800A906F                                                  ; +0xc6, 0x1800a8f06\nmov     rax, cs:off_1801AED20                                          ; +0xcc, 0x1800a8f0c\ntest    byte ptr [rax+10h], 80h                                        ; +0xd3, 0x1800a8f13\njz      loc_1800A906F                                                  ; +0xd7, 0x1800a8f17\nmov     [rsp+1B8h+var_20], rdi                                         ; +0xdd, 0x1800a8f1d\nlea     rcx, [rsp+1B8h+var_158]                                        ; +0xe5, 0x1800a8f25\nmov     edi, 100h                                                      ; +0xea, 0x1800a8f2a\nmov     r8d, ebx                                                       ; +0xef, 0x1800a8f2f\nmov     edx, edi                                                       ; +0xf2, 0x1800a8f32\ncall    sub_1800F2EF0                                                  ; +0xf4, 0x1800a8f34\nmovsxd  rbx, eax                                                       ; +0xf9, 0x1800a8f39\nlea     rcx, [rsp+1B8h+var_158]                                        ; +0xfc, 0x1800a8f3c\nmov     edx, edi                                                       ; +0x101, 0x1800a8f41\nlea     r8, asc_18014572C; \", \"                                        ; +0x103, 0x1800a8f43\nsub     edx, ebx                                                       ; +0x10a, 0x1800a8f4a\nadd     rcx, rbx; void *                                               ; +0x10c, 0x1800a8f4c\ncall    sub_1800F2F70                                                  ; +0x10f, 0x1800a8f4f\nadd     ebx, eax                                                       ; +0x114, 0x1800a8f54\nmov     edx, edi                                                       ; +0x116, 0x1800a8f56\nlea     rax, [rsp+1B8h+var_158]                                        ; +0x118, 0x1800a8f58\nmovsxd  rcx, ebx                                                       ; +0x11d, 0x1800a8f5d\nadd     rcx, rax                                                       ; +0x120, 0x1800a8f60\nsub     edx, ebx                                                       ; +0x123, 0x1800a8f63\nmov     r8d, ebp                                                       ; +0x125, 0x1800a8f65\ncall    sub_1800F2EF0                                                  ; +0x128, 0x1800a8f68\nadd     ebx, eax                                                       ; +0x12d, 0x1800a8f6d\nlea     rcx, [rsp+1B8h+var_158]                                        ; +0x12f, 0x1800a8f6f\nmovsxd  rax, ebx                                                       ; +0x134, 0x1800a8f74\nlea     r8, asc_18014572C; \", \"                                        ; +0x137, 0x1800a8f77\nmov     edx, edi                                                       ; +0x13e, 0x1800a8f7e\nadd     rcx, rax; void *                                               ; +0x140, 0x1800a8f80\nsub     edx, ebx                                                       ; +0x143, 0x1800a8f83\ncall    sub_1800F2F70                                                  ; +0x145, 0x1800a8f85\nadd     ebx, eax                                                       ; +0x14a, 0x1800a8f8a\nlea     rcx, [rsp+1B8h+var_158]                                        ; +0x14c, 0x1800a8f8c\nmovsxd  rax, ebx                                                       ; +0x151, 0x1800a8f91\nmov     edx, edi                                                       ; +0x154, 0x1800a8f94\nadd     rcx, rax                                                       ; +0x156, 0x1800a8f96\nsub     edx, ebx                                                       ; +0x159, 0x1800a8f99\nmov     r8, r14                                                        ; +0x15b, 0x1800a8f9b\ncall    sub_1800F3230                                                  ; +0x15e, 0x1800a8f9e\nadd     ebx, eax                                                       ; +0x163, 0x1800a8fa3\nlea     rcx, [rsp+1B8h+var_158]                                        ; +0x165, 0x1800a8fa5\nmovsxd  rax, ebx                                                       ; +0x16a, 0x1800a8faa\nlea     r8, asc_18014572C; \", \"                                        ; +0x16d, 0x1800a8fad\nmov     edx, edi                                                       ; +0x174, 0x1800a8fb4\nadd     rcx, rax; void *                                               ; +0x176, 0x1800a8fb6\nsub     edx, ebx                                                       ; +0x179, 0x1800a8fb9\ncall    sub_1800F2F70                                                  ; +0x17b, 0x1800a8fbb\nadd     ebx, eax                                                       ; +0x180, 0x1800a8fc0\nlea     rcx, [rsp+1B8h+var_158]                                        ; +0x182, 0x1800a8fc2\nmovsxd  rax, ebx                                                       ; +0x187, 0x1800a8fc7\nmov     edx, edi                                                       ; +0x18a, 0x1800a8fca\nadd     rcx, rax                                                       ; +0x18c, 0x1800a8fcc\nsub     edx, ebx                                                       ; +0x18f, 0x1800a8fcf\nmov     r8, r15                                                        ; +0x191, 0x1800a8fd1\ncall    sub_1800F3230                                                  ; +0x194, 0x1800a8fd4\nadd     ebx, eax                                                       ; +0x199, 0x1800a8fd9\nlea     rcx, [rsp+1B8h+var_158]                                        ; +0x19b, 0x1800a8fdb\nmovsxd  rax, ebx                                                       ; +0x1a0, 0x1800a8fe0\nlea     r8, asc_18014572C; \", \"                                        ; +0x1a3, 0x1800a8fe3\nmov     edx, edi                                                       ; +0x1aa, 0x1800a8fea\nadd     rcx, rax; void *                                               ; +0x1ac, 0x1800a8fec\nsub     edx, ebx                                                       ; +0x1af, 0x1800a8fef\ncall    sub_1800F2F70                                                  ; +0x1b1, 0x1800a8ff1\nadd     ebx, eax                                                       ; +0x1b6, 0x1800a8ff6\nlea     rcx, [rsp+1B8h+var_158]                                        ; +0x1b8, 0x1800a8ff8\nmovsxd  rax, ebx                                                       ; +0x1bd, 0x1800a8ffd\nmov     edx, edi                                                       ; +0x1c0, 0x1800a9000\nadd     rcx, rax                                                       ; +0x1c2, 0x1800a9002\nsub     edx, ebx                                                       ; +0x1c5, 0x1800a9005\nmov     r8, r12                                                        ; +0x1c7, 0x1800a9007\ncall    sub_1800F3060                                                  ; +0x1ca, 0x1800a900a\nadd     ebx, eax                                                       ; +0x1cf, 0x1800a900f\nlea     rcx, [rsp+1B8h+var_158]                                        ; +0x1d1, 0x1800a9011\nmovsxd  rax, ebx                                                       ; +0x1d6, 0x1800a9016\nlea     r8, asc_18014572C; \", \"                                        ; +0x1d9, 0x1800a9019\nmov     edx, edi                                                       ; +0x1e0, 0x1800a9020\nadd     rcx, rax; void *                                               ; +0x1e2, 0x1800a9022\nsub     edx, ebx                                                       ; +0x1e5, 0x1800a9025\ncall    sub_1800F2F70                                                  ; +0x1e7, 0x1800a9027\nadd     ebx, eax                                                       ; +0x1ec, 0x1800a902c\nlea     rcx, [rsp+1B8h+var_158]                                        ; +0x1ee, 0x1800a902e\nsub     edi, ebx                                                       ; +0x1f3, 0x1800a9033\nmovsxd  rax, ebx                                                       ; +0x1f5, 0x1800a9035\nadd     rcx, rax                                                       ; +0x1f8, 0x1800a9038\nmov     r8, r13                                                        ; +0x1fb, 0x1800a903b\nmov     edx, edi                                                       ; +0x1fe, 0x1800a903e\ncall    sub_1800F3060                                                  ; +0x200, 0x1800a9040\nmov     r8, [rsp+1B8h+var_168]                                         ; +0x205, 0x1800a9045\nlea     rax, [rsp+1B8h+var_158]                                        ; +0x20a, 0x1800a904a\nlea     r9, aSoundLock; \"Sound::lock\"                                  ; +0x20f, 0x1800a904f\nmov     [rsp+1B8h+var_198], rax                                        ; +0x216, 0x1800a9056\nmov     edx, 5                                                         ; +0x21b, 0x1800a905b\nmov     ecx, esi                                                       ; +0x220, 0x1800a9060\ncall    sub_1800B20E0                                                  ; +0x222, 0x1800a9062\nmov     rdi, [rsp+1B8h+var_20]                                         ; +0x227, 0x1800a9067\nmov     rcx, [rsp+1B8h+var_170]                                        ; +0x22f, 0x1800a906f\nmov     r15, [rsp+1B8h+var_40]                                         ; +0x234, 0x1800a9074\nmov     r14, [rsp+1B8h+var_38]                                         ; +0x23c, 0x1800a907c\nmov     r13, [rsp+1B8h+var_30]                                         ; +0x244, 0x1800a9084\nmov     r12, [rsp+1B8h+var_28]                                         ; +0x24c, 0x1800a908c\nmov     rbp, [rsp+1B8h+var_18]                                         ; +0x254, 0x1800a9094\nmov     rbx, [rsp+1B8h+var_10]                                         ; +0x25c, 0x1800a909c\ntest    rcx, rcx                                                       ; +0x264, 0x1800a90a4\njz      short loc_1800A90B3                                            ; +0x267, 0x1800a90a7\nmov     edx, 0Ch                                                       ; +0x269, 0x1800a90a9\ncall    sub_180102300                                                  ; +0x26e, 0x1800a90ae\nmov     eax, esi                                                       ; +0x273, 0x1800a90b3\nmov     rcx, [rsp+1B8h+var_58]                                         ; +0x275, 0x1800a90b5\nxor     rcx, rsp; StackCookie                                          ; +0x27d, 0x1800a90bd\ncall    __security_check_cookie                                        ; +0x280, 0x1800a90c0\nadd     rsp, 1B0h                                                      ; +0x285, 0x1800a90c5\npop     rsi                                                            ; +0x28c, 0x1800a90cc\nretn                                                                   ; +0x28d, 0x1800a90cd", "xrefs": ["FMOD_Sound_Lock @ 0x1800c672b", "<???> @ 0x180186d10", "<???> @ 0x180186d44", "<???> @ 0x180194348", "<???> @ 0x1801fbc28"], "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"}