            segment .text
            global  main
            extern  printf, scanf
    a       equ     local1
    b       equ     local2
    main:
            push    rbp
            mov     rbp, rsp
            frame   2, 2, 3
            sub     rsp, frame_size
            segment .data
    .scanf  db      "%lf %lf",0
    .prompt db      "Enter 2 floating point numbers: ",0
            segment .text
    .loop   lea     rdi, [.prompt]
            xor     eax, eax
            call    printf
            lea     rdi, [.scanf]
            lea     rsi, [rbp+a]
            lea     rdx, [rbp+b]
            xor     eax, eax
            call    scanf
            cmp     ax, 2
            jne     .done
            movsd   xmm0, [rbp+a]
            movsd   xmm1, [rbp+b]
            ucomisd xmm0, xmm1
            jb      .b
    .bret   movsd   xmm0, [rbp+a]
            ucomisd xmm0, xmm1
            jbe     .be
    .beret  movsd   xmm0, [rbp+a]
            movsd   xmm1, [rbp+b]
            ucomisd xmm0, xmm1
            jg      .a
    .aret   movsd   xmm0, [rbp+a]
            movsd   xmm1, [rbp+b]
            ucomisd xmm0, xmm1
            jae     .ae
    .aeret  movsd   xmm0, [rbp+a]
            movsd   xmm1, [rbp+b]
            ucomisd xmm0, xmm1
            je      .e
    .eret   movsd   xmm0, [rbp+a]
            movsd   xmm1, [rbp+b]
            ucomisd xmm0, xmm1
            jne     .ne
    .neret  jmp     .loop

            segment .data
    .printb db      "%f < %f",0x0a,0
            segment .text
    .b:
            lea     rdi, [.printb]
            mov     eax, 2
            call    printf
            jmp     .bret

            segment .data
    .printbe db      "%f <= %f",0x0a,0
            segment .text
    .be:
            lea     rdi, [.printbe]
            mov     eax, 2
            call    printf
            jmp     .beret

            segment .data
    .printa db      "%f > %f",0x0a,0
            segment .text
    .a:
            lea     rdi, [.printa]
            mov     eax, 2
            call    printf
            jmp     .aret

            segment .data
    .printae db      "%f >= %f",0x0a,0
            segment .text
    .ae:
            lea     rdi, [.printae]
            mov     eax, 2
            call    printf
            jmp     .aeret

            segment .data
    .printe db      "%f == %f",0x0a,0
            segment .text
    .e:
            lea     rdi, [.printe]
            mov     eax, 2
            call    printf
            jmp     .eret

            segment .data
    .printne db      "%f != %f",0x0a,0
            segment .text
    .ne:
            lea     rdi, [.printne]
            mov     eax, 2
            call    printf
            jmp     .neret

    .done   mov     eax, 0
            leave
            ret