2
0
mirror of https://frontier.innolan.net/github/amigaos-cross-toolchain6.git synced 2024-10-19 10:29:55 +00:00
Files
amigaos-cross-toolchain6/test/test13/golden/search.s
2017-06-09 15:06:38 +01:00

1781 lines
25 KiB
ArmAsm

#NO_APP
.text
.align 2
.globl _initSearch
_initSearch:
move.l a2,-(sp)
move.l 8(sp),a0
clr.l 56(a0)
clr.l 52(a0)
clr.l 48(a0)
clr.l 24(a0)
clr.l 28(a0)
clr.l 32(a0)
clr.l 36(a0)
clr.l 76(a0)
clr.l 72(a0)
clr.l 80(a0)
clr.l 88(a0)
clr.l 84(a0)
clr.w _board+132
clr.l 44(a0)
lea _board+16144,a0
lea _pv+4,a2
lea _board+20144,a1
move.l #_board+16944,d0
.L2:
clr.l (a1)+
clr.l (a0)+
clr.l (a2)+
cmp.l a0,d0
jne .L2
lea _board+24144,a0
move.l #_board+32336,d1
.L3:
move.l a0,d0
add.l #512,d0
.L4:
clr.l (a0)+
cmp.l a0,d0
jne .L4
cmp.l d1,a0
jne .L3
move.l (sp)+,a2
rts
.align 2
.globl _numOfLegalMoves
_numOfLegalMoves:
lea (-3072,sp),sp
movem.l #15422,-(sp)
pea 36(sp)
jsr _generateMoves
move.l d0,d3
addq.l #4,sp
jle .L14
lea (36,sp),a2
moveq #0,d4
moveq #0,d2
lea _move_make,a6
lea _kingLoc,a5
lea _isAttacked,a4
lea _move_unmake,a3
.L13:
move.l a2,-(sp)
jsr (a6)
move.b _board+128,d1
move.b d1,d0
lsr.b #3,d0
and.l #255,d0
moveq #1,d5
sub.l d0,d5
move.l d5,d0
add.l d5,d0
add.l d0,d0
move.l (a5,d0.l),-(sp)
and.l #255,d1
move.l d1,-(sp)
jsr (a4)
lea (12,sp),sp
tst.l d0
jne .L12
addq.l #1,d4
.L12:
move.l a2,-(sp)
jsr (a3)
addq.l #1,d2
lea (12,a2),a2
addq.l #4,sp
cmp.l d3,d2
jne .L13
move.l d4,d0
movem.l (sp)+,#31804
lea (3072,sp),sp
rts
.L14:
moveq #0,d1
move.l d1,d0
movem.l (sp)+,#31804
lea (3072,sp),sp
rts
.align 2
.globl _CheckUp
_CheckUp:
move.l a2,-(sp)
move.l 8(sp),a2
jsr _get_ms
moveq #1,d1
cmp.l 16(a2),d1
jeq .L23
.L19:
moveq #2,d1
cmp.l 96(a2),d1
jeq .L20
sub.l 4(a2),d0
cmp.l #3000,d0
jls .L20
moveq #1,d0
move.l d0,92(a2)
.L20:
move.l a2,8(sp)
move.l (sp)+,a2
jra _ReadInput
.L23:
cmp.l 8(a2),d0
jls .L19
move.l d1,44(a2)
clr.l 92(a2)
move.l a2,8(sp)
move.l (sp)+,a2
jra _ReadInput
.align 2
.globl _pickMove
_pickMove:
movem.l #15392,-(sp)
move.l 24(sp),a2
move.l 28(sp),d5
move.l 32(sp),d3
cmp.l d5,d3
jle .L24
move.l d5,a0
add.l d5,a0
add.l d5,a0
add.l a0,a0
lea (a0,a0.l),a1
lea 8(a2,a1.l),a0
move.l d5,d4
move.l d5,d0
move.l #-31000,d2
.L27:
move.l (a0),d1
cmp.l d1,d2
jge .L26
move.l d0,d4
move.l d1,d2
.L26:
addq.l #1,d0
lea (12,a0),a0
cmp.l d3,d0
jne .L27
cmp.l d4,d5
jeq .L24
lea (a2,a1.l),a0
move.l (a0),d5
move.b 4(a0),d3
move.b 5(a0),d2
move.b 6(a0),d1
move.l 8(a0),d0
move.l d4,a1
add.l d4,a1
add.l d4,a1
add.l a1,a1
add.l a1,a1
lea (a2,a1.l),a1
move.l a1,a2
move.l (a2)+,(a0)+
move.l (a2)+,(a0)+
move.l (a2),(a0)
move.l d5,(a1)
move.b d3,4(a1)
move.b d2,5(a1)
move.b d1,6(a1)
move.l d0,8(a1)
.L24:
movem.l (sp)+,#1084
rts
.align 2
.globl _isRepetition
_isRepetition:
movem.l #15392,-(sp)
lea _board,a2
move.b 131(a2),d0
cmp.b #99,d0
jhi .L38
move.w 142(a2),a0
move.l a0,d1
subq.l #2,d1
and.l #255,d0
move.l a0,a1
sub.l d0,a1
cmp.l d1,a1
jgt .L36
move.l 134(a2),d2
move.l 138(a2),d3
moveq #16,d0
add.l a0,d0
lsl.l #3,d0
lea _board,a2
move.l (a2,d0.l),d4
move.l 4(a2,d0.l),d5
sub.l d3,d5
subx.l d2,d4
jeq .L38
move.l a0,d0
lsl.l #3,d0
move.l d0,a0
add.l #_board+112,a0
.L33:
subq.l #2,d1
cmp.l d1,a1
jgt .L36
lea (-16,a0),a0
move.l 16(a0),d4
move.l 20(a0),d5
sub.l d3,d5
subx.l d2,d4
jne .L33
.L38:
moveq #1,d0
movem.l (sp)+,#1084
rts
.L36:
moveq #0,d0
movem.l (sp)+,#1084
rts
.align 2
.globl _Quiescence
_Quiescence:
lea (-3088,sp),sp
movem.l #16190,-(sp)
move.l 3144(sp),a4
jsr _Evaluate
move.l d0,d4
clr.l d0
moveq #1,d1
add.l d1,28(a4)
move.l 24(a4),d2
addx.l d0,d2
move.l d2,24(a4)
move.l 32(a4),d2
move.l 36(a4),d3
clr.l d6
addq.l #1,d3
addx.l d6,d2
move.l d2,32(a4)
move.l d3,36(a4)
lea _board,a6
move.b 131(a6),d0
cmp.b #99,d0
jhi .L45
move.w 142(a6),a0
lea (-2,a0),a1
and.l #255,d0
move.l a0,a3
sub.l d0,a3
cmp.l a1,a3
jgt .L44
move.l 134(a6),d0
move.l 138(a6),d1
moveq #16,d5
add.l a0,d5
lsl.l #3,d5
lea _board,a2
move.l (a2,d5.l),d6
move.l 4(a2,d5.l),d7
sub.l d1,d7
subx.l d0,d6
jeq .L45
move.l a0,d5
lsl.l #3,d5
move.l d5,a0
add.l #_board+112,a0
move.l d2,44(sp)
move.l d3,48(sp)
move.l a3,d5
.L47:
subq.l #2,a1
cmp.l a1,d5
jgt .L71
lea (-16,a0),a0
move.l 16(a0),d2
move.l 20(a0),d3
sub.l d1,d3
subx.l d0,d2
jne .L47
.L45:
moveq #0,d5
.L41:
move.l d5,d0
movem.l (sp)+,#31996
lea (3088,sp),sp
rts
.L71:
move.l 44(sp),d2
move.l 48(sp),d3
.L44:
clr.l d0
clr.l d1
move.l d3,d1
and.l #4095,d1
move.l d0,d2
or.l d1,d2
jeq .L72
cmp.l 3140(sp),d4
jge .L58
.L51:
move.l d4,d5
cmp.l 3136(sp),d4
jlt .L73
.L52:
pea 60(sp)
jsr _generateCaptureMoves
move.l d0,d2
addq.l #4,sp
jle .L41
lea (60,sp),a2
moveq #0,d3
lea _move_make,a5
move.l 3140(sp),d0
neg.l d0
move.l d0,52(sp)
move.l a4,56(sp)
move.l 3140(sp),a4
lea (8,a2),a1
move.l d3,a0
move.l d3,d0
move.l #-31000,d6
.L54:
move.l (a1),d1
cmp.l d1,d6
jge .L53
move.l d0,a0
move.l d1,d6
.L53:
addq.l #1,d0
lea (12,a1),a1
cmp.l d2,d0
jlt .L54
cmp.l d3,a0
jeq .L56
move.l (a2),a6
move.b 4(a2),d6
move.b 5(a2),d7
move.b 6(a2),d1
move.l 8(a2),d0
lea (a0,a0.l),a1
lea (a1,a0.l),a0
add.l a0,a0
add.l a0,a0
lea (60,sp),a1
add.l a1,a0
move.l a0,a3
move.l a2,a1
move.l (a3)+,(a1)+
move.l (a3)+,(a1)+
move.l (a3),(a1)
move.l a6,(a0)
move.b d6,4(a0)
move.b d7,5(a0)
move.b d1,6(a0)
move.l d0,8(a0)
.L56:
move.l a2,-(sp)
jsr (a5)
move.b _board+128,d0
move.b d0,d1
lsr.b #3,d1
and.l #255,d1
moveq #1,d6
sub.l d1,d6
move.l d6,d1
add.l d6,d1
add.l d1,d1
lea _kingLoc,a0
move.l (a0,d1.l),-(sp)
and.l #255,d0
move.l d0,-(sp)
jsr _isAttacked
lea (12,sp),sp
tst.l d0
jeq .L74
.L57:
move.l a2,-(sp)
jsr _move_unmake
addq.l #4,sp
cmp.l d4,a4
jle .L58
cmp.l d5,d4
jle .L59
move.l d4,d5
.L59:
addq.l #1,d3
lea (12,a2),a2
cmp.l d2,d3
jeq .L41
lea (8,a2),a1
move.l d3,a0
move.l d3,d0
move.l #-31000,d6
jra .L54
.L58:
move.l 3140(sp),d1
move.l d1,d0
movem.l (sp)+,#31996
lea (3088,sp),sp
rts
.L74:
move.l 56(sp),-(sp)
move.l d5,d0
neg.l d0
move.l d0,-(sp)
move.l 60(sp),-(sp)
jsr _Quiescence
move.l d0,d4
neg.l d4
lea (12,sp),sp
jra .L57
.L73:
move.l 3136(sp),d5
jra .L52
.L72:
jsr _get_ms
moveq #1,d1
cmp.l 16(a4),d1
jeq .L75
.L49:
moveq #2,d1
cmp.l 96(a4),d1
jeq .L50
sub.l 4(a4),d0
cmp.l #3000,d0
jls .L50
moveq #1,d0
move.l d0,92(a4)
.L50:
move.l a4,-(sp)
jsr _ReadInput
addq.l #4,sp
moveq #1,d0
cmp.l 44(a4),d0
jeq .L45
.L76:
cmp.l 3140(sp),d4
jlt .L51
jra .L58
.L75:
cmp.l 8(a4),d0
jls .L49
move.l d1,44(a4)
clr.l 92(a4)
move.l a4,-(sp)
jsr _ReadInput
addq.l #4,sp
moveq #1,d0
cmp.l 44(a4),d0
jne .L76
jra .L45
.LC0:
.ascii "info depth %d currmove %s currmovenumber %d\12\0"
.align 2
.globl _AlphaBeta
_AlphaBeta:
link.w a5,#-3928
movem.l #16186,-(sp)
move.l 28(a5),a3
move.l 12(a5),-3884(a5)
clr.l -3876(a5)
clr.l -3880(a5)
clr.l d0
moveq #1,d1
add.l d1,28(a3)
move.l 24(a3),d2
addx.l d0,d2
move.l d2,24(a3)
tst.w _board+132
jeq .L78
lea _board,a4
move.b 131(a4),d0
cmp.b #99,d0
jhi .L81
move.w 142(a4),a0
lea (-2,a0),a1
and.l #255,d0
move.l a0,d3
sub.l d0,d3
cmp.l a1,d3
jgt .L78
move.l 134(a4),d0
move.l 138(a4),d1
moveq #16,d2
add.l a0,d2
lsl.l #3,d2
lea _board,a2
move.l (a2,d2.l),d4
move.l 4(a2,d2.l),d5
sub.l d1,d5
subx.l d0,d4
jeq .L81
move.l a0,d2
lsl.l #3,d2
move.l d2,a0
add.l #_board+112,a0
.L83:
subq.l #2,a1
cmp.l a1,d3
jgt .L78
lea (-16,a0),a0
move.l 16(a0),d4
move.l 20(a0),d5
sub.l d1,d5
subx.l d0,d4
jne .L83
.L81:
moveq #0,d1
move.l d1,d0
movem.l -3968(a5),#23804
unlk a5
rts
.L78:
move.l 16(a5),-(sp)
move.l 12(a5),-(sp)
move.l 8(a5),-(sp)
pea -3884(a5)
pea -3880(a5)
jsr _TT_probe
lea (20,sp),sp
tst.l d0
jeq .L85
addq.l #1,72(a3)
move.l d0,a0
move.b 9(a0),d0
cmp.b #1,d0
jeq .L169
cmp.b #3,d0
jeq .L170
.L88:
move.l -3884(a5),d1
.L171:
move.l d1,d0
movem.l -3968(a5),#23804
unlk a5
rts
.L169:
move.l -3880(a5),d1
move.l 20(a5),a0
move.l d1,4(a0)
moveq #1,d0
move.l d0,(a0)
move.l d1,d0
clr.w d0
swap d0
lsr.w #4,d0
tst.b d0
jne .L88
move.l d1,d0
moveq #9,d2
lsr.l d2,d0
lsr.l #8,d1
moveq #0,d2
not.b d2
and.l d2,d1
and.l #1920,d0
add.l d1,d0
add.l #6036,d0
add.l d0,d0
add.l d0,d0
move.l 8(a5),d1
lea _board,a0
add.l d1,(a0,d0.l)
move.l -3884(a5),d1
jra .L171
.L170:
move.l -3880(a5),d1
move.l d1,d0
clr.w d0
swap d0
lsr.w #4,d0
tst.b d0
jne .L88
move.w _board+142,a0
move.l a0,d0
add.l #4036,d0
add.l d0,d0
add.l d0,d0
lea _board,a2
move.l (a2,d0.l),a1
cmp.l d1,a1
jeq .L88
lea (5036,a0),a0
add.l a0,a0
add.l a0,a0
move.l a1,(a2,a0.l)
move.l d1,(a2,d0.l)
move.l -3884(a5),d1
jra .L171
.L85:
move.l 16(a5),d0
sub.l 12(a5),d0
move.l d0,-3912(a5)
addq.l #1,76(a3)
tst.l 8(a5)
jne .L90
move.l 20(a5),a0
clr.l (a0)
moveq #1,d1
cmp.l d0,d1
jge .L91
move.w _board+132,a0
cmp.l (a3),a0
jle .L91
move.l a0,(a3)
.L91:
move.l a3,-(sp)
move.l 16(a5),-(sp)
move.l 12(a5),-(sp)
jsr _Quiescence
movem.l -3968(a5),#23804
unlk a5
rts
.L90:
clr.l d0
clr.l d1
move.l 28(a3),d1
and.l #4095,d1
move.l d0,d2
or.l d1,d2
jeq .L172
move.b _board+128,d1
move.b d1,d0
lsr.b #3,d0
and.l #255,d0
add.l d0,d0
add.l d0,d0
lea _kingLoc,a0
move.l (a0,d0.l),-(sp)
eor.b #8,d1
and.l #255,d1
move.l d1,-(sp)
jsr _isAttacked
move.l d0,-3892(a5)
addq.l #8,sp
jeq .L95
.L181:
addq.l #1,8(a5)
lea (-3072,a5),a0
move.l a0,-3924(a5)
.L96:
move.l -3924(a5),-(sp)
jsr _generateMoves
move.l d0,d2
move.w _board+132,a0
lea _pv,a1
addq.l #4,sp
cmp.l (a1),a0
jge .L104
tst.l d0
jle .L105
addq.l #1,a0
add.l a0,a0
add.l a0,a0
move.l (a0,a1.l),d1
cmp.l -3072(a5),d1
jeq .L141
move.w #12,a0
add.l -3924(a5),a0
moveq #0,d0
.L108:
addq.l #1,d0
cmp.l d2,d0
jeq .L109
lea (12,a0),a0
cmp.l -12(a0),d1
jne .L108
move.l d0,d1
add.l d0,d1
add.l d1,d0
add.l d0,d0
add.l d0,d0
lea (a5,d0.l),a0
move.l #2000000,-3064(a0)
.L109:
move.l 8(a5),-(sp)
move.l 8(a5),-(sp)
jsr ___mulsi3
addq.l #8,sp
move.l d0,-3896(a5)
move.l -3924(a5),a2
move.l 12(a5),d4
move.l #-32000,-3928(a5)
moveq #0,d5
clr.l -3920(a5)
moveq #0,d3
move.l 20(a5),d0
addq.l #8,d0
move.l d0,-3904(a5)
move.l #-3872,d0
add.l a5,d0
move.l d0,-3900(a5)
move.l 8(a5),d0
subq.l #1,d0
move.l d0,-3916(a5)
move.l 16(a5),d0
neg.l d0
move.l d0,-3908(a5)
move.l 8(a5),d0
subq.l #2,d0
move.l d0,-3888(a5)
.L135:
lea (8,a2),a1
move.l d3,a0
move.l d3,d0
move.l #-31000,d6
.L118:
move.l (a1),d1
cmp.l d1,d6
jge .L117
move.l d0,a0
move.l d1,d6
.L117:
addq.l #1,d0
lea (12,a1),a1
cmp.l d2,d0
jlt .L118
cmp.l d3,a0
jeq .L120
move.l (a2),a6
move.b 4(a2),d7
move.b 5(a2),d6
move.b 6(a2),d1
move.l 8(a2),d0
lea (a0,a0.l),a1
lea (a1,a0.l),a0
add.l a0,a0
add.l a0,a0
add.l -3924(a5),a0
move.l a0,a4
move.l a2,a1
move.l (a4)+,(a1)+
move.l (a4)+,(a1)+
move.l (a4),(a1)
move.l a6,(a0)
move.b d7,4(a0)
move.b d6,5(a0)
move.b d1,6(a0)
move.l d0,8(a0)
.L120:
move.l a2,-(sp)
jsr _move_make
move.b _board+128,d1
move.b d1,d0
lsr.b #3,d0
and.l #255,d0
moveq #1,d6
sub.l d0,d6
move.l d6,d0
add.l d6,d0
add.l d0,d0
lea _kingLoc,a0
move.l (a0,d0.l),-(sp)
and.l #255,d1
move.l d1,-(sp)
jsr _isAttacked
lea (12,sp),sp
tst.l d0
jne .L173
tst.l d5
jeq .L174
moveq #3,d0
cmp.l d5,d0
jge .L125
moveq #2,d0
cmp.l 8(a5),d0
jge .L125
moveq #1,d0
cmp.l -3912(a5),d0
jge .L175
.L125:
move.l d4,d0
addq.l #1,d0
move.l d0,-3884(a5)
cmp.l d4,d0
jgt .L176
.L124:
addq.l #1,d5
move.l a2,-(sp)
jsr _move_unmake
addq.l #4,sp
moveq #1,d0
cmp.l 44(a3),d0
jeq .L81
tst.w _board+132
jne .L129
tst.l 92(a3)
jne .L177
.L129:
move.l -3884(a5),d6
cmp.l -3928(a5),d6
jle .L122
move.l (a2),-3920(a5)
cmp.l d4,d6
jle .L143
cmp.l 16(a5),d6
jge .L178
move.l 20(a5),a0
move.l -3920(a5),4(a0)
move.l -3876(a5),d0
jle .L134
move.l _SysBase,a6
move.l -3900(a5),a0
move.l -3904(a5),a1
lsl.l #2,d0
#APP
| 505 "src/search.c" 1
jsr a6@(-0x270:W)
#NO_APP
move.l -3876(a5),d0
move.l 20(a5),a0
.L134:
addq.l #1,d0
move.l d0,(a0)
move.l -3920(a5),d0
clr.w d0
swap d0
lsr.w #4,d0
tst.b d0
jne .L144
move.l -3920(a5),d1
lsr.l #8,d1
moveq #0,d0
not.b d0
and.l d0,d1
move.l -3920(a5),d0
moveq #9,d4
lsr.l d4,d0
and.l #1920,d0
add.l d1,d0
add.l #6036,d0
add.l d0,d0
add.l d0,d0
move.l -3896(a5),d1
lea _board,a0
add.l d1,(a0,d0.l)
move.l d6,-3928(a5)
move.l d6,d4
.L122:
addq.l #1,d3
lea (12,a2),a2
cmp.l d2,d3
jlt .L135
tst.l d5
jeq .L105
cmp.l 12(a5),d4
jeq .L137
move.l -3920(a5),-(sp)
pea 1.w
move.l -3928(a5),-(sp)
move.l 8(a5),-(sp)
jsr _TT_RecordHash
addq.l #1,80(a3)
move.l d4,d0
movem.l -3968(a5),#23804
unlk a5
rts
.L95:
jsr _Evaluate
move.l d0,d2
moveq #1,d0
cmp.l -3912(a5),d0
jge .L179
.L165:
lea (-3072,a5),a0
move.l a0,-3924(a5)
jra .L96
.L172:
jsr _get_ms
moveq #1,d1
cmp.l 16(a3),d1
jeq .L180
.L93:
moveq #2,d1
cmp.l 96(a3),d1
jeq .L94
sub.l 4(a3),d0
cmp.l #3000,d0
jls .L94
moveq #1,d0
move.l d0,92(a3)
.L94:
move.l a3,-(sp)
jsr _ReadInput
addq.l #4,sp
.L182:
move.b _board+128,d1
move.b d1,d0
lsr.b #3,d0
and.l #255,d0
add.l d0,d0
add.l d0,d0
lea _kingLoc,a0
move.l (a0,d0.l),-(sp)
eor.b #8,d1
and.l #255,d1
move.l d1,-(sp)
jsr _isAttacked
move.l d0,-3892(a5)
addq.l #8,sp
jne .L181
jra .L95
.L176:
move.l d4,d6
neg.l d6
move.l a3,-(sp)
move.l 24(a5),-(sp)
pea -3876(a5)
move.l d6,-(sp)
move.l d4,d0
not.l d0
move.l d0,-(sp)
move.l -3916(a5),-(sp)
lea _AlphaBeta,a4
jsr (a4)
neg.l d0
move.l d0,-3884(a5)
addq.l #1,64(a3)
lea (24,sp),sp
cmp.l d4,d0
jle .L124
cmp.l 16(a5),d0
jge .L124
move.l a3,-(sp)
move.l 24(a5),-(sp)
pea -3876(a5)
move.l d6,-(sp)
move.l -3908(a5),-(sp)
move.l -3916(a5),-(sp)
jsr (a4)
neg.l d0
move.l d0,-3884(a5)
addq.l #1,68(a3)
lea (24,sp),sp
jra .L124
.L177:
move.l (a2),-(sp)
jsr _moveToUCI
move.l d5,-(sp)
move.l d0,-(sp)
move.l 8(a5),-(sp)
pea .LC0
jsr _printf
move.l ___sF,a0
move.l 4(a0),-(sp)
jsr _fflush
lea (24,sp),sp
jra .L129
.L175:
cmp.l #799999,8(a2)
jgt .L125
move.l a3,-(sp)
move.l 24(a5),-(sp)
pea -3876(a5)
move.l d4,d0
neg.l d0
move.l d0,-(sp)
move.l d4,d0
not.l d0
move.l d0,-(sp)
move.l -3888(a5),-(sp)
jsr _AlphaBeta
neg.l d0
move.l d0,-3884(a5)
addq.l #1,60(a3)
lea (24,sp),sp
cmp.l d4,d0
jle .L124
jra .L176
.L180:
cmp.l 8(a3),d0
jls .L93
move.l d1,44(a3)
clr.l 92(a3)
move.l a3,-(sp)
jsr _ReadInput
addq.l #4,sp
jra .L182
.L179:
tst.l 24(a5)
jeq .L165
moveq #6,d0
cmp.l 8(a5),d0
jlt .L99
move.l 8(a5),d0
add.l d0,d0
add.l 8(a5),d0
lsl.l #3,d0
add.l 8(a5),d0
add.l d0,d0
add.l d0,d0
move.l d2,d3
sub.l d0,d3
cmp.l 16(a5),d3
jge .L183
.L99:
cmp.l 16(a5),d2
jlt .L165
tst.w _board+132
jeq .L165
move.b _board+128,d0
lsr.b #3,d0
and.l #255,d0
add.l #8097,d0
add.l d0,d0
add.l d0,d0
lea _board,a0
tst.l (a0,d0.l)
jle .L165
moveq #1,d0
cmp.l 8(a5),d0
jge .L165
move.l 8(a5),d3
asr.l #2,d3
addq.l #3,d3
sub.l 16(a5),d2
cmp.l #299,d2
jgt .L139
pea 100.w
move.l d2,-(sp)
jsr ___divsi3
addq.l #8,sp
.L100:
add.l d0,d3
lea (-3072,a5),a0
move.l a0,-3924(a5)
move.l a0,-(sp)
jsr _move_makeNull
move.l 8(a5),d0
sub.l d3,d0
addq.l #4,sp
tst.l d0
jle .L101
move.l a3,-(sp)
clr.l -(sp)
pea -3876(a5)
moveq #1,d1
sub.l 16(a5),d1
move.l d1,-(sp)
move.l 16(a5),d1
neg.l d1
move.l d1,-(sp)
move.l d0,-(sp)
jsr _AlphaBeta
move.l d0,d2
neg.l d2
lea (24,sp),sp
.L102:
move.l -3924(a5),-(sp)
jsr _move_unmakeNull
addq.l #4,sp
cmp.l 16(a5),d2
jlt .L96
addq.l #1,56(a3)
move.l 16(a5),d1
move.l d1,d0
movem.l -3968(a5),#23804
unlk a5
rts
.L173:
move.l a2,-(sp)
jsr _move_unmake
addq.l #4,sp
jra .L122
.L174:
move.l a3,-(sp)
move.l 24(a5),-(sp)
pea -3876(a5)
move.l d4,d0
neg.l d0
move.l d0,-(sp)
move.l -3908(a5),-(sp)
move.l -3916(a5),-(sp)
jsr _AlphaBeta
neg.l d0
move.l d0,-3884(a5)
lea (24,sp),sp
jra .L124
.L143:
move.l d6,-3928(a5)
jra .L122
.L144:
move.l d6,-3928(a5)
move.l d6,d4
jra .L122
.L104:
move.l -3880(a5),d1
jeq .L112
tst.l d0
jle .L105
cmp.l -3072(a5),d1
jeq .L141
move.w #12,a0
add.l -3924(a5),a0
moveq #0,d0
.L115:
addq.l #1,d0
cmp.l d2,d0
jeq .L109
lea (12,a0),a0
cmp.l -12(a0),d1
jne .L115
move.l d0,d1
add.l d0,d1
add.l d1,d0
add.l d0,d0
add.l d0,d0
lea (a5,d0.l),a0
move.l #2000000,-3064(a0)
jra .L109
.L112:
tst.l d2
jgt .L109
.L105:
tst.l -3892(a5)
jeq .L81
move.w _board+132,a0
move.l a0,d1
add.l #-31000,d1
move.l d1,d0
movem.l -3968(a5),#23804
unlk a5
rts
.L178:
subq.l #1,d5
jeq .L184
addq.l #1,48(a3)
.L132:
move.l -3920(a5),d0
clr.w d0
swap d0
lsr.w #4,d0
tst.b d0
jne .L133
move.w _board+142,a0
move.l a0,d1
add.l #4036,d1
add.l d1,d1
add.l d1,d1
lea _board,a2
move.l (a2,d1.l),a1
cmp.l -3920(a5),a1
jeq .L133
move.l a0,d0
add.l #5036,d0
add.l d0,d0
add.l d0,d0
move.l a1,(a2,d0.l)
move.l -3920(a5),(a2,d1.l)
.L133:
move.l -3920(a5),-(sp)
pea 3.w
move.l 16(a5),-(sp)
move.l 8(a5),-(sp)
jsr _TT_RecordHash
addq.l #1,88(a3)
move.l 16(a5),d1
move.l d1,d0
movem.l -3968(a5),#23804
unlk a5
rts
.L137:
addq.l #1,84(a3)
move.l -3920(a5),-(sp)
pea 2.w
move.l d4,-(sp)
move.l 8(a5),-(sp)
jsr _TT_RecordHash
move.l d4,d0
movem.l -3968(a5),#23804
unlk a5
rts
.L141:
moveq #0,d0
move.l d0,d1
add.l d0,d1
add.l d1,d0
add.l d0,d0
add.l d0,d0
lea (a5,d0.l),a0
move.l #2000000,-3064(a0)
jra .L109
.L184:
addq.l #1,52(a3)
jra .L132
.L183:
move.l 16(a5),-(sp)
lea _abs,a2
jsr (a2)
addq.l #4,sp
cmp.l #30799,d0
jgt .L99
move.l d2,-(sp)
jsr (a2)
addq.l #4,sp
cmp.l #9999,d0
jgt .L99
move.b _board+128,d0
lsr.b #3,d0
and.l #255,d0
add.l #8097,d0
add.l d0,d0
add.l d0,d0
lea _board,a0
tst.l (a0,d0.l)
jle .L99
move.l d3,d0
movem.l -3968(a5),#23804
unlk a5
rts
.L101:
move.l a3,-(sp)
moveq #1,d0
sub.l 16(a5),d0
move.l d0,-(sp)
move.l 16(a5),d0
neg.l d0
move.l d0,-(sp)
jsr _Quiescence
move.l d0,d2
neg.l d2
lea (12,sp),sp
jra .L102
.L139:
moveq #3,d0
jra .L100
.LC1:
.ascii "info depth %d seldepth %d (%d%%, Null-moves: %d LMR: %d (%d/%d) nodes %lld qnodes %lld time %d nps %lld score cp %d pv \0"
.LC2:
.ascii "Funny, I have no PV-line!\12\0"
.LC3:
.ascii "(\0"
.LC4:
.ascii ")\12\0"
.LC5:
.ascii "info depth %d seldepth %d score cp %d nodes %lld nps %lld time %d pv \0"
.LC6:
.ascii "info depth %d seldepth %d score mate %d nodes %lld nps %lld time %d pv \0"
.LC7:
.ascii "\12\0"
.LC8:
.ascii "TT - E:%d A: %d B: %d -- Hits: %d Misses: %d (%d%%)\12\0"
.LC9:
.ascii "bestmove %s\12\0"
.align 2
.globl _think
_think:
lea (-1620,sp),sp
movem.l #16190,-(sp)
move.l 1668(sp),a2
clr.l 56(sp)
clr.l _pv
clr.l 56(a2)
clr.l 52(a2)
clr.l 48(a2)
clr.l 24(a2)
clr.l 28(a2)
clr.l 32(a2)
clr.l 36(a2)
clr.l 76(a2)
clr.l 72(a2)
clr.l 80(a2)
clr.l 88(a2)
clr.l 84(a2)
clr.w _board+132
clr.l 44(a2)
lea _board+16144,a0
lea _pv+4,a3
lea _board+20144,a1
move.l #_board+16944,d0
.L186:
clr.l (a1)+
clr.l (a0)+
clr.l (a3)+
cmp.l a0,d0
jne .L186
lea _board+24144,a0
move.l #_board+32336,d1
.L189:
move.l a0,d0
add.l #512,d0
.L188:
clr.l (a0)+
cmp.l a0,d0
jne .L188
cmp.l d1,a0
jne .L189
tst.l 16(a2)
jne .L212
move.l 12(a2),52(sp)
jle .L234
move.w #1,a3
lea (56,sp),a6
move.l sp,d2
add.l #860,d2
lea _get_ms,a5
.L209:
clr.l 56(a2)
clr.l 52(a2)
clr.l 48(a2)
clr.l 60(a2)
clr.l 68(a2)
clr.l 64(a2)
clr.l (a2)
clr.l 92(a2)
lea (4,a6),a0
.L193:
clr.l (a0)+
cmp.l d2,a0
jne .L193
clr.l 56(sp)
jsr (a5)
move.l d0,d5
move.l a2,-(sp)
pea 1.w
move.l a6,-(sp)
pea 32000.w
pea -32000.w
move.l a3,-(sp)
jsr _AlphaBeta
move.l d0,d4
jsr (a5)
move.l d0,d3
jsr (a5)
lea (24,sp),sp
moveq #1,d1
cmp.l 16(a2),d1
jeq .L235
.L194:
moveq #2,d1
cmp.l 96(a2),d1
jeq .L195
sub.l 4(a2),d0
cmp.l #3000,d0
jls .L195
moveq #1,d0
move.l d0,92(a2)
.L195:
move.l a2,-(sp)
jsr _ReadInput
addq.l #4,sp
cmp.l d5,d3
jeq .L236
.L196:
move.l d4,-(sp)
jsr _abs
addq.l #4,sp
cmp.l #30799,d0
jle .L214
.L240:
cmp.l #30799,d4
jle .L198
move.l #31000,d0
sub.l d4,d0
move.l d0,d0
jpl .L241
addq.l #1,d0
.L241:
asr.l #1,d0
move.l d0,a4
addq.l #1,a4
.L197:
move.l d2,-(sp)
move.l a3,-(sp)
jsr _TT_fillPVLineFromTT
move.l 96(a2),d0
addq.l #8,sp
moveq #2,d1
cmp.l d0,d1
jeq .L199
tst.l d0
jeq .L237
tst.l 44(a2)
jne .L199
move.l 24(a2),d6
move.l 28(a2),d7
move.l d3,d1
sub.l 4(a2),d1
cmp.w #0,a4
jne .L203
move.l d1,-(sp)
move.l d7,d0
moveq #27,d1
lsr.l d1,d0
move.l d0,a0
move.l d6,d0
lsl.l #5,d0
move.l a0,d1
or.l d0,d1
move.l d1,48(sp)
move.l d7,d0
lsl.l #5,d0
move.l d0,52(sp)
move.l 48(sp),d0
move.l 52(sp),d1
sub.l d7,d1
subx.l d6,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
add.l d7,d1
addx.l d6,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
move.l d3,a0
sub.l d5,a0
move.l a0,-(sp)
clr.l -(sp)
move.l d1,-(sp)
move.l d0,-(sp)
jsr ___udivdi3
lea (12,sp),sp
move.l d1,(sp)
move.l d0,-(sp)
move.l d7,-(sp)
move.l d6,-(sp)
move.l d4,-(sp)
move.l (a2),-(sp)
move.l a3,-(sp)
pea .LC5
jsr _printf
lea (36,sp),sp
move.l a2,-(sp)
move.l a6,-(sp)
jsr _printLine
pea .LC7
jsr _printf
lea (12,sp),sp
.L199:
move.l ___sF,a0
move.l 4(a0),-(sp)
jsr _fflush
addq.l #4,sp
move.l 860(sp),d0
cmp.l 56(sp),d0
jle .L205
pea 804.w
move.l d2,-(sp)
pea _pv
jsr _memcpy
lea (12,sp),sp
moveq #1,d0
cmp.l 44(a2),d0
jeq .L238
.L207:
tst.l 16(a2)
jeq .L208
add.l d3,d3
sub.l d5,d3
cmp.l 8(a2),d3
jhi .L192
.L208:
addq.l #1,a3
cmp.l 52(sp),a3
jle .L209
.L192:
move.l 96(a2),d0
jeq .L239
.L210:
subq.l #2,d0
jeq .L211
move.l _pv+4,-(sp)
jsr _moveToUCI
move.l d0,-(sp)
pea .LC9
jsr _printf
lea (12,sp),sp
.L211:
move.l a3,12(a2)
move.l _pv+4,d0
movem.l (sp)+,#31996
lea (1620,sp),sp
rts
.L236:
move.l d5,d3
addq.l #1,d3
move.l d4,-(sp)
jsr _abs
addq.l #4,sp
cmp.l #30799,d0
jgt .L240
.L214:
sub.l a4,a4
jra .L197
.L235:
cmp.l 8(a2),d0
jls .L194
move.l d1,44(a2)
clr.l 92(a2)
move.l a2,-(sp)
jsr _ReadInput
addq.l #4,sp
cmp.l d5,d3
jne .L196
jra .L236
.L205:
pea 804.w
move.l a6,-(sp)
pea _pv
jsr _memcpy
lea (12,sp),sp
moveq #1,d0
cmp.l 44(a2),d0
jne .L207
.L238:
subq.l #1,a3
move.l 96(a2),d0
jne .L210
jra .L239
.L198:
move.l #-31000,d0
sub.l d4,d0
move.l d0,d0
jpl .L242
addq.l #1,d0
.L242:
asr.l #1,d0
move.l d0,a4
jra .L197
.L237:
move.l 24(a2),d6
move.l 28(a2),d7
move.l 52(a2),a4
move.l d4,-(sp)
move.l d7,d0
moveq #27,d1
lsr.l d1,d0
move.l d6,d1
lsl.l #5,d1
or.l d1,d0
move.l d7,d1
lsl.l #5,d1
sub.l d7,d1
subx.l d6,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
add.l d7,d1
addx.l d6,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
move.l d3,a0
sub.l d5,a0
move.l a0,-(sp)
clr.l -(sp)
move.l d1,-(sp)
move.l d0,-(sp)
jsr ___udivdi3
lea (12,sp),sp
move.l d1,(sp)
move.l d0,-(sp)
move.l d3,d0
sub.l 4(a2),d0
move.l d0,-(sp)
move.l 36(a2),-(sp)
move.l 32(a2),-(sp)
move.l d7,-(sp)
move.l d6,-(sp)
move.l 68(a2),-(sp)
move.l 64(a2),-(sp)
move.l 60(a2),-(sp)
move.l 56(a2),-(sp)
move.l a4,d7
smi d6
ext.w d6
ext.l d6
move.l d6,d0
move.l d7,d1
add.l d1,d1
addx.l d0,d0
add.l d7,d1
addx.l d6,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d7
addx.l d0,d6
add.l d7,d7
addx.l d6,d6
add.l d7,d7
addx.l d6,d6
move.l a4,d0
add.l 48(a2),d0
move.l #1,d1
add.l d0,d1
smi d0
ext.w d0
ext.l d0
move.l d1,-(sp)
move.l d0,-(sp)
move.l d7,-(sp)
move.l d6,-(sp)
jsr ___udivdi3
lea (12,sp),sp
move.l d1,(sp)
move.l (a2),-(sp)
move.l a3,-(sp)
pea .LC1
jsr _printf
lea (64,sp),sp
tst.l 56(sp)
jeq .L201
move.l a2,-(sp)
move.l a6,-(sp)
jsr _printLine
addq.l #8,sp
pea .LC3
jsr _printf
move.l a2,-(sp)
move.l d2,-(sp)
jsr _printLine
pea .LC4
jsr _printf
lea (16,sp),sp
jra .L199
.L203:
move.l d1,-(sp)
move.l d7,d0
moveq #27,d1
lsr.l d1,d0
move.l d6,d1
lsl.l #5,d1
or.l d1,d0
move.l d7,d1
lsl.l #5,d1
sub.l d7,d1
subx.l d6,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
add.l d7,d1
addx.l d6,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
move.l d3,a0
sub.l d5,a0
move.l a0,-(sp)
clr.l -(sp)
move.l d1,-(sp)
move.l d0,-(sp)
jsr ___udivdi3
lea (12,sp),sp
move.l d1,(sp)
move.l d0,-(sp)
move.l d7,-(sp)
move.l d6,-(sp)
move.l a4,-(sp)
move.l (a2),-(sp)
move.l a3,-(sp)
pea .LC6
jsr _printf
lea (36,sp),sp
move.l a2,-(sp)
move.l a6,-(sp)
jsr _printLine
pea .LC7
jsr _printf
lea (12,sp),sp
jra .L199
.L201:
pea .LC2
jsr _printf
addq.l #4,sp
pea .LC3
jsr _printf
move.l a2,-(sp)
move.l d2,-(sp)
jsr _printLine
pea .LC4
jsr _printf
lea (16,sp),sp
jra .L199
.L212:
move.l #200,52(sp)
move.w #1,a3
lea (56,sp),a6
move.l sp,d2
add.l #860,d2
lea _get_ms,a5
jra .L209
.L239:
move.l 72(a2),d2
move.l 76(a2),d3
move.l d2,d5
smi d4
ext.w d4
ext.l d4
move.l d4,d0
move.l d5,d1
add.l d1,d1
addx.l d0,d0
add.l d5,d1
addx.l d4,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
add.l d5,d1
addx.l d4,d0
add.l d1,d1
addx.l d0,d0
add.l d1,d1
addx.l d0,d0
move.l d3,d5
add.l d2,d5
smi d4
ext.w d4
ext.l d4
move.l d5,-(sp)
move.l d4,-(sp)
move.l d1,-(sp)
move.l d0,-(sp)
jsr ___udivdi3
lea (12,sp),sp
move.l d1,(sp)
move.l d3,-(sp)
move.l d2,-(sp)
move.l 88(a2),-(sp)
move.l 84(a2),-(sp)
move.l 80(a2),-(sp)
pea .LC8
jsr _printf
move.l 96(a2),d0
lea (28,sp),sp
jra .L210
.L234:
move.w #1,a3
move.l 96(a2),d0
jne .L210
jra .L239
.globl _ReductionLimit
.align 2
_ReductionLimit:
.long 3
.globl _FullDepthMoves
.align 2
_FullDepthMoves:
.long 4
.globl _razor_margin
.align 2
_razor_margin:
.long 188
.long 222
.long 235
.long 216
.comm _pv,804