; ; FMOD_OS_Thread_Create from 0xe6e6c to 0xe6f9c (304 bytes) ; ; 4 xrefs: ; > .FMOD_OS_Thread_Create @ 0x109b0c ; > @ 0x16a8 ; > .FMOD_OS_Thread_Create @ 0x109b04 ; > @ 0x111648 ; ; 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, #0x90 ; +0x0, 0xe6e6c STP X20, X19, [SP,#0x80+var_10] ; +0x4, 0xe6e70 MOV X20, X0 ; +0x8, 0xe6e74 ADD X0, SP, #0x80+attr; attr ; +0xc, 0xe6e78 STR X25, [SP,#0x80+var_40] ; +0x10, 0xe6e7c STP X24, X23, [SP,#0x80+var_30] ; +0x14, 0xe6e80 STP X22, X21, [SP,#0x80+var_20] ; +0x18, 0xe6e84 STP X29, X30, [SP,#0x80+var_s0] ; +0x1c, 0xe6e88 ADD X29, SP, #0x80 ; +0x20, 0xe6e8c MOV X19, X6 ; +0x24, 0xe6e90 MOV W24, W5 ; +0x28, 0xe6e94 MOV W23, W4 ; +0x2c, 0xe6e98 MOV X25, X3 ; +0x30, 0xe6e9c MOV X21, X2 ; +0x34, 0xe6ea0 MOV X22, X1 ; +0x38, 0xe6ea4 BL .pthread_attr_init ; +0x3c, 0xe6ea8 CBNZ W0, loc_E6EFC ; +0x40, 0xe6eac ADD X0, SP, #0x80+attr; attr ; +0x44, 0xe6eb0 MOV W1, #1; detachstate ; +0x48, 0xe6eb4 BL .pthread_attr_setdetachstate ; +0x4c, 0xe6eb8 CBNZ W0, loc_E6EFC ; +0x50, 0xe6ebc MOV W8, #0x8007 ; +0x54, 0xe6ec0 ADD W8, W23, W8 ; +0x58, 0xe6ec4 CMP W8, #5 ; +0x5c, 0xe6ec8 B.HI loc_E6EDC ; +0x60, 0xe6ecc ADRL X9, unk_4E7EC ; +0x64, 0xe6ed0 LDR W23, [X9,W8,SXTW#2] ; +0x6c, 0xe6ed8 MOV X8, #0xBFFFFFFFFFFFFFFF ; +0x70, 0xe6edc ADD X8, X25, X8 ; +0x74, 0xe6ee0 CMP X8, #3 ; +0x78, 0xe6ee4 ADD W1, W24, #8,LSL#12; stacksize ; +0x7c, 0xe6ee8 ADD X0, SP, #0x80+attr; attr ; +0x80, 0xe6eec CSEL X25, XZR, X25, CC ; +0x84, 0xe6ef0 BL .pthread_attr_setstacksize ; +0x88, 0xe6ef4 CBZ W0, loc_E6F1C ; +0x8c, 0xe6ef8 MOV W0, #0x1C ; +0x90, 0xe6efc LDP X29, X30, [SP,#0x80+var_s0] ; +0x94, 0xe6f00 LDP X20, X19, [SP,#0x80+var_10] ; +0x98, 0xe6f04 LDP X22, X21, [SP,#0x80+var_20] ; +0x9c, 0xe6f08 LDP X24, X23, [SP,#0x80+var_30] ; +0xa0, 0xe6f0c LDR X25, [SP,#0x80+var_40] ; +0xa4, 0xe6f10 ADD SP, SP, #0x90 ; +0xa8, 0xe6f14 RET ; +0xac, 0xe6f18 BL sub_E7334 ; +0xb0, 0xe6f1c MOV W1, #0x120 ; +0xb4, 0xe6f20 LDR X8, [X8] ; +0xb8, 0xe6f24 MOV W3, #0x1E3 ; +0xbc, 0xe6f28 MOV W4, WZR ; +0xc0, 0xe6f2c LDR X0, [X8,#0x1B0] ; +0xc4, 0xe6f30 BL sub_E2AC4 ; +0xc8, 0xe6f34 CBZ X0, loc_E6F94 ; +0xcc, 0xe6f38 MOV X24, X0 ; +0xd0, 0xe6f3c STR W23, [X0,#8] ; +0xd4, 0xe6f40 STR X25, [X0,#0x118] ; +0xd8, 0xe6f44 STR X22, [X0] ; +0xdc, 0xe6f48 STR X21, [X0,#0x10] ; +0xe0, 0xe6f4c ADD X0, X0, #0x18 ; +0xe4, 0xe6f50 MOV W2, #0x100 ; +0xe8, 0xe6f54 MOV X1, X20 ; +0xec, 0xe6f58 BL sub_E3C94 ; +0xf0, 0xe6f5c ADRL X2, sub_E6D38; start_routine ; +0xf4, 0xe6f60 SUB X0, X29, #-newthread; newthread ; +0xfc, 0xe6f68 ADD X1, SP, #0x80+attr; attr ; +0x100, 0xe6f6c MOV X3, X24; arg ; +0x104, 0xe6f70 BL .pthread_create ; +0x108, 0xe6f74 CBNZ W0, loc_E6EFC ; +0x10c, 0xe6f78 ADD X0, SP, #0x80+attr; attr ; +0x110, 0xe6f7c BL .pthread_attr_destroy ; +0x114, 0xe6f80 CBNZ W0, loc_E6EFC ; +0x118, 0xe6f84 LDUR X8, [X29,#newthread] ; +0x11c, 0xe6f88 STR X8, [X19] ; +0x120, 0xe6f8c B loc_E6F00 ; +0x124, 0xe6f90 MOV W0, #0x26 ; '&' ; +0x128, 0xe6f94 B loc_E6F00 ; +0x12c, 0xe6f98