{"type": "func", "start": 334420, "end": 335332, "name": "sub_51A54", "pseudocode": "// \n// sub_51A54 from 0x51a54 to 0x51de4 (912 bytes)\n// \n// 2 xrefs:\n// > sub_51EF4 @ 0x51f34\n// > sub_51EF4 @ 0x51f3c\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 sub_51A54(__int64 a1)\n{\n  _QWORD *v2; // x8\n  _QWORD *v3; // x10\n  __int64 v4; // x0\n  __int64 v5; // x19\n  unsigned int v6; // w9\n  _QWORD *v7; // x8\n  int v8; // w20\n  unsigned int v9; // w8\n  __int64 v10; // x21\n  unsigned int *v11; // x8\n  __int16 v12; // w9\n  unsigned int v13; // w8\n  char v14; // w8\n  int v15; // w0\n  __int64 v16; // x8\n  __int64 v17; // x0\n  unsigned int v18; // w8\n  __int64 v19; // x1\n  __int64 v20; // x9\n  __int64 v21; // x8\n  __int64 v22; // x8\n  __int64 v23; // x9\n  __int64 v24; // x0\n  __int64 v25; // x9\n  unsigned int v26; // w8\n  __int64 v27; // x8\n  __int64 v28; // x9\n  __int64 result; // x0\n  __int64 v30; // x9\n  __int64 v31; // [xsp+8h] [xbp-38h] BYREF\n  int v32; // [xsp+10h] [xbp-30h]\n  char v33; // [xsp+14h] [xbp-2Ch]\n  __int64 v34; // [xsp+18h] [xbp-28h]\n\n  v34 = 0;\n  FMOD_OS_CriticalSection_Enter(*(_QWORD *)(a1 + 360));\n  v2 = *(_QWORD **)(a1 + 336);\n  if ( v2 == (_QWORD *)(a1 + 336) )\n  {\n    FMOD_OS_CriticalSection_Leave(*(_QWORD *)(a1 + 360));\n    return 0;\n  }\n  v3 = (_QWORD *)v2[1];\n  v34 = v2[2];\n  *v3 = *v2;\n  *(_QWORD *)(*v2 + 8LL) = v3;\n  *v2 = v2;\n  v2[1] = v2;\n  v4 = FMOD_OS_CriticalSection_Leave(*(_QWORD *)(a1 + 360));\n  if ( !v34 )\n    return 0;\n  v5 = *(_QWORD *)(v34 + 216);\n  v6 = atomic_load((unsigned int *)(v34 + 272));\n  if ( v6 != 1 )\n  {\n    v9 = atomic_load((unsigned int *)(v34 + 272));\n    v10 = v34;\n    if ( v9 == 7 )\n    {\n      while ( 1 )\n      {\n        v11 = (unsigned int *)(v34 + 88);\n        v12 = atomic_load((unsigned int *)(v34 + 88));\n        if ( (v12 & 0x440) != 0 )\n          break;\n        FMOD_OS_Time_Sleep(10);\n      }\n      v14 = atomic_load(v11);\n      if ( (v14 & 0x40) == 0 )\n      {\n        v15 = (*(__int64 (__fastcall **)(_QWORD, _QWORD, _QWORD, __int64))(**(_QWORD **)(v34 + 376) + 216LL))(\n                *(_QWORD *)(v34 + 376),\n                *(unsigned int *)(*(_QWORD *)(v34 + 264) + 284LL),\n                *(unsigned int *)(*(_QWORD *)(v34 + 264) + 288LL),\n                1);\n        v16 = *(_QWORD *)(v34 + 216);\n        v8 = v15;\n        v33 = 0;\n        v31 = v16;\n        v32 = 8;\n        sub_520A0(&v31);\n        v17 = *(_QWORD *)(v10 + 376);\n        v18 = *(_DWORD *)(v17 + 60);\n        *(_DWORD *)(v17 + 60) = v18 & 0xFFFFBFFF;\n        if ( v8 != 30 )\n        {\n          if ( v8 )\n          {\nLABEL_21:\n            sub_51F94(&v31);\n            goto LABEL_29;\n          }\n          if ( *(_QWORD *)(v17 + 192) )\n            (*(void (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v17 + 88LL))(v17, (v18 >> 5) & 1);\n        }\n        v8 = 0;\n        goto LABEL_21;\n      }\n      v21 = *(_QWORD *)(v34 + 216);\n      v33 = 0;\n      v32 = 8;\n      v31 = v21;\n      sub_520A0(&v31);\n      *(_DWORD *)(*(_QWORD *)(v10 + 376) + 60LL) &= ~0x4000u;\n      sub_51F94(&v31);\n    }\n    else\n    {\n      v13 = atomic_load((unsigned int *)(v34 + 272));\n      if ( v13 == 5 )\n      {\n        v8 = sub_68A84(v34, *(unsigned int *)(v34 + 192));\n        if ( !v8 )\n        {\n          v8 = sub_66E18(v34, 0, 2);\n          if ( !v8 )\n            v8 = sub_66D84(v34);\n        }\n        goto LABEL_29;\n      }\n    }\nLABEL_28:\n    v8 = 0;\n    goto LABEL_29;\n  }\n  v7 = *(_QWORD **)(v34 + 264);\n  if ( (*(_DWORD *)(v34 + 44) & 0x10000800) != 0 )\n  {\n    v8 = sub_52128(v4, v7[6]);\n    if ( v8 )\n      goto LABEL_29;\nLABEL_25:\n    v20 = *(_QWORD *)(v34 + 264);\n    if ( *(_BYTE *)(v20 + 280) )\n    {\n      v8 = 0;\n      *(_QWORD *)(v34 + 200) = *(_QWORD *)(v20 + 160);\n      goto LABEL_29;\n    }\n    goto LABEL_28;\n  }\n  v8 = sub_52128(v4, *v7);\n  v19 = **(_QWORD **)(v34 + 264);\n  if ( v19 )\n  {\n    sub_E2D74(*(__int64 *)((char *)&qword_1B0 + (_QWORD)off_114000), v19, \"../../src/fmod_async.cpp\", 205, 1);\n    **(_QWORD **)(v34 + 264) = 0;\n  }\n  if ( !v8 )\n    goto LABEL_25;\nLABEL_29:\n  v22 = v34;\n  *(_DWORD *)(*(_QWORD *)(v34 + 264) + 292LL) = v8;\n  v23 = *(_QWORD *)(v22 + 184);\n  if ( v23 )\n    *(_BYTE *)(v23 + 92) = 1;\n  *(_BYTE *)(v22 + 92) = 1;\n  atomic_store(2 * (v8 != 0), (unsigned int *)(v22 + 272));\n  v24 = v34;\n  if ( *(_QWORD *)(v34 + 184) )\n  {\n    sub_52148();\n    v24 = v34;\n  }\n  if ( *(_QWORD *)(v24 + 168) )\n  {\n    sub_52148();\n  }\n  else if ( ((**(__int64 (__fastcall ***)(__int64))v24)(v24) & 1) != 0 && *(_DWORD *)(v34 + 176) == 1 )\n  {\n    v25 = **(_QWORD **)(v34 + 160);\n    if ( v25 )\n    {\n      v26 = atomic_load((unsigned int *)(v34 + 272));\n      atomic_store(v26, (unsigned int *)(v25 + 272));\n    }\n  }\n  v27 = v34;\n  v28 = *(_QWORD *)(v34 + 264);\n  if ( !*(_BYTE *)(v28 + 280) || !*(_QWORD *)(v28 + 128) )\n  {\nLABEL_44:\n    v30 = *(_QWORD *)(v27 + 184);\n    *(_BYTE *)(v27 + 92) = 0;\n    if ( v30 )\n    {\n      *(_BYTE *)(v30 + 92) = 0;\n      return 0;\n    }\n    return 0;\n  }\n  result = sub_7BA10(v5, 1);\n  if ( !(_DWORD)result )\n  {\n    (*(void (**)(void))(*(_QWORD *)(v34 + 264) + 128LL))();\n    result = sub_7BAA0(v5);\n    if ( !(_DWORD)result )\n    {\n      v27 = v34;\n      goto LABEL_44;\n    }\n  }\n  return result;\n}", "assembly": "; \n; sub_51A54 from 0x51a54 to 0x51de4 (912 bytes)\n; \n; 2 xrefs:\n; > sub_51EF4 @ 0x51f34\n; > sub_51EF4 @ 0x51f3c\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\nB               loc_51A58                                              ; +0x0, 0x51a54\nSUB             SP, SP, #0x50                                          ; +0x4, 0x51a58\nSTP             X22, X21, [SP,#0x40+var_20]                            ; +0x8, 0x51a5c\nSTP             X20, X19, [SP,#0x40+var_10]                            ; +0xc, 0x51a60\nSTP             X29, X30, [SP,#0x40+var_s0]                            ; +0x10, 0x51a64\nSTR             XZR, [SP,#0x40+var_28]                                 ; +0x14, 0x51a68\nMOV             X19, X0                                                ; +0x18, 0x51a6c\nLDR             X0, [X0,#0x168]                                        ; +0x1c, 0x51a70\nADD             X29, SP, #0x40                                         ; +0x20, 0x51a74\nBL              .FMOD_OS_CriticalSection_Enter                         ; +0x24, 0x51a78\nLDR             X8, [X19,#0x150]                                       ; +0x28, 0x51a7c\nADD             X9, X19, #0x150                                        ; +0x2c, 0x51a80\nCMP             X8, X9                                                 ; +0x30, 0x51a84\nB.EQ            loc_51B00                                              ; +0x34, 0x51a88\nLDP             X10, X9, [X8,#8]                                       ; +0x38, 0x51a8c\nSTR             X9, [SP,#0x40+var_28]                                  ; +0x3c, 0x51a90\nLDR             X9, [X8]                                               ; +0x40, 0x51a94\nSTR             X9, [X10]                                              ; +0x44, 0x51a98\nLDR             X9, [X8]                                               ; +0x48, 0x51a9c\nSTR             X10, [X9,#8]                                           ; +0x4c, 0x51aa0\nSTP             X8, X8, [X8]                                           ; +0x50, 0x51aa4\nLDR             X0, [X19,#0x168]                                       ; +0x54, 0x51aa8\nLDR             X20, [SP,#0x40+var_28]                                 ; +0x58, 0x51aac\nBL              .FMOD_OS_CriticalSection_Leave                         ; +0x5c, 0x51ab0\nCBZ             X20, loc_51DCC                                         ; +0x60, 0x51ab4\nADD             X8, X20, #0x110                                        ; +0x64, 0x51ab8\nLDR             X19, [X20,#0xD8]                                       ; +0x68, 0x51abc\nLDAR            W9, [X8]                                               ; +0x6c, 0x51ac0\nLDR             X8, [SP,#0x40+var_28]                                  ; +0x70, 0x51ac4\nCMP             W9, #1                                                 ; +0x74, 0x51ac8\nB.NE            loc_51B0C                                              ; +0x78, 0x51acc\nLDR             W2, [X8,#0x2C]                                         ; +0x7c, 0x51ad0\nLDR             X8, [X8,#0x108]                                        ; +0x80, 0x51ad4\nMOV             W9, #0x10000800                                        ; +0x84, 0x51ad8\nTST             W2, W9                                                 ; +0x8c, 0x51ae0\nB.EQ            loc_51C20                                              ; +0x90, 0x51ae4\nLDRB            W9, [X8,#0x118]                                        ; +0x94, 0x51ae8\nLDR             X1, [X8,#0x30]                                         ; +0x98, 0x51aec\nBL              sub_52128                                              ; +0x9c, 0x51af0\nMOV             W20, W0                                                ; +0xa0, 0x51af4\nCBNZ            W20, loc_51CD0                                         ; +0xa4, 0x51af8\nB               loc_51C74                                              ; +0xa8, 0x51afc\nLDR             X0, [X19,#0x168]                                       ; +0xac, 0x51b00\nBL              .FMOD_OS_CriticalSection_Leave                         ; +0xb0, 0x51b04\nB               loc_51DCC                                              ; +0xb4, 0x51b08\nADD             X8, X8, #0x110                                         ; +0xb8, 0x51b0c\nLDAR            W8, [X8]                                               ; +0xbc, 0x51b10\nLDR             X21, [SP,#0x40+var_28]                                 ; +0xc0, 0x51b14\nCMP             W8, #7                                                 ; +0xc4, 0x51b18\nB.NE            loc_51B40                                              ; +0xc8, 0x51b1c\nMOV             W20, #0x440                                            ; +0xcc, 0x51b20\nADD             X8, X21, #0x58 ; 'X'                                   ; +0xd0, 0x51b24\nLDAR            W9, [X8]                                               ; +0xd4, 0x51b28\nTST             W9, W20                                                ; +0xd8, 0x51b2c\nB.NE            loc_51B90                                              ; +0xdc, 0x51b30\nMOV             W0, #0xA                                               ; +0xe0, 0x51b34\nBL              .FMOD_OS_Time_Sleep                                    ; +0xe4, 0x51b38\nB               loc_51B24                                              ; +0xe8, 0x51b3c\nADD             X8, X21, #0x110                                        ; +0xec, 0x51b40\nLDAR            W8, [X8]                                               ; +0xf0, 0x51b44\nCMP             W8, #5                                                 ; +0xf4, 0x51b48\nB.NE            loc_51CCC                                              ; +0xf8, 0x51b4c\nLDR             X21, [SP,#0x40+var_28]                                 ; +0xfc, 0x51b50\nLDR             W1, [X21,#0xC0]                                        ; +0x100, 0x51b54\nMOV             X0, X21                                                ; +0x104, 0x51b58\nBL              sub_68A84                                              ; +0x108, 0x51b5c\nMOV             W20, W0                                                ; +0x10c, 0x51b60\nCBNZ            W0, loc_51CD0                                          ; +0x110, 0x51b64\nMOV             W2, #2                                                 ; +0x114, 0x51b68\nMOV             X0, X21                                                ; +0x118, 0x51b6c\nMOV             W1, WZR                                                ; +0x11c, 0x51b70\nBL              sub_66E18                                              ; +0x120, 0x51b74\nMOV             W20, W0                                                ; +0x124, 0x51b78\nCBNZ            W0, loc_51CD0                                          ; +0x128, 0x51b7c\nMOV             X0, X21                                                ; +0x12c, 0x51b80\nBL              sub_66D84                                              ; +0x130, 0x51b84\nMOV             W20, W0                                                ; +0x134, 0x51b88\nB               loc_51CD0                                              ; +0x138, 0x51b8c\nLDAR            W8, [X8]                                               ; +0x13c, 0x51b90\nTBNZ            W8, #6, loc_51C94                                      ; +0x140, 0x51b94\nLDR             X22, [SP,#0x40+var_28]                                 ; +0x144, 0x51b98\nLDR             X0, [X21,#0x178]                                       ; +0x148, 0x51b9c\nMOV             W3, #1                                                 ; +0x14c, 0x51ba0\nLDR             X8, [X22,#0x108]                                       ; +0x150, 0x51ba4\nLDR             X9, [X0]                                               ; +0x154, 0x51ba8\nLDR             W1, [X8,#0x11C]                                        ; +0x158, 0x51bac\nLDR             W2, [X8,#0x120]                                        ; +0x15c, 0x51bb0\nLDR             X8, [X9,#0xD8]                                         ; +0x160, 0x51bb4\nBLR             X8                                                     ; +0x164, 0x51bb8\nLDR             X8, [X22,#0xD8]                                        ; +0x168, 0x51bbc\nMOV             W20, W0                                                ; +0x16c, 0x51bc0\nMOV             W9, #8                                                 ; +0x170, 0x51bc4\nADD             X0, SP, #0x40+var_38                                   ; +0x174, 0x51bc8\nSTRB            WZR, [SP,#0x40+var_2C]                                 ; +0x178, 0x51bcc\nSTR             X8, [SP,#0x40+var_38]                                  ; +0x17c, 0x51bd0\nSTR             W9, [SP,#0x40+var_30]                                  ; +0x180, 0x51bd4\nBL              sub_520A0                                              ; +0x184, 0x51bd8\nLDR             X0, [X21,#0x178]                                       ; +0x188, 0x51bdc\nCMP             W20, #0x1E                                             ; +0x18c, 0x51be0\nLDR             W8, [X0,#0x3C]                                         ; +0x190, 0x51be4\nAND             W9, W8, #0xFFFFBFFF                                    ; +0x194, 0x51be8\nSTR             W9, [X0,#0x3C]                                         ; +0x198, 0x51bec\nB.EQ            loc_51C10                                              ; +0x19c, 0x51bf0\nCBNZ            W20, loc_51C14                                         ; +0x1a0, 0x51bf4\nLDR             X9, [X0,#0xC0]                                         ; +0x1a4, 0x51bf8\nCBZ             X9, loc_51C10                                          ; +0x1a8, 0x51bfc\nLDR             X9, [X0]                                               ; +0x1ac, 0x51c00\nUBFX            W1, W8, #5, #1                                         ; +0x1b0, 0x51c04\nLDR             X9, [X9,#0x58]                                         ; +0x1b4, 0x51c08\nBLR             X9                                                     ; +0x1b8, 0x51c0c\nMOV             W20, WZR                                               ; +0x1bc, 0x51c10\nADD             X0, SP, #0x40+var_38                                   ; +0x1c0, 0x51c14\nBL              sub_51F94                                              ; +0x1c4, 0x51c18\nB               loc_51CD0                                              ; +0x1c8, 0x51c1c\nLDRB            W9, [X8,#0x118]                                        ; +0x1cc, 0x51c20\nLDR             X1, [X8]                                               ; +0x1d0, 0x51c24\nBL              sub_52128                                              ; +0x1d4, 0x51c28\nLDR             X8, [SP,#0x40+var_28]                                  ; +0x1d8, 0x51c2c\nMOV             W20, W0                                                ; +0x1dc, 0x51c30\nLDR             X8, [X8,#0x108]                                        ; +0x1e0, 0x51c34\nLDR             X1, [X8]                                               ; +0x1e4, 0x51c38\nCBZ             X1, loc_51C70                                          ; +0x1e8, 0x51c3c\nADRP            X8, #off_10F7A0@PAGE                                   ; +0x1ec, 0x51c40\nLDR             X8, [X8,#off_10F7A0@PAGEOFF]; off_114000               ; +0x1f0, 0x51c44\nADRL            X2, aSrcFmodAsyncCp; \"../../src/fmod_async.cpp\"        ; +0x1f4, 0x51c48\nMOV             W3, #0xCD                                              ; +0x1fc, 0x51c50\nLDR             X8, [X8]; unk_11F800                                   ; +0x200, 0x51c54\nMOV             W4, #1                                                 ; +0x204, 0x51c58\nLDR             X0, [X8,#(qword_11F9B0 - 0x11F800)]                    ; +0x208, 0x51c5c\nBL              sub_E2D74                                              ; +0x20c, 0x51c60\nLDR             X8, [SP,#0x40+var_28]                                  ; +0x210, 0x51c64\nLDR             X8, [X8,#0x108]                                        ; +0x214, 0x51c68\nSTR             XZR, [X8]                                              ; +0x218, 0x51c6c\nCBNZ            W20, loc_51CD0                                         ; +0x21c, 0x51c70\nLDR             X8, [SP,#0x40+var_28]                                  ; +0x220, 0x51c74\nLDR             X9, [X8,#0x108]                                        ; +0x224, 0x51c78\nLDRB            W10, [X9,#0x118]                                       ; +0x228, 0x51c7c\nCBZ             W10, loc_51CCC                                         ; +0x22c, 0x51c80\nLDR             X9, [X9,#0xA0]                                         ; +0x230, 0x51c84\nMOV             W20, WZR                                               ; +0x234, 0x51c88\nSTR             X9, [X8,#0xC8]                                         ; +0x238, 0x51c8c\nB               loc_51CD0                                              ; +0x23c, 0x51c90\nLDR             X8, [SP,#0x40+var_28]                                  ; +0x240, 0x51c94\nMOV             W9, #8                                                 ; +0x244, 0x51c98\nADD             X0, SP, #0x40+var_38                                   ; +0x248, 0x51c9c\nLDR             X8, [X8,#0xD8]                                         ; +0x24c, 0x51ca0\nSTRB            WZR, [SP,#0x40+var_2C]                                 ; +0x250, 0x51ca4\nSTR             W9, [SP,#0x40+var_30]                                  ; +0x254, 0x51ca8\nSTR             X8, [SP,#0x40+var_38]                                  ; +0x258, 0x51cac\nBL              sub_520A0                                              ; +0x25c, 0x51cb0\nLDR             X8, [X21,#0x178]                                       ; +0x260, 0x51cb4\nADD             X0, SP, #0x40+var_38                                   ; +0x264, 0x51cb8\nLDR             W9, [X8,#0x3C]                                         ; +0x268, 0x51cbc\nAND             W9, W9, #0xFFFFBFFF                                    ; +0x26c, 0x51cc0\nSTR             W9, [X8,#0x3C]                                         ; +0x270, 0x51cc4\nBL              sub_51F94                                              ; +0x274, 0x51cc8\nMOV             W20, WZR                                               ; +0x278, 0x51ccc\nLDR             X8, [SP,#0x40+var_28]                                  ; +0x27c, 0x51cd0\nLDR             X9, [X8,#0x108]                                        ; +0x280, 0x51cd4\nSTR             W20, [X9,#0x124]                                       ; +0x284, 0x51cd8\nLDR             X9, [X8,#0xB8]                                         ; +0x288, 0x51cdc\nCBZ             X9, loc_51CEC                                          ; +0x28c, 0x51ce0\nMOV             W10, #1                                                ; +0x290, 0x51ce4\nSTRB            W10, [X9,#0x5C]                                        ; +0x294, 0x51ce8\nMOV             W9, #1                                                 ; +0x298, 0x51cec\nCMP             W20, #0                                                ; +0x29c, 0x51cf0\nSTRB            W9, [X8,#0x5C]                                         ; +0x2a0, 0x51cf4\nCSET            W9, NE                                                 ; +0x2a4, 0x51cf8\nLSL             W9, W9, #1                                             ; +0x2a8, 0x51cfc\nADD             X8, X8, #0x110                                         ; +0x2ac, 0x51d00\nSTLR            W9, [X8]                                               ; +0x2b0, 0x51d04\nLDR             X0, [SP,#0x40+var_28]                                  ; +0x2b4, 0x51d08\nLDR             X8, [X0,#0xB8]                                         ; +0x2b8, 0x51d0c\nCBZ             X8, loc_51D1C                                          ; +0x2bc, 0x51d10\nBL              sub_52148                                              ; +0x2c0, 0x51d14\nLDR             X0, [SP,#0x40+var_28]                                  ; +0x2c4, 0x51d18\nLDR             X8, [X0,#0xA8]                                         ; +0x2c8, 0x51d1c\nCBZ             X8, loc_51D2C                                          ; +0x2cc, 0x51d20\nBL              sub_52148                                              ; +0x2d0, 0x51d24\nB               loc_51D68                                              ; +0x2d4, 0x51d28\nLDR             X8, [X0]                                               ; +0x2d8, 0x51d2c\nLDR             X8, [X8]                                               ; +0x2dc, 0x51d30\nBLR             X8                                                     ; +0x2e0, 0x51d34\nTBZ             W0, #0, loc_51D68                                      ; +0x2e4, 0x51d38\nLDR             X8, [SP,#0x40+var_28]                                  ; +0x2e8, 0x51d3c\nLDR             W9, [X8,#0xB0]                                         ; +0x2ec, 0x51d40\nCMP             W9, #1                                                 ; +0x2f0, 0x51d44\nB.NE            loc_51D68                                              ; +0x2f4, 0x51d48\nLDR             X9, [X8,#0xA0]                                         ; +0x2f8, 0x51d4c\nLDR             X9, [X9]                                               ; +0x2fc, 0x51d50\nCBZ             X9, loc_51D68                                          ; +0x300, 0x51d54\nADD             X8, X8, #0x110                                         ; +0x304, 0x51d58\nLDAR            W8, [X8]                                               ; +0x308, 0x51d5c\nADD             X9, X9, #0x110                                         ; +0x30c, 0x51d60\nSTLR            W8, [X9]                                               ; +0x310, 0x51d64\nLDR             X8, [SP,#0x40+var_28]                                  ; +0x314, 0x51d68\nLDR             X9, [X8,#0x108]                                        ; +0x318, 0x51d6c\nLDRB            W10, [X9,#0x118]                                       ; +0x31c, 0x51d70\nCBZ             W10, loc_51DB4                                         ; +0x320, 0x51d74\nLDR             X9, [X9,#0x80]                                         ; +0x324, 0x51d78\nCBZ             X9, loc_51DB4                                          ; +0x328, 0x51d7c\nMOV             W1, #1                                                 ; +0x32c, 0x51d80\nMOV             X0, X19                                                ; +0x330, 0x51d84\nBL              sub_7BA10                                              ; +0x334, 0x51d88\nCBNZ            W0, loc_51DD0                                          ; +0x338, 0x51d8c\nLDR             X0, [SP,#0x40+var_28]                                  ; +0x33c, 0x51d90\nMOV             W1, W20                                                ; +0x340, 0x51d94\nLDR             X8, [X0,#0x108]                                        ; +0x344, 0x51d98\nLDR             X8, [X8,#0x80]                                         ; +0x348, 0x51d9c\nBLR             X8                                                     ; +0x34c, 0x51da0\nMOV             X0, X19                                                ; +0x350, 0x51da4\nBL              sub_7BAA0                                              ; +0x354, 0x51da8\nCBNZ            W0, loc_51DD0                                          ; +0x358, 0x51dac\nLDR             X8, [SP,#0x40+var_28]                                  ; +0x35c, 0x51db0\nLDR             X9, [X8,#0xB8]                                         ; +0x360, 0x51db4\nSTRB            WZR, [X8,#0x5C]                                        ; +0x364, 0x51db8\nCBZ             X9, loc_51DCC                                          ; +0x368, 0x51dbc\nMOV             W0, WZR                                                ; +0x36c, 0x51dc0\nSTRB            WZR, [X9,#0x5C]                                        ; +0x370, 0x51dc4\nB               loc_51DD0                                              ; +0x374, 0x51dc8\nMOV             W0, WZR                                                ; +0x378, 0x51dcc\nLDP             X29, X30, [SP,#0x40+var_s0]                            ; +0x37c, 0x51dd0\nLDP             X20, X19, [SP,#0x40+var_10]                            ; +0x380, 0x51dd4\nLDP             X22, X21, [SP,#0x40+var_20]                            ; +0x384, 0x51dd8\nADD             SP, SP, #0x50 ; 'P'                                    ; +0x388, 0x51ddc\nRET                                                                    ; +0x38c, 0x51de0", "xrefs": ["sub_51EF4 @ 0x51f34", "sub_51EF4 @ 0x51f3c"], "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"}