segment .data
switch: dq      main.case0
        dq      main.case1
        dq      main.case2
        dq      main.case3

i:      dq      2

        segment .text
        global  main
        extern  scanf, scanf
        extern  printf
main:
        push    rbp
        mov     rbp, rsp
        sub     rsp, 16
        mov     rax, [i]
        lea     rdx, [switch]
        jmp     [rdx+rax*8]
.case0:
        mov     rbx, 100
        jmp     .end
.case1:
        mov     rbx, 101
        jmp     .end
.case2:
        mov     rbx, 102
        jmp     .end
.case3:
        mov     rbx, 103
        jmp     .end
.end:
        xor     eax, eax
        leave
        ret