# eight queens program
# generated by minic

export function w $chk(w %t0, w %t1) {
@l0
	%x =l alloc4 4
	storew %t0, %x
	%y =l alloc4 4
	storew %t1, %y
	%i =l alloc4 4
	%r =l alloc4 4
	storew 0, %i
	storew 0, %r
@l1
	%t6 =w loadw %i
	%t7 =w loadw $glo1
	%t5 =w csltw %t6, %t7
	jnz %t5, @l2, @l3
@l2
	%t10 =w loadw %r
	%t15 =l loadl $glo3
	%t16 =w loadw %x
	%t17 =l extsw %t16
	%t18 =l mul 8, %t17
	%t14 =l add %t15, %t18
	%t13 =l loadl %t14
	%t19 =w loadw %i
	%t20 =l extsw %t19
	%t21 =l mul 4, %t20
	%t12 =l add %t13, %t21
	%t11 =w loadw %t12
	%t9 =w add %t10, %t11
	storew %t9, %r
	%t24 =w loadw %r
	%t29 =l loadl $glo3
	%t30 =w loadw %i
	%t31 =l extsw %t30
	%t32 =l mul 8, %t31
	%t28 =l add %t29, %t32
	%t27 =l loadl %t28
	%t33 =w loadw %y
	%t34 =l extsw %t33
	%t35 =l mul 4, %t34
	%t26 =l add %t27, %t35
	%t25 =w loadw %t26
	%t23 =w add %t24, %t25
	storew %t23, %r
	%t39 =w loadw %x
	%t40 =w loadw %i
	%t38 =w add %t39, %t40
	%t41 =w loadw $glo1
	%t37 =w csltw %t38, %t41
	%t44 =w loadw %y
	%t45 =w loadw %i
	%t43 =w add %t44, %t45
	%t46 =w loadw $glo1
	%t42 =w csltw %t43, %t46
	%t36 =w and %t37, %t42
	jnz %t36, @l4, @l5
@l4
	%t49 =w loadw %r
	%t54 =l loadl $glo3
	%t56 =w loadw %x
	%t57 =w loadw %i
	%t55 =w add %t56, %t57
	%t58 =l extsw %t55
	%t59 =l mul 8, %t58
	%t53 =l add %t54, %t59
	%t52 =l loadl %t53
	%t61 =w loadw %y
	%t62 =w loadw %i
	%t60 =w add %t61, %t62
	%t63 =l extsw %t60
	%t64 =l mul 4, %t63
	%t51 =l add %t52, %t64
	%t50 =w loadw %t51
	%t48 =w add %t49, %t50
	storew %t48, %r
@l5
	%t68 =w loadw %x
	%t69 =w loadw %i
	%t67 =w add %t68, %t69
	%t70 =w loadw $glo1
	%t66 =w csltw %t67, %t70
	%t74 =w loadw %y
	%t75 =w loadw %i
	%t73 =w sub %t74, %t75
	%t71 =w cslew 0, %t73
	%t65 =w and %t66, %t71
	jnz %t65, @l7, @l8
@l7
	%t78 =w loadw %r
	%t83 =l loadl $glo3
	%t85 =w loadw %x
	%t86 =w loadw %i
	%t84 =w add %t85, %t86
	%t87 =l extsw %t84
	%t88 =l mul 8, %t87
	%t82 =l add %t83, %t88
	%t81 =l loadl %t82
	%t90 =w loadw %y
	%t91 =w loadw %i
	%t89 =w sub %t90, %t91
	%t92 =l extsw %t89
	%t93 =l mul 4, %t92
	%t80 =l add %t81, %t93
	%t79 =w loadw %t80
	%t77 =w add %t78, %t79
	storew %t77, %r
@l8
	%t98 =w loadw %x
	%t99 =w loadw %i
	%t97 =w sub %t98, %t99
	%t95 =w cslew 0, %t97
	%t102 =w loadw %y
	%t103 =w loadw %i
	%t101 =w add %t102, %t103
	%t104 =w loadw $glo1
	%t100 =w csltw %t101, %t104
	%t94 =w and %t95, %t100
	jnz %t94, @l10, @l11
@l10
	%t107 =w loadw %r
	%t112 =l loadl $glo3
	%t114 =w loadw %x
	%t115 =w loadw %i
	%t113 =w sub %t114, %t115
	%t116 =l extsw %t113
	%t117 =l mul 8, %t116
	%t111 =l add %t112, %t117
	%t110 =l loadl %t111
	%t119 =w loadw %y
	%t120 =w loadw %i
	%t118 =w add %t119, %t120
	%t121 =l extsw %t118
	%t122 =l mul 4, %t121
	%t109 =l add %t110, %t122
	%t108 =w loadw %t109
	%t106 =w add %t107, %t108
	storew %t106, %r
@l11
	%t127 =w loadw %x
	%t128 =w loadw %i
	%t126 =w sub %t127, %t128
	%t124 =w cslew 0, %t126
	%t132 =w loadw %y
	%t133 =w loadw %i
	%t131 =w sub %t132, %t133
	%t129 =w cslew 0, %t131
	%t123 =w and %t124, %t129
	jnz %t123, @l13, @l14
@l13
	%t136 =w loadw %r
	%t141 =l loadl $glo3
	%t143 =w loadw %x
	%t144 =w loadw %i
	%t142 =w sub %t143, %t144
	%t145 =l extsw %t142
	%t146 =l mul 8, %t145
	%t140 =l add %t141, %t146
	%t139 =l loadl %t140
	%t148 =w loadw %y
	%t149 =w loadw %i
	%t147 =w sub %t148, %t149
	%t150 =l extsw %t147
	%t151 =l mul 4, %t150
	%t138 =l add %t139, %t151
	%t137 =w loadw %t138
	%t135 =w add %t136, %t137
	storew %t135, %r
@l14
	%t153 =w loadw %i
	%t152 =w add %t153, 1
	storew %t152, %i
	jmp @l1
@l3
	%t154 =w loadw %r
	ret %t154
}

