# assembler directives
.set noat      # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64

.include "macros.inc"


.section .text, "ax"

# This file is handwritten.

glabel decompress
.ifdef VERSION_EU
    lw    $a3, 8($a0)
    lw    $t9, 0xc($a0)
    lw    $t8, 4($a0)
    add   $a3, $a3, $a0
    add   $t9, $t9, $a0
    move  $a2, $zero
    addi  $a0, $a0, 0x10
    add   $t8, $t8, $a1
.L8026ED80:
    bnezl $a2, .L8026ED98
     slt   $t1, $t0, $zero
    lw    $t0, ($a0)
    li    $a2, 32
    addi  $a0, $a0, 4
    slt   $t1, $t0, $zero
.L8026ED98:
    beql  $t1, $zero, .L8026EDB8
     lhu   $t2, ($a3)
    lb    $t2, ($t9)
    addi  $t9, $t9, 1
    addi  $a1, $a1, 1
    b     .L8026EDE4
     sb    $t2, -1($a1)
    lhu   $t2, ($a3)
.L8026EDB8:
    addi  $a3, $a3, 2
    srl   $t3, $t2, 0xc
    andi  $t2, $t2, 0xfff
    sub   $t1, $a1, $t2
    addi  $t3, $t3, 3
.L8026EDCC:
    lb    $t2, -1($t1)
    addi  $t3, $t3, -1
    addi  $t1, $t1, 1
    addi  $a1, $a1, 1
    bnez  $t3, .L8026EDCC
     sb    $t2, -1($a1)
.L8026EDE4:
    sll   $t0, $t0, 1
    bne   $a1, $t8, .L8026ED80
     addi  $a2, $a2, -1
    jr    $ra
     nop
.else
    lw    $t8, 4($a0)
    lw    $a3, 8($a0)
    lw    $t9, 0xc($a0)
    move  $a2, $zero
    add   $t8, $t8, $a1
    add   $a3, $a3, $a0
    add   $t9, $t9, $a0
    addi  $a0, $a0, 0x10
.L8027EF50:
    bnez  $a2, .L8027EF64
     nop
    lw    $t0, ($a0)
    li    $a2, 32
    addi  $a0, $a0, 4
.L8027EF64:
    slt   $t1, $t0, $zero
    beqz  $t1, .L8027EF88
     nop
    lb    $t2, ($t9)
    addi  $t9, $t9, 1
    sb    $t2, ($a1)
    addi  $a1, $a1, 1
    b     .L8027EFBC
     nop
.L8027EF88:
    lhu   $t2, ($a3)
    addi  $a3, $a3, 2
    srl   $t3, $t2, 0xc
    andi  $t2, $t2, 0xfff
    sub   $t1, $a1, $t2
    addi  $t3, $t3, 3
.L8027EFA0:
    lb    $t2, -1($t1)
    addi  $t3, $t3, -1
    addi  $t1, $t1, 1
    sb    $t2, ($a1)
    addi  $a1, $a1, 1
    bnez  $t3, .L8027EFA0
     nop
.L8027EFBC:
    sll   $t0, $t0, 1
    addi  $a2, $a2, -1
    bne   $a1, $t8, .L8027EF50
     nop
    jr    $ra
     nop
.endif
