cの配列とassembler

#include <stdio.h>

int main(void) {

    int nums[10];
    nums[2] = 15;
    printf("%d\n", nums[2]);
    return 0;
}
|main|  PROC
|$LN3|
        stp         fp,lr,[sp,#-0x10]!
        mov         fp,sp
        bl          __security_push_cookie
        sub         sp,sp,#0x20
        mov         x8,#4
        mov         x9,#2
        mul         x9,x8,x9
        mov         x8,sp
        add         x9,x8,x9
        mov         w8,#0xF
        str         w8,[x9]
        mov         x8,#4
        mov         x9,#2
        mul         x9,x8,x9
        mov         x8,sp
        add         x8,x8,x9
        ldr         w1,[x8]
        adrp        x8,|$SG4981|
        add         x0,x8,|$SG4981|
        bl          printf
        mov         w0,#0
        add         sp,sp,#0x20
        bl          __security_pop_cookie
        ldp         fp,lr,[sp],#0x10
        ret

        ENDP  ; |main|

値を変えながらassembleしてみると、mov x8,#4のところはnum[2], [10], num[15]でも変わらないのね。mul x9, x8、x9の挙動がいまいちわからんが