.text .globl describe describe: pushq %rax movl %edi, %eax addl $-1, %eax cmpl $4, %eax ja Label5 leaq Text0, %rdi leaq JumpTable, %rcx movslq (%rcx,%rax,4), %rax addq %rcx, %rax jmpq *%rax Label2: leaq Text1, %rdi jmp Label6 Label5: leaq Text4, %rdi jmp Label6 Label3: leaq Text2, %rdi xorl %eax, %eax callq puts Label4: leaq Text3, %rdi Label6: xorl %eax, %eax callq puts popq %rax retq .section .rodata JumpTable: .long Label6-JumpTable .long Label2-JumpTable .long Label5-JumpTable .long Label3-JumpTable .long Label4-JumpTable Text0: .asciz "You're one." Text1: .asciz "You're two." Text2: .asciz "You're four." Text3: .asciz "You're four or five." Text4: .asciz "You're not 1, 2, 4 or 5!"