memcmp32:
// (function-proc-begin 4 11 10)
        str    x30, [sp, -16]!
        mov    x1, x10
        sub    x10, x3, 16
        add    x3, x10, 48
        add    x0, x10, 40
        str    x1, [x0]
// (expr #t 1 #f (set! i size))
// (stack-ref-n 3)
        ldr    w9, [x10, 12]
// (expr #t 1 #f (set! processing 1))
        mov    w5, 1
// (stack-set-n 4)
        str    w0, [x10, 16]
// (expr #t 1 #f (set! ret 0))
// (push 0)
        mov    w0, 0
// (stack-set-n 5)
        str    w0, [x10, 20]
// w4 = mem
        ldr    w4, [x10]
// w11 = offset1
        ldr    w11, [x10, 4]
// w12 = offset2
        ldr    w12, [x10, 8]
.memcmp_l12:
// (expr #t 1 #f processing)
// (bfl l13)
        cmp    w5, 0
        beq    .memcmp_l13
// (expr #t 2 >= (>= i 0))
        cmp    w9, 0
// (bfl l14)
        blt    .memcmp_l14
// (expr #t 2 #f (set! word1 (vector-ref mem (+ i offset1))))
// (add)
        add    w0, w9, w11
// (add)
        add    w0, w4, w0
// (stack-ref)
        lsl    w0, w0, 2
        ldr    w6, [x8, x0]
// (expr #t 2 #f (set! word2 (vector-ref mem (+ i offset2))))
// (add)
        add    w0, w9, w12
// (add)
        add    w0, w4, w0
// (stack-ref)
        lsl    w0, w0, 2
        ldr    w7, [x8, x0]
// (expr #t 2 > (> word1 word2))
// (gt)
        cmp    w6, w7
// (bfl l16)
        ble    .memcmp_l16
// (expr #t 1 #f (set! processing 0))
        mov    w5, 0
// (expr #t 1 #f (set! ret (- 1)))
// (push 1)
        mov    w0, 1
// (negate)
        mov    w1, 0
        sub    w0, w1, w0
// (stack-set-n 5)
        str    w0, [x10, 20]
// (br l15)
        b      .memcmp_l15
.ltorg
.memcmp_l16:
// (expr #t 2 > (> word2 word1))
// (gt)
        cmp    w7, w6
// (bfl l18)
        ble    .memcmp_l18
// (expr #t 1 #f (set! processing 0))
        mov    w5, 0
// (expr #t 1 #f (set! ret 1))
// (push 1)
        mov    w0, 1
// (stack-set-n 5)
        str    w0, [x10, 20]
// (br l19)
        b      .memcmp_l19
.ltorg
.memcmp_l18:
// (expr #t 2 #f (set! i (- i 1)))
        sub    w9, w9, 1
.memcmp_l19:
.memcmp_l17:
// (br l12)
        b      .memcmp_l12
.ltorg
.memcmp_l14:
// (expr #t 1 #f (set! processing 0))
        mov    w5, 0
.memcmp_l15:
// (br l12)
        b      .memcmp_l12
.ltorg
.memcmp_l13:
// (expr #t 1 #f (return ret))
// (stack-ref-n 5)
        ldr    w0, [x10, 20]
// (stack-set-n 0)
        str    w0, [x10]
// (function-end 10)
        add    x3, x10, 4
        ldr    x10, [x10, 40]
// (return)
        ldr    x30, [sp], 16
        ret
.ltorg
