#
# $Log: crunch_noload_c64.ppc.s,v $
# Revision 1.2  1998/06/14 10:30:39  friedbait
# 'Log' keyword added.
#
#
# GNU C++ 2.7.2
# -O6 -fdefer-pop -fomit-frame-pointer -fcse-follow-jumps -fcse-skip-blocks
# -fexpensive-optimizations -fthread-jumps -fstrength-reduce -funroll-loops
# -fpeephole -fforce-mem -ffunction-cse -finline-functions -finline
# -fcaller-saves -fpcc-struct-return -frerun-cse-after-loop -fschedule-insns
# -fschedule-insns2 -fcommon -fgnu-linker -Wunused -Wswitch -mpowerpc
# -mnew-mnemonics
	.file	"crunch-ppc.cpp"
gcc2_compiled.:
	.section	".text"
	.align 2
	.globl crunch_noload_c64
	.type	 crunch_noload_c64,@function
	.long 0x4008
crunch_noload_c64:
	
# offsets into the RC5UnitWork structure
.set plain_hi,0     # plaintext, already mixed with IV
.set plain_lo,4
.set cypher_hi,8    # target cyphertext
.set cypher_lo,12
.set L0_hi,16       # key, changes with every unit * PIPELINE_COUNT
.set L0_lo,20
# register name aliases
.set SP, r1
.set r0, 0
.set r1, 1
.set r2, 2
.set r3, 3
.set r4, 4
.set r5, 5
.set r6, 6
.set r7, 7
.set r8, 8
.set r9, 9
.set r10, 10
.set r11, 11
.set r12, 12
.set r13, 13
.set r14, 14
.set r15, 15
.set r16, 16
.set r17, 17
.set r18, 18
.set r19, 19
.set r20, 20
.set r21, 21
.set r22, 22
.set r23, 23
.set r24, 24
.set r25, 25
.set r26, 26
.set r27, 27
.set r28, 28
.set r29, 29
.set r30, 30
.set r31, 31
	stmw     r13,-76(SP)
	stw      r3,24(SP)	
	stw      r4,28(SP)	
	stw      r4,-148(SP)	
	lwz      r0,20(r3)
	stw      r0,-108(SP)
	lwz      r16,16(r3)
	lwz      r0,4(r3)
	stw      r0,-116(SP)
	lwz      r0,0(r3)
	stw      r0,-120(SP)
	lwz      r0,12(r3)
	stw      r0,-124(SP)
	lwz      r0,8(r3)
	stw      r0,-128(SP)
	b        label5
label1:
	srwi     r0,r16,24
	subfic   r0,r0,256
	cmplw    r0,r4
	ble+     label2
	mr       r0,r4
label2:
	lis      r3,-18463
	addi     r3,r3,20835
	sub      r4,r4,r0
	stw      r4,28(SP)
	mtctr    r0
	lwz      r0,-108(SP)
	rotlwi   r5,r3,3
	stw      r5,-136(SP)
	add      r3,r0,r5
	addis    r0,r5,22041
	rotlw    r6,r3,r5
	add      r3,r0,r6
	stw      r6,-140(SP)
	subi     r0,r3,13540
	rotlwi   r14,r0,3
	add      r3,r14,r6
	stw      r14,-144(SP)
	add      r0,r16,r3
	rotlw    r7,r0,r3
