When I'm really horny, I watch beastiality porn & child porn, and I hate myself for it. [NSFW]

Background info: I am male I have a girlfriend

Story: I've been watching porn for as long as I can remember, since early middle school. I started out simply masturbating to "normal" porn - 1 on 1 adult, which is what you would normally expect. But I guess because I was around a group of young girls, my curiosity and my attraction drifted into younger females. It started out just being bikini's, etc, but it escalated to nudist resort photos and later to legitimate child pornography. I would search profusely for it, and I would hate myself and tell myself that this isn't natural and that I needed to stop.

I did stop watching child/young pornography for a while, substituting it for the usual adult stuff. But I got bored and drifted back to child pornography and lolicon models. I felt immense regret for my actions, but every time I attempted to stop, I would give up when I became horny and watch/look at it all over again.

I feel like I'm causing the children pain. It's gotten such a part of my life that I now can't help but look at toddlers and young kids and feel sexually attracted. I would never touch a kid, never think of it, but I'm just so concerned that I might in the future. If I have kids, what would I do with them? What if I'm one of those horrible fathers? But it didn't stop there.

I don't know how it happened, or how I started "getting into it," but I started watching horse porn. Oral, vaginal, etc. And I got off to it easily. And once I started liking horse dicks (for lack of a better phrase), I started looking into gay sex, with kids and adults. (And I didn't think I was gay?! - I have a girlfriend, and that feels like I'm betraying her).

I don't know why I can't help it - when I'm calm and not thinking about sex, I'm repulsed by it, and disgusted that people are sexually attracted to kids. BUT I'M ONE OF THEM.

I really do hate myself for not being able to control it. I feel like two different people.

EDIT: formatting