{"type": "func", "start": 944188, "end": 944380, "name": "FMOD_Android_JNI_Close", "pseudocode": "// \n// FMOD_Android_JNI_Close from 0xe683c to 0xe68fc (192 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x4f48\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 FMOD_Android_JNI_Close()\n{\n  __int64 result; // x0\n  __int64 v1; // x0\n  __int64 v2; // x0\n  __int64 v3; // x8\n\n  result = sub_E667C();\n  if ( !(_DWORD)result )\n  {\n    v1 = MEMORY[0x10102464C4907](0, gFMODClass, \"close\", \"()V\");\n    if ( v1 && (sub_E67CC(0, gFMODClass, v1), !(unsigned __int8)MEMORY[0x10102464C4C9F](0)) )\n    {\n      sub_E6904(0, gAudioDeviceClass);\n      sub_E6904(0, gMediaCodecClass);\n      v2 = sub_E6904(0, gFMODClass);\n      sub_E6934(v2);\n      *(_QWORD *)(*(_QWORD *)v3 + 456LL) = 0;\n      return 0;\n    }\n    else\n    {\n      return 28;\n    }\n  }\n  return result;\n}", "assembly": "; \n; FMOD_Android_JNI_Close from 0xe683c to 0xe68fc (192 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x4f48\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\nSTR             X19, [SP,#-0x10+var_10]!                               ; +0x0, 0xe683c\nADD             X0, SP, #0x10+var_8                                    ; +0x4, 0xe6840\nSTP             X29, X30, [SP,#0x10+var_s0]                            ; +0x8, 0xe6844\nADD             X29, SP, #0x10                                         ; +0xc, 0xe6848\nSTR             XZR, [SP,#0x10+var_8]                                  ; +0x10, 0xe684c\nBL              sub_E667C                                              ; +0x14, 0xe6850\nCBNZ            W0, loc_E68F0                                          ; +0x18, 0xe6854\nLDR             X0, [SP,#0x10+var_8]                                   ; +0x1c, 0xe6858\nADRP            X19, #gFMODClass@PAGE                                  ; +0x20, 0xe685c\nLDR             X1, [X19,#gFMODClass@PAGEOFF]                          ; +0x24, 0xe6860\nADRP            X2, #aClose_0@PAGE; \"close\"                            ; +0x28, 0xe6864\nLDR             X8, [X0]                                               ; +0x2c, 0xe6868\nADRP            X3, #aV@PAGE; \"()V\"                                    ; +0x30, 0xe686c\nADD             X2, X2, #aClose_0@PAGEOFF; \"close\"                     ; +0x34, 0xe6870\nADD             X3, X3, #aV@PAGEOFF; \"()V\"                             ; +0x38, 0xe6874\nLDR             X8, [X8,#0x388]                                        ; +0x3c, 0xe6878\nBLR             X8                                                     ; +0x40, 0xe687c\nCBZ             X0, loc_E68AC                                          ; +0x44, 0xe6880\nMOV             X2, X0                                                 ; +0x48, 0xe6884\nLDR             X0, [SP,#0x10+var_8]                                   ; +0x4c, 0xe6888\nLDR             X1, [X19,#gFMODClass@PAGEOFF]                          ; +0x50, 0xe688c\nBL              sub_E67CC                                              ; +0x54, 0xe6890\nLDR             X0, [SP,#0x10+var_8]                                   ; +0x58, 0xe6894\nLDR             X8, [X0]                                               ; +0x5c, 0xe6898\nLDR             X8, [X8,#0x720]                                        ; +0x60, 0xe689c\nBLR             X8                                                     ; +0x64, 0xe68a0\nTST             W0, #0xFF                                              ; +0x68, 0xe68a4\nB.EQ            loc_E68B4                                              ; +0x6c, 0xe68a8\nMOV             W0, #0x1C                                              ; +0x70, 0xe68ac\nB               loc_E68F0                                              ; +0x74, 0xe68b0\nLDR             X0, [SP,#0x10+var_8]                                   ; +0x78, 0xe68b4\nADRL            X19, gAudioDeviceClass                                 ; +0x7c, 0xe68b8\nLDR             X1, [X19]                                              ; +0x84, 0xe68c0\nBL              sub_E6904                                              ; +0x88, 0xe68c4\nLDR             X0, [SP,#0x10+var_8]                                   ; +0x8c, 0xe68c8\nLDR             X1, [X19,#(gMediaCodecClass - 0x155F38)]               ; +0x90, 0xe68cc\nBL              sub_E6904                                              ; +0x94, 0xe68d0\nLDR             X0, [SP,#0x10+var_8]                                   ; +0x98, 0xe68d4\nLDR             X1, [X19,#(gFMODClass - 0x155F38)]                     ; +0x9c, 0xe68d8\nBL              sub_E6904                                              ; +0xa0, 0xe68dc\nBL              sub_E6934                                              ; +0xa4, 0xe68e0\nMOV             W0, WZR                                                ; +0xa8, 0xe68e4\nLDR             X8, [X8]                                               ; +0xac, 0xe68e8\nSTR             XZR, [X8,#0x1C8]                                       ; +0xb0, 0xe68ec\nLDP             X29, X30, [SP,#0x10+var_s0]                            ; +0xb4, 0xe68f0\nLDR             X19, [SP+0x10+var_10],#0x20                            ; +0xb8, 0xe68f4\nRET                                                                    ; +0xbc, 0xe68f8", "xrefs": ["<???> @ 0x4f48"], "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"}