#name ^.Object.HellShift
#type &ffd




.hellshift
DCD hellshift0-hellshift
DCD hellshift1-hellshift
DCD hellshift2-hellshift
DCD hellshift3-hellshift

.hellshift0
STMFD R13!,{R9}
ADD R11,R11,R9
RSB R9,R9,#96
s0mac
LDMFD R13!,{R9}
SUB R11,R11,#96
s0mac
MOV PC,R14



macro s0mac {
CMP R9,#64
BLT _hsk00
LDMIA R11!,{R0-R7}
STMIA R10!,{R0-R7}
LDMIA R11!,{R0-R7}
STMIA R10!,{R0-R7}
SUB R9,R9,#64
._hsk00
CMP R9,#32
BLT _hsk01
LDMIA R11!,{R0-R7}
STMIA R10!,{R0-R7}
SUB R9,R9,#32
._hsk01
CMP R9,#16
BLT _hsk02
LDMIA R11!,{R0-R3}
STMIA R10!,{R0-R3}
SUB R9,R9,#16
._hsk02
CMP R9,#8
BLT _hsk03
LDMIA R11!,{R0-R1}
STMIA R10!,{R0-R1}
SUB R9,R9,#8
._hsk03
CMP R9,#4
LDRGE R0,[R11],#4
STRGE R0,[R10],#4
}

.hellshift1
STMFD R13!,{R9}
ADD R11,R11,R9
RSB R9,R9,#92

s1mac
LDMFD R13!,{R9}
LDR R0,[R11]
SUB R11,R11,#92
LDR R1,[R11]
MOV R0,R0,LSR #8
ORR R0,R0,R1,LSL #24
STR R0,[R10],#4
s1mac
MOV PC,R14



macro s1mac {
CMP R9,#64
BLT _hsk00
LDMIA R11!,{R0-R8}
SUB R11,R11,#4
MOV R0,R0,LSR #8
ORR R0,R0,R1,LSL #24
MOV R1,R1,LSR #8
ORR R1,R1,R2,LSL #24
MOV R2,R2,LSR #8
ORR R2,R2,R3,LSL #24
MOV R3,R3,LSR #8
ORR R3,R3,R4,LSL #24
MOV R4,R4,LSR #8
ORR R4,R4,R5,LSL #24
MOV R5,R5,LSR #8
ORR R5,R5,R6,LSL #24
MOV R6,R6,LSR #8
ORR R6,R6,R7,LSL #24
MOV R7,R7,LSR #8
ORR R7,R7,R8,LSL #24
STMIA R10!,{R0-R7}
LDMIA R11!,{R0-R8}
SUB R11,R11,#4
MOV R0,R0,LSR #8
ORR R0,R0,R1,LSL #24
MOV R1,R1,LSR #8
ORR R1,R1,R2,LSL #24
MOV R2,R2,LSR #8
ORR R2,R2,R3,LSL #24
MOV R3,R3,LSR #8
ORR R3,R3,R4,LSL #24
MOV R4,R4,LSR #8
ORR R4,R4,R5,LSL #24
MOV R5,R5,LSR #8
ORR R5,R5,R6,LSL #24
MOV R6,R6,LSR #8
ORR R6,R6,R7,LSL #24
MOV R7,R7,LSR #8
ORR R7,R7,R8,LSL #24
STMIA R10!,{R0-R7}
SUB R9,R9,#64
._hsk00
CMP R9,#32
BLT _hsk01
LDMIA R11!,{R0-R8}
SUB R11,R11,#4
MOV R0,R0,LSR #8
ORR R0,R0,R1,LSL #24
MOV R1,R1,LSR #8
ORR R1,R1,R2,LSL #24
MOV R2,R2,LSR #8
ORR R2,R2,R3,LSL #24
MOV R3,R3,LSR #8
ORR R3,R3,R4,LSL #24
MOV R4,R4,LSR #8
ORR R4,R4,R5,LSL #24
MOV R5,R5,LSR #8
ORR R5,R5,R6,LSL #24
MOV R6,R6,LSR #8
ORR R6,R6,R7,LSL #24
MOV R7,R7,LSR #8
ORR R7,R7,R8,LSL #24
STMIA R10!,{R0-R7}
SUB R9,R9,#32
._hsk01
CMP R9,#16
BLT _hsk02
LDMIA R11!,{R0-R4}
SUB R11,R11,#4
MOV R0,R0,LSR #8
ORR R0,R0,R1,LSL #24
MOV R1,R1,LSR #8
ORR R1,R1,R2,LSL #24
MOV R2,R2,LSR #8
ORR R2,R2,R3,LSL #24
MOV R3,R3,LSR #8
ORR R3,R3,R4,LSL #24
STMIA R10!,{R0-R3}
SUB R9,R9,#16
._hsk02
CMP R9,#8
BLT _hsk03
LDMIA R11!,{R0-R2}
SUB R11,R11,#4
MOV R0,R0,LSR #8
ORR R0,R0,R1,LSL #24
MOV R1,R1,LSR #8
ORR R1,R1,R2,LSL #24
STMIA R10!,{R0-R1}
SUB R9,R9,#8
._hsk03
CMP R9,#4
LDRGE R0,[R11],#4
LDRGE R1,[R11]
MOV R0,R0,LSR #8
ORR R0,R0,R1,LSL #24
STRGE R0,[R10],#4
}