export function w $go(w %t0) {
@l16
	%y =l alloc4 4
	storew %t0, %y
	%x =l alloc4 4
	%t2 =w loadw %y
	%t3 =w loadw $glo1
	%t1 =w ceqw %t2, %t3
	jnz %t1, @l17, @l18
@l17
	%t5 =w loadw $glo2
	%t4 =w add %t5, 1
	storew %t4, $glo2
	ret 0
@l18
	storew 0, %x
@l20
	%t10 =w loadw %x
	%t11 =w loadw $glo1
	%t9 =w csltw %t10, %t11
	jnz %t9, @l21, @l22
@l21
	%t14 =w loadw %x
	%t15 =w loadw %y
	%t13 =w call $chk(w %t14, w %t15)
	%t12 =w ceqw %t13, 0
	jnz %t12, @l23, @l24
@l23
	%t21 =l loadl $glo3
	%t22 =w loadw %x
	%t23 =l extsw %t22
	%t24 =l mul 8, %t23
	%t20 =l add %t21, %t24
	%t19 =l loadl %t20
	%t25 =w loadw %y
	%t26 =l extsw %t25
	%t27 =l mul 4, %t26
	%t18 =l add %t19, %t27
	%t28 =w loadw %t18
	%t17 =w add %t28, 1
	storew %t17, %t18
	%t31 =w loadw %y
	%t30 =w add %t31, 1
	%t29 =w call $go(w %t30)
	%t37 =l loadl $glo3
	%t38 =w loadw %x
	%t39 =l extsw %t38
	%t40 =l mul 8, %t39
	%t36 =l add %t37, %t40
	%t35 =l loadl %t36
	%t41 =w loadw %y
	%t42 =l extsw %t41
	%t43 =l mul 4, %t42
	%t34 =l add %t35, %t43
	%t44 =w loadw %t34
	%t33 =w sub %t44, 1
	storew %t33, %t34
@l24
	%t46 =w loadw %x
	%t45 =w add %t46, 1
	storew %t45, %x
	jmp @l20
@l22
	ret 0
}

export function w $main() {
@l26
	%i =l alloc4 4
	storew 8, $glo1
	%t4 =w loadw $glo1
	%t3 =l call $calloc(w %t4, w 8)
	storel %t3, $glo3
	storew 0, %i
@l27
	%t9 =w loadw %i
	%t10 =w loadw $glo1
	%t8 =w csltw %t9, %t10
	jnz %t8, @l28, @l29
@l28
	%t13 =w loadw $glo1
	%t12 =l call $calloc(w %t13, w 4)
	%t16 =l loadl $glo3
	%t17 =w loadw %i
	%t18 =l extsw %t17
	%t19 =l mul 8, %t18
	%t15 =l add %t16, %t19
	storel %t12, %t15
	%t21 =w loadw %i
	%t20 =w add %t21, 1
	storew %t20, %i
	jmp @l27
@l29
	%t22 =w call $go(w 0)
	%t25 =w loadw $glo2
	%t24 =w cnew %t25, 92
	ret %t24
}

data $glo1 = { w 0 }
data $glo2 = { w 0 }
data $glo3 = { l 0 }
