.file 1 "rmd160_test.c" .set nobopt .text .align 2 .globl saus .ent saus saus: .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 .mask 0x00000000,0 .fmask 0x00000000,0 li $2,-2147483648 # 0xffffffff80000000 sll $4,$4,24 sra $4,$4,24 ori $5,$2,0x4 ori $3,$2,0x8 $L2: lbu $2,0($3) andi $2,$2,0x2 bne $2,$0,$L2 sb $4,0($5) j $31 .end saus .align 2 .globl sputs .ent sputs sputs: .frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0 .mask 0x80030000,-8 .fmask 0x00000000,0 addiu $sp,$sp,-32 sw $17,20($sp) sw $16,16($sp) sw $31,24($sp) move $16,$4 lb $4,0($4) .set noreorder .set nomacro j $L11 move $17,$16 .set macro .set reorder $L12: .set noreorder .set nomacro jal saus addiu $16,$16,1 .set macro .set reorder lb $4,0($16) $L11: .set noreorder .set nomacro bne $4,$0,$L12 subu $2,$16,$17 .set macro .set reorder lw $31,24($sp) lw $17,20($sp) lw $16,16($sp) .set noreorder .set nomacro j $31 addiu $sp,$sp,32 .set macro .set reorder .end sputs .align 2 .globl print_byte .ent print_byte print_byte: .frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0 .mask 0x80030000,-8 .fmask 0x00000000,0 addiu $sp,$sp,-32 sw $16,16($sp) sll $16,$4,24 sw $17,20($sp) sw $31,24($sp) sra $16,$16,24 li $17,1 # 0x1 sra $2,$16,4 $L22: andi $5,$2,0xf sll $2,$16,4 sll $16,$2,24 sltu $3,$5,10 addiu $17,$17,-1 sra $16,$16,24 .set noreorder .set nomacro bne $3,$0,$L18 addiu $4,$5,48 .set macro .set reorder addiu $4,$5,55 $L18: jal saus .set noreorder .set nomacro bgez $17,$L22 sra $2,$16,4 .set macro .set reorder lw $31,24($sp) lw $17,20($sp) lw $16,16($sp) .set noreorder .set nomacro j $31 addiu $sp,$sp,32 .set macro .set reorder .end print_byte .align 2 .globl print_word .ent print_word print_word: .frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0 .mask 0x80030000,-8 .fmask 0x00000000,0 addiu $sp,$sp,-32 sw $17,20($sp) sw $16,16($sp) sw $31,24($sp) move $16,$4 li $17,3 # 0x3 $L27: sra $4,$16,24 .set noreorder .set nomacro jal print_byte addiu $17,$17,-1 .set macro .set reorder .set noreorder .set nomacro bgez $17,$L27 sll $16,$16,8 .set macro .set reorder lw $31,24($sp) lw $17,20($sp) lw $16,16($sp) .set noreorder .set nomacro j $31 addiu $sp,$sp,32 .set macro .set reorder .end print_word .lcomm hashcode.0,20 .align 2 .globl RMD .ent RMD RMD: .frame $sp,128,$31 # vars= 88, regs= 6/0, args= 16, gp= 0 .mask 0x801f0000,-4 .fmask 0x00000000,0 addiu $sp,$sp,-128 sw $16,104($sp) move $16,$4 addiu $4,$sp,16 sw $31,124($sp) sw $20,120($sp) sw $18,112($sp) sw $17,108($sp) .set noreorder .set nomacro jal MDinit sw $19,116($sp) .set macro .set reorder .set noreorder .set nomacro jal strlen move $4,$16 .set macro .set reorder move $18,$2 sltu $2,$2,64 move $17,$18 .set noreorder .set nomacro bne $2,$0,$L44 addiu $20,$sp,16 .set macro .set reorder addiu $19,$sp,40 addiu $5,$20,24 $L50: li $11,15 # 0xf $L37: lbu $2,3($16) lbu $3,2($16) lbu $4,1($16) sll $3,$3,16 sll $2,$2,24 or $2,$2,$3 sll $4,$4,8 lbu $3,0($16) or $2,$2,$4 or $2,$2,$3 addiu $11,$11,-1 sw $2,0($5) addiu $16,$16,4 .set noreorder .set nomacro bgez $11,$L37 addiu $5,$5,4 .set macro .set reorder addiu $17,$17,-64 addiu $4,$sp,16 .set noreorder .set nomacro jal compress move $5,$19 .set macro .set reorder sltu $2,$17,64 .set noreorder .set nomacro beq $2,$0,$L50 addiu $5,$20,24 .set macro .set reorder $L44: move $5,$16 move $6,$18 addiu $4,$sp,16 .set noreorder .set nomacro jal MDfinish move $7,$0 .set macro .set reorder move $11,$0 la $15,hashcode.0 la $13,hashcode.0+1 la $14,hashcode.0+2 la $12,hashcode.0+3 $L42: srl $2,$11,2 sll $2,$2,2 addu $2,$2,$20 lw $3,0($2) addu $7,$11,$15 addu $8,$11,$13 addu $9,$11,$14 addu $10,$11,$12 addiu $11,$11,4 srl $6,$3,24 srl $2,$3,8 srl $4,$3,16 sltu $5,$11,20 sb $3,0($7) sb $2,0($8) sb $4,0($9) .set noreorder .set nomacro bne $5,$0,$L42 sb $6,0($10) .set macro .set reorder lw $31,124($sp) lw $20,120($sp) lw $19,116($sp) lw $18,112($sp) lw $17,108($sp) lw $16,104($sp) la $2,hashcode.0 .set noreorder .set nomacro j $31 addiu $sp,$sp,128 .set macro .set reorder .end RMD .section .rodata.str1.4,"aMS",@progbits,1 .align 2 $LC0: .ascii "\r\n\000" .align 2 $LC1: .ascii "* message: \000" .align 2 $LC2: .ascii " hashcode: \000" .text .align 2 .globl RMDstring .ent RMDstring RMDstring: .frame $sp,40,$31 # vars= 8, regs= 3/0, args= 16, gp= 0 .mask 0x80030000,-8 .fmask 0x00000000,0 lbu $3,$LC0+2 lhu $2,$LC0 addiu $sp,$sp,-40 sw $31,32($sp) sb $3,18($sp) sw $17,28($sp) sw $16,24($sp) sh $2,16($sp) .set noreorder .set nomacro jal RMD move $16,$5 .set macro .set reorder addiu $4,$sp,16 .set noreorder .set nomacro jal sputs move $17,$2 .set macro .set reorder la $4,$LC1 jal sputs .set noreorder .set nomacro jal sputs move $4,$16 .set macro .set reorder .set noreorder .set nomacro jal sputs addiu $4,$sp,16 .set macro .set reorder la $4,$LC2 .set noreorder .set nomacro jal sputs move $16,$0 .set macro .set reorder addu $2,$17,$16 $L58: lb $4,0($2) .set noreorder .set nomacro jal print_byte addiu $16,$16,1 .set macro .set reorder sltu $2,$16,20 .set noreorder .set nomacro bne $2,$0,$L58 addu $2,$17,$16 .set macro .set reorder .set noreorder .set nomacro jal sputs addiu $4,$sp,16 .set macro .set reorder lw $31,32($sp) lw $17,28($sp) lw $16,24($sp) .set noreorder .set nomacro j $31 addiu $sp,$sp,40 .set macro .set reorder .end RMDstring .rdata .align 2 $LC3: .byte -1 .byte 35 .byte -100 .byte -42 .byte 89 .byte -118 .byte 121 .byte 46 .byte -89 .byte -85 .byte 108 .byte -8 .byte 117 .byte -74 .byte 53 .byte 94 .byte 93 .byte -128 .byte 106 .byte 54 .section .rodata.str1.4 .align 2 $LC4: .ascii "MIPS R3000 CPU\000" .align 2 $LC5: .ascii "Failed\r\n\000" .text .align 2 .globl main .ent main main: .frame $sp,88,$31 # vars= 48, regs= 5/0, args= 16, gp= 0 .mask 0x800f0000,-8 .fmask 0x00000000,0 lwl $2,$LC3+3 lwl $3,$LC3+7 lwr $2,$LC3 lwr $3,$LC3+4 lwl $4,$LC3+11 lwl $5,$LC3+15 lwl $6,$LC3+19 addiu $sp,$sp,-88 lwr $4,$LC3+8 lwr $5,$LC3+12 lwr $6,$LC3+16 sw $2,16($sp) sw $3,20($sp) lw $2,$LC4 lw $3,$LC4+4 sw $19,76($sp) sw $18,72($sp) sw $17,68($sp) sw $4,24($sp) sw $5,28($sp) sw $2,40($sp) sw $31,80($sp) sw $16,64($sp) sw $6,32($sp) sw $3,44($sp) lw $2,$LC4+8 lhu $3,$LC4+12 sw $2,48($sp) lbu $2,$LC4+14 sh $3,52($sp) sb $2,54($sp) lbu $3,$LC0+2 lhu $2,$LC0 li $4,-2147483648 # 0xffffffff80000000 sh $2,56($sp) sb $3,58($sp) ori $5,$4,0x9 li $2,53 ori $4,$4,0x8 li $3,85 sb $2,0($5) move $18,$0 sb $3,0($4) addiu $19,$sp,56 addiu $17,$sp,40 $L60: .set noreorder .set nomacro jal print_word move $4,$18 .set macro .set reorder .set noreorder .set nomacro jal sputs move $4,$19 .set macro .set reorder addiu $18,$18,1 .set noreorder .set nomacro j $L66 li $16,32249 # 0x7df9 .set macro .set reorder $L64: .set noreorder .set nomacro bltz $16,$L70 move $4,$17 .set macro .set reorder $L66: .set noreorder .set nomacro jal RMD move $4,$17 .set macro .set reorder move $4,$2 addiu $5,$sp,16 .set noreorder .set nomacro jal memcmp li $6,20 # 0x14 .set macro .set reorder la $4,$LC5 .set noreorder .set nomacro beq $2,$0,$L64 addiu $16,$16,-1 .set macro .set reorder jal sputs .set noreorder .set nomacro bgez $16,$L66 move $4,$17 .set macro .set reorder $L70: .set noreorder .set nomacro jal RMDstring move $5,$17 .set macro .set reorder j $L60 .end main