.hellshift2
STMFD R13!,{R9}
ADD R11,R11,R9
RSB R9,R9,#92

s2mac
LDMFD R13!,{R9}
LDR R0,[R11]
SUB R11,R11,#92
LDR R1,[R11]
MOV R0,R0,LSR #16
ORR R0,R0,R1,LSL #16
STR R0,[R10],#4
s2mac
MOV PC,R14



macro s2mac {
CMP R9,#64
BLT _hsk00
LDMIA R11!,{R0-R8}
SUB R11,R11,#4
MOV R0,R0,LSR #16
ORR R0,R0,R1,LSL #16
MOV R1,R1,LSR #16
ORR R1,R1,R2,LSL #16
MOV R2,R2,LSR #16
ORR R2,R2,R3,LSL #16
MOV R3,R3,LSR #16
ORR R3,R3,R4,LSL #16
MOV R4,R4,LSR #16
ORR R4,R4,R5,LSL #16
MOV R5,R5,LSR #16
ORR R5,R5,R6,LSL #16
MOV R6,R6,LSR #16
ORR R6,R6,R7,LSL #16
MOV R7,R7,LSR #16
ORR R7,R7,R8,LSL #16
STMIA R10!,{R0-R7}
LDMIA R11!,{R0-R8}
SUB R11,R11,#4
MOV R0,R0,LSR #16
ORR R0,R0,R1,LSL #16
MOV R1,R1,LSR #16
ORR R1,R1,R2,LSL #16
MOV R2,R2,LSR #16
ORR R2,R2,R3,LSL #16
MOV R3,R3,LSR #16
ORR R3,R3,R4,LSL #16
MOV R4,R4,LSR #16
ORR R4,R4,R5,LSL #16
MOV R5,R5,LSR #16
ORR R5,R5,R6,LSL #16
MOV R6,R6,LSR #16
ORR R6,R6,R7,LSL #16
MOV R7,R7,LSR #16
ORR R7,R7,R8,LSL #16
STMIA R10!,{R0-R7}
SUB R9,R9,#64
._hsk00
CMP R9,#32
BLT _hsk01
LDMIA R11!,{R0-R8}
SUB R11,R11,#4
MOV R0,R0,LSR #16
ORR R0,R0,R1,LSL #16
MOV R1,R1,LSR #16
ORR R1,R1,R2,LSL #16
MOV R2,R2,LSR #16
ORR R2,R2,R3,LSL #16
MOV R3,R3,LSR #16
ORR R3,R3,R4,LSL #16
MOV R4,R4,LSR #16
ORR R4,R4,R5,LSL #16
MOV R5,R5,LSR #16
ORR R5,R5,R6,LSL #16
MOV R6,R6,LSR #16
ORR R6,R6,R7,LSL #16
MOV R7,R7,LSR #16
ORR R7,R7,R8,LSL #16
STMIA R10!,{R0-R7}
SUB R9,R9,#32
._hsk01
CMP R9,#16
BLT _hsk02
LDMIA R11!,{R0-R4}
SUB R11,R11,#4
MOV R0,R0,LSR #16
ORR R0,R0,R1,LSL #16
MOV R1,R1,LSR #16
ORR R1,R1,R2,LSL #16
MOV R2,R2,LSR #16
ORR R2,R2,R3,LSL #16
MOV R3,R3,LSR #16
ORR R3,R3,R4,LSL #16
STMIA R10!,{R0-R3}
SUB R9,R9,#16
._hsk02
CMP R9,#8
BLT _hsk03
LDMIA R11!,{R0-R2}
SUB R11,R11,#4
MOV R0,R0,LSR #16
ORR R0,R0,R1,LSL #16
MOV R1,R1,LSR #16
ORR R1,R1,R2,LSL #16
STMIA R10!,{R0-R1}
SUB R9,R9,#8
._hsk03
CMP R9,#4
LDRGE R0,[R11],#4
LDRGE R1,[R11]
MOV R0,R0,LSR #16
ORR R0,R0,R1,LSL #16
STRGE R0,[R10],#4
}

