.text .global initSystem .type initSystem, %function initSystem: stp x29, x30, [sp, #-16]! adr x1, __nx_binarybase str x0, [x1] bl __libnx_init bl __appInit bl __nx_libc_init_array ldp x29, x30, [sp], #16 ret .global __nx_exit .type __nx_exit, %function __nx_exit: bl __nx_libc_fini_array bl __appExit b __libnx_exit __nx_libc_init_array: stp x29, x30, [sp, #-16]! stp x21, x22, [sp, #-16]! stp x19, x20, [sp, #-16]! adr x3, __nx_binarybase ldr x20, [x3] ldr x0, =__preinit_array_start ldr x1, =__preinit_array_end sub x1, x1, x0 add x21, x0, x20 lsr x19, x1, #3 cbz x19, __nx_libc_init_array_end0 __nx_libc_init_array_lp0: ldr x3, [x21], #8 sub x19, x19, #1 add x3, x3, x20 blr x3 cbnz x19, __nx_libc_init_array_lp0 __nx_libc_init_array_end0: bl _init ldr x0, =__init_array_start ldr x1, =__init_array_end sub x1, x1, x0 add x21, x0, x20 lsr x19, x1, #3 cbz x19, __nx_libc_init_array_end1 __nx_libc_init_array_lp1: ldr x3, [x21], #8 sub x19, x19, #1 add x3, x3, x20 blr x3 cbnz x19, __nx_libc_init_array_lp1 __nx_libc_init_array_end1: ldp x19, x20, [sp], #16 ldp x21, x22, [sp], #16 ldp x29, x30, [sp], #16 ret __nx_libc_fini_array: stp x29, x30, [sp, #-16]! stp x21, x22, [sp, #-16]! stp x19, x20, [sp, #-16]! adr x3, __nx_binarybase ldr x20, [x3] ldr x0, =__fini_array_start ldr x1, =__fini_array_end sub x1, x1, x0 add x21, x0, x20 lsr x19, x1, #3 cbz x19, __nx_libc_fini_array_end __nx_libc_fini_array_lp: sub x19, x19, #1 ldr x3, [x21, x19, lsl #3] add x3, x3, x20 blr x3 cbnz x19, __nx_libc_fini_array_lp __nx_libc_fini_array_end: ldp x19, x20, [sp], #16 ldp x21, x22, [sp], #16 ldp x29, x30, [sp], #16 ret .data __nx_binarybase: .dword 0