cの文字列とassembler

#include <stdio.h>

typedef char String[1024];

int main(void) {

    String name = "ドラゴン";
    printf("私は%sです\n", name);
    return 0;
}
|main|  PROC
|$LN3|
        stp         fp,lr,[sp,#-0x10]!
        mov         fp,sp
        bl          __security_push_cookie
        sub         sp,sp,#0x400
        add         x8,sp,#8
        str         x8,[sp]
        ldr         x9,[sp]
        adrp        x8,|$SG4982|
        add         x8,x8,|$SG4982|
        ldr         x10,[x8]
        str         x10,[x9]
        ldr         w10,[x8,#8]
        str         w10,[x9,#8]
        ldrsb       w8,[x8,#0xC]
        strb        w8,[x9,#0xC]
        add         x0,sp,#0x15
        mov         x2,#0x3F3
        mov         w1,#0
        bl          memset
        add         x1,sp,#8
        adrp        x8,|$SG4983|
        add         x0,x8,|$SG4983|
        bl          printf
        mov         w0,#0
        add         sp,sp,#0x400
        bl          __security_pop_cookie
        ldp         fp,lr,[sp],#0x10
        ret

なぜ64ビットのx10と32ビットのw8を使用しているか不明
blはサブルーチン呼び出し