ループ終わらずにネストし続けてしまってるんだよね。

ぱっと見ありそうなのは先頭の
>for(;!tehai[i];i++)if(i>=43){return;} //上がっている場合ここが実行される
で i=0とかしてたり?