何やってるコードか全く理解してないうえで、
とりあえず、変数の並びが法則に反してるとこ一か所あるけど、
それで正しいの?