label3:
	lis      r3,-2992	
	lis      r5,-25033
	addi     r3,r3,17621
	add      r0,r14,r7
	add      r0,r3,r0
	addi     r5,r5,31161
	rotlwi   r13,r0,3
	add      r3,r3,r5
	add      r8,r13,r7
	add      r0,r6,r8
	rotlw    r6,r0,r8
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r13,r0
	rotlwi   r8,r0,3
	add      r9,r8,r6
	add      r0,r7,r9
	rotlw    r7,r0,r9
	add      r0,r3,r7
	add      r3,r3,r5
	add      r0,r8,r0
	rotlwi   r9,r0,3
	add      r10,r9,r7
	add      r0,r6,r10
	rotlw    r6,r0,r10
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r9,r0
	rotlwi   r10,r0,3
	add      r11,r10,r6
	add      r0,r7,r11
	rotlw    r7,r0,r11
	add      r0,r3,r7
	add      r3,r3,r5
	add      r0,r10,r0
	rotlwi   r11,r0,3
	add      r12,r11,r7
	add      r0,r6,r12
	rotlw    r6,r0,r12
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r11,r0
	rotlwi   r12,r0,3
	add      r15,r12,r6
	add      r0,r7,r15
	rotlw    r7,r0,r15
	add      r0,r3,r7
	add      r3,r3,r5
	add      r0,r12,r0
	rotlwi   r31,r0,3
	add      r15,r31,r7
	add      r0,r6,r15
	rotlw    r6,r0,r15
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r31,r0
	rotlwi   r30,r0,3
	add      r15,r30,r6
	add      r0,r7,r15
	rotlw    r7,r0,r15
	add      r0,r3,r7
	add      r3,r3,r5
	add      r0,r30,r0
	rotlwi   r29,r0,3
	add      r15,r29,r7
	add      r0,r6,r15
	rotlw    r6,r0,r15
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r29,r0
	rotlwi   r28,r0,3
	add      r15,r28,r6
	add      r0,r7,r15
	rotlw    r7,r0,r15
	add      r0,r3,r7
	add      r3,r3,r5
	add      r0,r28,r0
	rotlwi   r27,r0,3
	add      r15,r27,r7
	add      r0,r6,r15
	rotlw    r6,r0,r15
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r27,r0
	rotlwi   r26,r0,3
	add      r15,r26,r6
	add      r0,r7,r15
	rotlw    r7,r0,r15
	add      r0,r3,r7
	add      r0,r26,r0
	rotlwi   r25,r0,3
	add      r15,r25,r7
	add      r3,r3,r5
	add      r0,r6,r15
	rotlw    r6,r0,r15
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r25,r0
	rotlwi   r24,r0,3
	add      r15,r24,r6
	add      r0,r7,r15
	rotlw    r7,r0,r15
	add      r0,r3,r7
	add      r3,r3,r5
	add      r0,r24,r0
	rotlwi   r23,r0,3
	add      r15,r23,r7
	add      r0,r6,r15
	rotlw    r6,r0,r15
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r23,r0
	rotlwi   r22,r0,3
	add      r15,r22,r6
	add      r0,r7,r15
	rotlw    r7,r0,r15
	add      r0,r3,r7
	add      r3,r3,r5
	add      r0,r22,r0
	rotlwi   r21,r0,3
	add      r15,r21,r7
	add      r0,r6,r15
	rotlw    r6,r0,r15
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r21,r0
	rotlwi   r20,r0,3
	add      r15,r20,r6
	add      r0,r7,r15
	rotlw    r7,r0,r15
	add      r0,r3,r7
	add      r3,r3,r5
	add      r0,r20,r0
	rotlwi   r19,r0,3
	add      r15,r19,r7
	add      r0,r6,r15
	rotlw    r6,r0,r15
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r19,r0
	rotlwi   r18,r0,3
	add      r15,r18,r6
	add      r0,r7,r15
	rotlw    r7,r0,r15
	add      r0,r3,r7
	add      r3,r3,r5
	add      r0,r18,r0
	rotlwi   r17,r0,3
	add      r0,r17,r7
	add      r6,r6,r0
	rotlw    r6,r6,r0
	add      r0,r3,r6
	add      r3,r3,r5
	add      r0,r17,r0
	rotlwi   r16,r0,3
	add      r0,r16,r6
	add      r7,r7,r0
	rotlw    r7,r7,r0
	add      r0,r3,r7
	add      r3,r3,r5
	add      r0,r16,r0
	rotlwi   r15,r0,3
	add      r0,r15,r7
	add      r5,r6,r0
	rotlw    r6,r5,r0
	add      r0,r3,r6
	add      r0,r15,r0
	rotlwi   r4,r0,3
	add      r0,r4,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	lwz      r0,-136(SP)
	add      r3,r4,r7
	add      r0,r0,r3
	rotlwi   r5,r0,3
	add      r0,r5,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r5,r6
	add      r0,r14,r0
	rotlwi   r14,r0,3
	add      r0,r14,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r14,r7
	add      r0,r13,r0
	rotlwi   r13,r0,3
	add      r0,r13,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r13,r6
	add      r0,r8,r0
	rotlwi   r8,r0,3
	add      r0,r8,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r8,r7
	add      r0,r9,r0
	rotlwi   r9,r0,3
	add      r0,r9,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r9,r6
	add      r0,r10,r0
	rotlwi   r10,r0,3
	add      r0,r10,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r10,r7
	add      r0,r11,r0
	rotlwi   r11,r0,3
	add      r0,r11,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r11,r6
	add      r0,r12,r0
	rotlwi   r12,r0,3
	add      r0,r12,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r12,r7
	add      r0,r31,r0
	rotlwi   r31,r0,3
	add      r0,r31,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r31,r6
	add      r0,r30,r0
	rotlwi   r30,r0,3
	add      r0,r30,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r30,r7
	add      r0,r29,r0
	rotlwi   r29,r0,3
	add      r0,r29,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r29,r6
	add      r0,r28,r0
	rotlwi   r28,r0,3
	add      r0,r28,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r28,r7
	add      r0,r27,r0
	rotlwi   r27,r0,3
	add      r0,r27,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r27,r6
	add      r0,r26,r0
	rotlwi   r26,r0,3
	add      r0,r26,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r26,r7
	add      r0,r25,r0
	rotlwi   r25,r0,3
	add      r0,r25,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r25,r6
	add      r0,r24,r0
	rotlwi   r24,r0,3
	add      r0,r24,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r24,r7
	add      r0,r23,r0
	rotlwi   r23,r0,3
	add      r0,r23,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r23,r6
	add      r0,r22,r0
	rotlwi   r22,r0,3
	add      r0,r22,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r22,r7
	add      r0,r21,r0
	rotlwi   r21,r0,3
	add      r0,r21,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r21,r6
	add      r0,r20,r0
	rotlwi   r20,r0,3
	add      r0,r20,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r20,r7
	add      r0,r19,r0
	rotlwi   r19,r0,3
	add      r0,r19,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r19,r6
	add      r0,r18,r0
	rotlwi   r18,r0,3
	add      r0,r18,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r18,r7
	add      r0,r17,r0
	rotlwi   r17,r0,3
	add      r0,r17,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r0,r17,r6
	add      r0,r16,r0
	rotlwi   r16,r0,3
	add      r0,r16,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r16,r7
	add      r0,r15,r0
	rotlwi   r15,r0,3
	add      r0,r15,r7
	add      r3,r6,r0
	rotlw    r6,r3,r0
	add      r3,r15,r6
	add      r0,r4,r3
	rotlwi   r4,r0,3
	add      r0,r4,r6
	add      r3,r7,r0
	rotlw    r7,r3,r0
	add      r0,r4,r7
	add      r0,r5,r0
	lwz      r3,-116(SP)
	rotlwi   r5,r0,3
	add      r3,r3,r5
	add      r0,r5,r7
	add      r6,r6,r0
	rotlw    r6,r6,r0
	add      r0,r5,r6
	add      r0,r14,r0
	lwz      r5,-120(SP)
	rotlwi   r14,r0,3
	add      r5,r5,r14
	xor      r3,r3,r5
	add      r0,r14,r6
	add      r7,r7,r0
	rotlw    r7,r7,r0
	add      r0,r14,r7
	add      r0,r13,r0
	rotlwi   r13,r0,3
	add      r14,r13,r7
	rotlw    r0,r3,r5
	add      r3,r13,r0
	add      r0,r6,r14
	rotlw    r6,r0,r14
	add      r0,r13,r6
	add      r0,r8,r0
	rotlwi   r8,r0,3
	add      r0,r8,r6
	add      r7,r7,r0
	rotlw    r7,r7,r0
	add      r0,r8,r7
	xor      r5,r5,r3
	add      r0,r9,r0
	rotlw    r5,r5,r3
	rotlwi   r9,r0,3
	add      r5,r8,r5
	add      r0,r9,r7
	xor      r3,r3,r5
	add      r6,r6,r0
	rotlw    r3,r3,r5
	rotlw    r6,r6,r0
	add      r3,r9,r3
	add      r8,r9,r6
	xor      r0,r5,r3
	add      r8,r10,r8
	rotlw    r5,r0,r3
	rotlwi   r10,r8,3
	add      r0,r10,r6
	add      r5,r10,r5
	add      r7,r7,r0
	xor      r3,r3,r5
	rotlw    r7,r7,r0
	rotlw    r0,r3,r5
	add      r3,r10,r7
	add      r3,r11,r3
	rotlwi   r11,r3,3
	add      r8,r11,r7
	add      r3,r11,r0
	add      r6,r6,r8
	xor      r0,r5,r3
	rotlw    r6,r6,r8
	rotlw    r0,r0,r3
	add      r5,r11,r6
	add      r5,r12,r5
	rotlwi   r12,r5,3
	add      r8,r12,r6
	add      r5,r12,r0
	add      r7,r7,r8
	xor      r0,r3,r5
	rotlw    r7,r7,r8
	rotlw    r0,r0,r5
	add      r3,r12,r7
	add      r3,r31,r3
	rotlwi   r31,r3,3
	add      r8,r31,r7
	add      r3,r31,r0
	add      r6,r6,r8
	xor      r0,r5,r3
	rotlw    r6,r6,r8
	rotlw    r0,r0,r3
	add      r5,r31,r6
	add      r5,r30,r5
	rotlwi   r30,r5,3
	add      r8,r30,r6
	add      r5,r30,r0
	add      r7,r7,r8
	xor      r0,r3,r5
	rotlw    r7,r7,r8
	rotlw    r0,r0,r5
	add      r3,r30,r7
	add      r3,r29,r3
	rotlwi   r29,r3,3
	add      r8,r29,r7
	add      r3,r29,r0
	add      r6,r6,r8
	xor      r0,r5,r3
	rotlw    r6,r6,r8
	rotlw    r0,r0,r3
	add      r5,r29,r6
	add      r5,r28,r5
	rotlwi   r28,r5,3
	add      r8,r28,r6
	add      r5,r28,r0
	add      r7,r7,r8
	xor      r0,r3,r5
	rotlw    r7,r7,r8
	rotlw    r0,r0,r5
	add      r3,r28,r7
	add      r3,r27,r3
	rotlwi   r27,r3,3
	add      r8,r27,r7
	add      r3,r27,r0
	add      r6,r6,r8
	xor      r0,r5,r3
	rotlw    r6,r6,r8
	rotlw    r0,r0,r3
	add      r5,r27,r6
	add      r5,r26,r5
	rotlwi   r26,r5,3
	add      r8,r26,r6
	add      r5,r26,r0
	add      r0,r7,r8
	rotlw    r7,r0,r8
	add      r8,r26,r7
	xor      r0,r3,r5
	add      r3,r25,r8
	rotlw    r0,r0,r5
	rotlwi   r25,r3,3
	add      r8,r25,r7
	add      r3,r25,r0
	add      r6,r6,r8
	xor      r0,r5,r3
	rotlw    r6,r6,r8
	rotlw    r0,r0,r3
	add      r5,r25,r6
	add      r5,r24,r5
	rotlwi   r24,r5,3
	add      r8,r24,r6
	add      r5,r24,r0
	add      r7,r7,r8
	xor      r0,r3,r5
	rotlw    r7,r7,r8
	rotlw    r0,r0,r5
	add      r3,r24,r7
	add      r3,r23,r3
	rotlwi   r23,r3,3
	add      r8,r23,r7
	add      r3,r23,r0
	add      r6,r6,r8
	xor      r0,r5,r3
	rotlw    r6,r6,r8
	rotlw    r0,r0,r3
	add      r5,r23,r6
	add      r5,r22,r5
	rotlwi   r22,r5,3
	add      r8,r22,r6
	add      r5,r22,r0
	add      r7,r7,r8
	xor      r0,r3,r5
	rotlw    r7,r7,r8
	rotlw    r0,r0,r5
	add      r3,r22,r7
	add      r3,r21,r3
	rotlwi   r21,r3,3
	add      r8,r21,r7
	add      r3,r21,r0
	add      r6,r6,r8
	xor      r0,r5,r3
	rotlw    r6,r6,r8
	rotlw    r0,r0,r3
	add      r5,r21,r6
	add      r5,r20,r5
	rotlwi   r20,r5,3
	add      r8,r20,r6
	add      r5,r20,r0
	add      r7,r7,r8
	xor      r0,r3,r5
	rotlw    r7,r7,r8
	rotlw    r0,r0,r5
	add      r3,r20,r7
	add      r3,r19,r3
	rotlwi   r19,r3,3
	add      r8,r19,r7
	add      r3,r19,r0
	add      r6,r6,r8
	xor      r0,r5,r3
	rotlw    r6,r6,r8
	rotlw    r0,r0,r3
	add      r5,r19,r6
	add      r5,r18,r5
	rotlwi   r18,r5,3
	add      r8,r18,r6
	add      r5,r18,r0
	add      r7,r7,r8
	xor      r0,r3,r5
	rotlw    r7,r7,r8
	rotlw    r0,r0,r5
	add      r3,r18,r7
	add      r3,r17,r3
	rotlwi   r17,r3,3
	add      r8,r17,r7
	add      r3,r17,r0
	add      r6,r6,r8
	xor      r0,r5,r3
	rotlw    r18,r6,r8
	rotlw    r0,r0,r3
	add      r5,r17,r18
	add      r5,r16,r5
	rotlwi   r16,r5,3
	add      r8,r16,r18
	add      r20,r16,r0
	add      r0,r7,r8
	rotlw    r17,r0,r8
	add      r0,r16,r17
	add      r0,r15,r0
	rotlwi   r15,r0,3
	xor      r0,r3,r20
	rotlw    r0,r0,r20
	lwz      r8,-124(SP)
	add      r21,r15,r0
	cmplw    r8,r21
	bne+     label4
	add      r17,r15,r17
	xor      r0,r20,r21
	add      r20,r18,r17
	rotlw    r21,r0,r21
	rotlw    r18,r20,r17
	add      r20,r15,r18
	add      r0,r4,r20
	rotlwi   r4,r0,3
	add      r20,r4,r21
	lwz      r0,-128(SP)
	cmplw    r0,r20
	bne+     label4
	lwz      r0,-108(SP)
	lwz      r3,24(SP)
	lwz      r4,24(SP)
	stw      r0,20(r3)
	lwz      r0,-112(SP)
	stw      r0,16(r4)
	lwz      r3,-148(SP)
	lwz      r0,28(SP)
	sub      r3,r3,r0
	mfctr    r0
	sub      r3,r3,r0
	b        label6
