; ; FMOD_Android_JNI_Init from 0xe6484 to 0xe667c (504 bytes) ; ; 1 xrefs: ; > @ 0x60a0 ; ; This function is hookable on this platform! ; ; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA ; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings ; SUB SP, SP, #0x50 ; +0x0, 0xe6484 STP X24, X23, [SP,#0x50+var_40] ; +0x4, 0xe6488 STP X22, X21, [SP,#0x50+var_30] ; +0x8, 0xe648c STP X20, X19, [SP,#0x50+var_20] ; +0xc, 0xe6490 STP X29, X30, [SP,#0x50+var_10] ; +0x10, 0xe6494 BL sub_E6934 ; +0x14, 0xe6498 ADD X29, SP, #0x50+var_10 ; +0x18, 0xe649c LDR X9, [X8] ; +0x1c, 0xe64a0 LDR X10, [X9,#0x1C8] ; +0x20, 0xe64a4 CBZ X10, loc_E64C8 ; +0x24, 0xe64a8 MOV W0, WZR ; +0x28, 0xe64ac LDP X29, X30, [SP,#0x50+var_10] ; +0x2c, 0xe64b0 LDP X20, X19, [SP,#0x50+var_20] ; +0x30, 0xe64b4 LDP X22, X21, [SP,#0x50+var_30] ; +0x34, 0xe64b8 LDP X24, X23, [SP,#0x50+var_40] ; +0x38, 0xe64bc ADD SP, SP, #0x50 ; 'P' ; +0x3c, 0xe64c0 RET ; +0x40, 0xe64c4 MOV X8, X0 ; +0x44, 0xe64c8 MOV W0, #0x1F ; +0x48, 0xe64cc CBZ X8, loc_E64B0 ; +0x4c, 0xe64d0 MOV X19, X1 ; +0x50, 0xe64d4 CBZ X1, loc_E64B0 ; +0x54, 0xe64d8 ADD X0, SP, #0x50+var_48 ; +0x58, 0xe64dc STR X8, [X9,#0x1C8] ; +0x5c, 0xe64e0 BL sub_E667C ; +0x60, 0xe64e4 CBNZ W0, loc_E64B0 ; +0x64, 0xe64e8 LDR X0, [SP,#0x50+var_48] ; +0x68, 0xe64ec ADRL X1, aAndroidAppNati; "android/app/NativeActivity" ; +0x6c, 0xe64f0 BL sub_E6928 ; +0x74, 0xe64f8 CBZ X0, loc_E6574 ; +0x78, 0xe64fc MOV X20, X0 ; +0x7c, 0xe6500 LDR X0, [SP,#0x50+var_48] ; +0x80, 0xe6504 ADRL X1, aJavaLangClassl; "java/lang/ClassLoader" ; +0x84, 0xe6508 BL sub_E6928 ; +0x8c, 0xe6510 CBZ X0, loc_E6574 ; +0x90, 0xe6514 MOV X21, X0 ; +0x94, 0xe6518 LDR X0, [SP,#0x50+var_48] ; +0x98, 0xe651c ADRP X2, #aGetclassloader@PAGE; "getClassLoader" ; +0x9c, 0xe6520 ADRP X3, #aLjavaLangClass@PAGE; "()Ljava/lang/ClassLoader;" ; +0xa0, 0xe6524 ADD X2, X2, #aGetclassloader@PAGEOFF; "getClassLoader" ; +0xa4, 0xe6528 LDR X8, [X0] ; +0xa8, 0xe652c ADD X3, X3, #aLjavaLangClass@PAGEOFF; "()Ljava/lang/ClassLoader;" ; +0xac, 0xe6530 MOV X1, X20 ; +0xb0, 0xe6534 LDR X8, [X8,#0x108] ; +0xb4, 0xe6538 BLR X8 ; +0xb8, 0xe653c CBZ X0, loc_E6574 ; +0xbc, 0xe6540 MOV X2, X0 ; +0xc0, 0xe6544 LDR X0, [SP,#0x50+var_48] ; +0xc4, 0xe6548 MOV X1, X19 ; +0xc8, 0xe654c BL sub_E675C ; +0xcc, 0xe6550 LDR X8, [SP,#0x50+var_48] ; +0xd0, 0xe6554 MOV X22, X0 ; +0xd4, 0xe6558 LDR X9, [X8] ; +0xd8, 0xe655c MOV X0, X8 ; +0xdc, 0xe6560 LDR X9, [X9,#0x720] ; +0xe0, 0xe6564 BLR X9 ; +0xe4, 0xe6568 TST W0, #0xFF ; +0xe8, 0xe656c B.EQ loc_E657C ; +0xec, 0xe6570 MOV W0, #0x1C ; +0xf0, 0xe6574 B loc_E64B0 ; +0xf4, 0xe6578 LDR X0, [SP,#0x50+var_48] ; +0xf8, 0xe657c ADRP X2, #aLoadclass@PAGE; "loadClass" ; +0xfc, 0xe6580 ADRP X3, #aLjavaLangStrin@PAGE; "(Ljava/lang/String;)Ljava/lang/Class;" ; +0x100, 0xe6584 ADD X2, X2, #aLoadclass@PAGEOFF; "loadClass" ; +0x104, 0xe6588 LDR X8, [X0] ; +0x108, 0xe658c ADD X3, X3, #aLjavaLangStrin@PAGEOFF; "(Ljava/lang/String;)Ljava/lang/Class;" ; +0x10c, 0xe6590 MOV X1, X21 ; +0x110, 0xe6594 LDR X8, [X8,#0x108] ; +0x114, 0xe6598 BLR X8 ; +0x118, 0xe659c CBZ X0, loc_E6574 ; +0x11c, 0xe65a0 MOV X1, X0 ; +0x120, 0xe65a4 LDR X0, [SP,#0x50+var_48] ; +0x124, 0xe65a8 MOV X2, X22 ; +0x128, 0xe65ac BL sub_E638C ; +0x12c, 0xe65b0 CBNZ W0, loc_E64B0 ; +0x130, 0xe65b4 LDR X23, [SP,#0x50+var_48] ; +0x134, 0xe65b8 ADRP X24, #gFMODClass@PAGE ; +0x138, 0xe65bc LDR X1, [X24,#gFMODClass@PAGEOFF] ; +0x13c, 0xe65c0 ADRP X2, #off_11AA40@PAGE; "OutputAAudioHeadphonesChanged" ; +0x140, 0xe65c4 LDR X8, [X23] ; +0x144, 0xe65c8 ADD X2, X2, #off_11AA40@PAGEOFF; "OutputAAudioHeadphonesChanged" ; +0x148, 0xe65cc MOV W3, #3 ; +0x14c, 0xe65d0 MOV X0, X23 ; +0x150, 0xe65d4 LDR X8, [X8,#0x6B8] ; +0x154, 0xe65d8 BLR X8 ; +0x158, 0xe65dc CBNZ W0, loc_E6574 ; +0x15c, 0xe65e0 LDR X8, [X23] ; +0x160, 0xe65e4 ADRP X9, #gMediaCodecClass@PAGE ; +0x164, 0xe65e8 LDR X1, [X9,#gMediaCodecClass@PAGEOFF] ; +0x168, 0xe65ec ADRP X2, #off_11AA10@PAGE; "fmodReadAt" ; +0x16c, 0xe65f0 LDR X8, [X8,#0x6B8] ; +0x170, 0xe65f4 ADD X2, X2, #off_11AA10@PAGEOFF; "fmodReadAt" ; +0x174, 0xe65f8 MOV W3, #2 ; +0x178, 0xe65fc MOV X0, X23 ; +0x17c, 0xe6600 BLR X8 ; +0x180, 0xe6604 CBNZ W0, loc_E6574 ; +0x184, 0xe6608 LDR X0, [SP,#0x50+var_48] ; +0x188, 0xe660c LDR X1, [X24,#gFMODClass@PAGEOFF] ; +0x18c, 0xe6610 ADRP X2, #aInit@PAGE; "init" ; +0x190, 0xe6614 ADRP X3, #aLandroidConten_0@PAGE; "(Landroid/content/Context;)V" ; +0x194, 0xe6618 LDR X8, [X0] ; +0x198, 0xe661c ADD X2, X2, #aInit@PAGEOFF; "init" ; +0x19c, 0xe6620 ADD X3, X3, #aLandroidConten_0@PAGEOFF; "(Landroid/content/Context;)V" ; +0x1a0, 0xe6624 LDR X8, [X8,#0x388] ; +0x1a4, 0xe6628 BLR X8 ; +0x1a8, 0xe662c CBZ X0, loc_E6574 ; +0x1ac, 0xe6630 MOV X2, X0 ; +0x1b0, 0xe6634 LDR X0, [SP,#0x50+var_48] ; +0x1b4, 0xe6638 LDR X1, [X24,#gFMODClass@PAGEOFF] ; +0x1b8, 0xe663c MOV X3, X19 ; +0x1bc, 0xe6640 BL sub_E67CC ; +0x1c0, 0xe6644 LDR X0, [SP,#0x50+var_48] ; +0x1c4, 0xe6648 MOV X1, X22 ; +0x1c8, 0xe664c LDR X8, [X0] ; +0x1cc, 0xe6650 BL sub_E68FC ; +0x1d0, 0xe6654 LDR X0, [SP,#0x50+var_48] ; +0x1d4, 0xe6658 MOV X1, X21 ; +0x1d8, 0xe665c LDR X8, [X0] ; +0x1dc, 0xe6660 BL sub_E68FC ; +0x1e0, 0xe6664 LDR X0, [SP,#0x50+var_48] ; +0x1e4, 0xe6668 MOV X1, X20 ; +0x1e8, 0xe666c LDR X8, [X0] ; +0x1ec, 0xe6670 BL sub_E68FC ; +0x1f0, 0xe6674 B loc_E64AC ; +0x1f4, 0xe6678