    .data
array: .word 0x9342DC99,0x4F696186,0x1C85D9EE,0x7A0B6710,0x37CA911D,0x5EF87A2B,0xB7E01DD9,0x47EF58E8
       .word 0x20CB53C9,0x79A74EAB,0x06F8E483,0x6D26753D,0x126C0B47,0x70F313AF,0x035F1EF5,0x745232A4
       .word 0xE8D095FD,0x46036BDD,0x9B5A43EA,0x4DE3F1D8,0x102EABBA,0x5279659D,0x49E29089,0x4496CDA9
       .word 0x09B7D04A,0x6D594E20,0x55905DE5,0x4CE57C0D,0x78A1848B,0x4115A0AC,0x48B3BDA6,0x5051DAA6
       .word 0xE11593C0,0x71C3730C,0x68370FC5,0x425A9FAE,0x85354426,0x6B265F84,0x9C713D01,0x4E935A84
       .word 0x8E5170D7,0x77311058,0x3803A780,0x5B133F18,0x525C362C,0x49A52D37,0x49D8A123,0x4A0C150C
       .word 0xA41FB066,0x7962EC77,0xF3417D04,0x5D3A087A,0x31DC3B2E,0x7076F960,0x05D02FDD,0x404EC3D1
       .word 0x189A7A8B,0x5484F578,0x19037E03,0x65EA86F8,0xAE35B27A,0x4367E6F2,0x9394DB43,0x63C1CF86
       .word 0x269E583C,0x59421109,0x9C8598EF,0x6B9F1B52,0x129AF1BD,0x4C877DCC,0xF56D884F,0x58401EDB
       .word 0xE3F8BFCF,0x754C5475,0x11111111,0x11111111,0xF3FAE203,0x786213BF,0x23F8D4B5,0x53F6C772
       .word 0x4815DFBF,0x5304A0C7,0xB7E84DED,0x701BFCF2,0x1BA476AD,0x72C3DEDE,0x1C0A436C,0x557C0537
       .word 0xBAEBBBB3,0x741CECCD,0xE5C72202,0x577156E9,0xF6E59822,0x641D1FEF,0x45E6AFC6,0x623B6D2C
       .word 0x37A754F0,0x6976994C,0x6963A020,0x4CE48C6E,0xCF3CD3AC,0x4EDDBCD1,0xC1AE08E4,0x706AAA8F
       .word 0x8E4ACB59,0x674DE62D,0x83AF7749,0x791423B5,0x08F70D0A,0x45890096,0x3430F238,0x55159D9A
       .word 0xE3048518,0x70BD250B,0x8C603831,0x6D1B6012,0x0E29CEE8,0x5397AB7F,0x374A9A97,0x58EF0102
       .word 0x94D1E2D1,0x625D9DBD,0x7165FDF6,0x5E843943,0x37353266,0x4F621F3A,0x1149F170,0x426B3ACC
       .word 0x7FA3F476,0x59D789FA,0xD30D6D4B,0x4C4353E0,0xA02F0B1C,0x492F120F,0xA97CFF59,0x720DFD78
       .word 0x14551D39,0x5BC2140E,0x9D4656B9,0x68718C03,0xFFFFFFFF,0x7FFFFFFF,0xCBC9A739,0x48F63330
       .word 0xFD5F8C20,0x6E47955A,0xD10F9D2A,0x44972B6A,0xCA1151A1,0x46578121,0x7672B320,0x46281A1E
       .word 0x3E05BD98,0x4094CC80,0x7812A363,0x5FF5B63C,0x7F7612C5,0x6AF41E21,0xB1E208AC,0x4B7B4452
       .word 0xFA5E72E4,0x750F8A67,0x9B5E8AD1,0x51C8ECF2,0x3D81B486,0x58055035,0xF3970ABF,0x668CD4C5
       .word 0xA16715AD,0x480BEE00,0x9EE02467,0x4888D5AC,0x62669040,0x77C3DDBA,0x7F706867,0x48D55CDF
       .word 0x1FE6E445,0x72067034,0x191C2CC9,0x6CAE4383,0xD0270344,0x4F9E28BA,0x8A8A3979,0x46DAD432
       .word 0x98729716,0x55B7AEB5,0xC5FF97C5,0x76D0F139,0x9C2DC380,0x4B876EB3,0xD91E6FDF,0x781ADC2A
       .word 0xF4AA0625,0x53BDEAF8,0xB9A73772,0x624D7EA5,0xA787850D,0x75A02137,0xC33A32E6,0x4259BDE1

len:   .word 50

# The text section contains the instructions that the CPU runs.
    .text
# Make _start visible as the point where the program begins.
    .global _start
_start:
    # Set i = 4  (byte offset for second element when using 4-byte words)
    li x5,4              # x5 = i
    la x30,len           # load address of len
    lw x6,0(x30)         # x6 = len (count of elements)
    slli x6,x6,2         # x6 = len*4 (bytes)

for_loop:
    slt x7,x5,x6         # x7 = (i < len*4)
    beqz x7,out          # if !(i < len*4) goto out
    mv x28,x5            # x28 = j = i
    la x31,array
    add x31,x31,x5       # address of array[i]
    lw x29,0(x31)        # x29 = B = a[i]

loop:
    slt x7,x0,x28        # x7 = (j > 0)
    beqz x7,over         # if j==0 goto over
    addi x30,x28,-4      # x30 = j-4 (j-1 element offset)
    la x31,array
    add x31,x31,x30      # address of array[j-1]
    lw x31,0(x31)        # x31 = a[j-1]
    slt x7,x31,x29       # x7 = (a[j-1] < B)
    beqz x7,over         # if !(a[j-1] < B) goto over
    # a[j] = a[j-1]
    la x7,array
    add x7,x7,x28        # address of array[j]
    sw x31,0(x7)
    mv x28,x30           # j = j-4
    j loop

over:
    la x31,array
    add x31,x31,x28      # address of array[j]
    sw x29,0(x31)        # a[j] = B
    addi x5,x5,4         # i += 4
    j for_loop

out:
    # Exit via ecall (Linux convention): x17=93 (exit), x10=0
    li x10,0
    li x17,93
    ecall