.hellshift3
STMFD R13!,{R9}
ADD R11,R11,R9
RSB R9,R9,#92

s3mac
LDMFD R13!,{R9}
LDR R0,[R11]
SUB R11,R11,#92
LDR R1,[R11]
MOV R0,R0,LSR #24
ORR R0,R0,R1,LSL #8
STR R0,[R10],#4
s3mac
MOV PC,R14



macro s3mac {
CMP R9,#64
BLT _hsk00
LDMIA R11!,{R0-R8}
SUB R11,R11,#4
MOV R0,R0,LSR #24
ORR R0,R0,R1,LSL #8
MOV R1,R1,LSR #24
ORR R1,R1,R2,LSL #8
MOV R2,R2,LSR #24
ORR R2,R2,R3,LSL #8
MOV R3,R3,LSR #24
ORR R3,R3,R4,LSL #8
MOV R4,R4,LSR #24
ORR R4,R4,R5,LSL #8
MOV R5,R5,LSR #24
ORR R5,R5,R6,LSL #8
MOV R6,R6,LSR #24
ORR R6,R6,R7,LSL #8
MOV R7,R7,LSR #24
ORR R7,R7,R8,LSL #8
STMIA R10!,{R0-R7}
LDMIA R11!,{R0-R8}
SUB R11,R11,#4
MOV R0,R0,LSR #24
ORR R0,R0,R1,LSL #8
MOV R1,R1,LSR #24
ORR R1,R1,R2,LSL #8
MOV R2,R2,LSR #24
ORR R2,R2,R3,LSL #8
MOV R3,R3,LSR #24
ORR R3,R3,R4,LSL #8
MOV R4,R4,LSR #24
ORR R4,R4,R5,LSL #8
MOV R5,R5,LSR #24
ORR R5,R5,R6,LSL #8
MOV R6,R6,LSR #24
ORR R6,R6,R7,LSL #8
MOV R7,R7,LSR #24
ORR R7,R7,R8,LSL #8
STMIA R10!,{R0-R7}
SUB R9,R9,#64
._hsk00
CMP R9,#32
BLT _hsk01
LDMIA R11!,{R0-R8}
SUB R11,R11,#4
MOV R0,R0,LSR #24
ORR R0,R0,R1,LSL #8
MOV R1,R1,LSR #24
ORR R1,R1,R2,LSL #8
MOV R2,R2,LSR #24
ORR R2,R2,R3,LSL #8
MOV R3,R3,LSR #24
ORR R3,R3,R4,LSL #8
MOV R4,R4,LSR #24
ORR R4,R4,R5,LSL #8
MOV R5,R5,LSR #24
ORR R5,R5,R6,LSL #8
MOV R6,R6,LSR #24
ORR R6,R6,R7,LSL #8
MOV R7,R7,LSR #24
ORR R7,R7,R8,LSL #8
STMIA R10!,{R0-R7}
SUB R9,R9,#32
._hsk01
CMP R9,#16
BLT _hsk02
LDMIA R11!,{R0-R4}
SUB R11,R11,#4
MOV R0,R0,LSR #24
ORR R0,R0,R1,LSL #8
MOV R1,R1,LSR #24
ORR R1,R1,R2,LSL #8
MOV R2,R2,LSR #24
ORR R2,R2,R3,LSL #8
MOV R3,R3,LSR #24
ORR R3,R3,R4,LSL #8
STMIA R10!,{R0-R3}
SUB R9,R9,#16
._hsk02
CMP R9,#8
BLT _hsk03
LDMIA R11!,{R0-R2}
SUB R11,R11,#4
MOV R0,R0,LSR #24
ORR R0,R0,R1,LSL #8
MOV R1,R1,LSR #24
ORR R1,R1,R2,LSL #8
STMIA R10!,{R0-R1}
SUB R9,R9,#8
._hsk03
CMP R9,#4
LDRGE R0,[R11],#4
LDRGE R1,[R11]
MOV R0,R0,LSR #24
ORR R0,R0,R1,LSL #8
STRGE R0,[R10],#4
}