label4:
	lwz      r16,-112(SP)
	lwz      r6,-140(SP)
	lwz      r14,-144(SP)
	addis    r16,r16,256
	add      r5,r14,r6
	add      r3,r16,r5
	rotlw    r7,r3,r5
	stw      r16,-112(SP)
	bdnz     label3  
	clrrwi.  r0,r16,24
	bne+      label5
	addis    r16,r16,1
	clrrwi.  r0,r16,24
	beq+      label5
	clrlwi   r3,r16,16
	addi     r16,r3,256
	rlwinm.  r0,r16,0,8,15
	beq+      label5
	clrlwi   r3,r16,24
	addi     r16,r3,1
	rlwinm.  r0,r16,0,16,23
	beq+      label5
	lwz      r0,-108(SP)
	srwi     r5,r0,24
	rlwinm   r3,r0,24,16,23
	or       r3,r5,r3
	rlwinm   r6,r0,8,8,15
	slwi     r5,r0,24
	or       r0,r6,r3
	or       r3,r5,r0
	li       r16,0
	addi     r6,r3,1
	srwi     r3,r6,24
	rlwinm   r0,r6,24,16,23
	or       r0,r3,r0
	rlwinm   r5,r6,8,8,15
	slwi     r3,r6,24
	or       r0,r5,r0
	or       r0,r3,r0
	stw      r0,-108(SP)
label5:
	stw      r16,-112(SP)
	lwz      r4,28(SP)
	cmplwi   r4,0x0000
	bne+     label1
	lwz      r0,-108(SP)
	lwz      r3,24(SP)
	stw      r0,20(r3)
	stw      r16,16(r3)
	lwz      r3,-148(SP)
label6:
	lmw      r13,-76(SP)
	blr
