Well I suck at teaching ppl, and dropping hints will prolly do no good if you can't even find ZaiRoN's crackme.
Go to the main page, go to Mini Project Area, top thread (at the mo, may be a lower one by time u read this). Or just follow his links
So I'll do it pretty much for you, but explain it along the way.
Load up OllyDbg (from protools.cjb.net , its free!). Load tcsync.exe. Goto debugging options and disable breaking on exceptions (loads of fp exceptions in this). That's whats stopping you debugging it in w32dasm if you'd tried.
This is my spectacularly lazy way of doing it (if I were going to crack it and not keygen it). But its prolly the easiest to follow.
You've already seen the bad boy jump at 430d80. Look at what its comparing. Get the dump to look at that mem location. Scroll up quite a way, till u think it doesnt look like registration relevant bits. Place a breakpoint (f2). Go to register and put in anything, click ok. When it breaks, stick something random in that memory location using the edit function (select the bytes by click/dragging, then right click and choose edit). Trace using f8. See where it gets turned to zero.
You will (hopefully) find that the last time it gets put to zero happens when you f8 over 430d44, that call [ecx+34] command. So, lets trace *into* it. Place a breakpoint, redo the registration thing, when it breaks, trace in by pressing f7. You will end up at 442470. Look at 4425dc (or around there). The result that gets put in there comes from another memory location. So lets bpx the start of this proc (442470), do the registration again, and start tracing (at this point you may want to try restarting the program with this bp set, you will notice it doesnt break so chances are the main check is another subcall (or the proc is repeated somewhere else, but its not, so forget that for this app)).
[note: from now on, exact offsets hidden so as not to be a simple crack]
If you trace through, you will find the right call is at 4*****. Trace into this, as before, and you end up at 4*****. Breakpoint this and restart the program, and bang, it breaks. So looks like this is the main check. Forget the actual routine, we're (well, you) aren't interested in that. Look at 4*****, near the end of the proc. Its the final check

but just patching that won't do (probably), because the subsequent bit relies on eax. So lets patch the bit at 4*****.
5E POP ESI
66:8901 MOV WORD PTR DS:[ECX],AX
...is the code there at the moment. 4***** loads the mem address of the bit we dont want to be 0, else regged=false. So we need to change something so that before that command at 4*****, eax (or ax) is not 0. I leave that to you, with some final hints: xor eax,eax makes eax 0 (in case u didnt know). eax can be anything other than 0 (probably), but you cant rely on it not being 0 before this (or can you? I didn't by nature, but try seeing yourself). the easiest (shortest) way to change a register is the command inc (for increase). and finally, the command 8901 is the same as 668901. (that 66 can be replaced by a 1 byte op in other words).
You can take a horse to water and stuff its head in it, but...
"If it isn't a sub, the code must be found twice. Am i right?"
There are very few hard and fast rules in cracking, because different coders and compilers do things in different ways, and do basically what the hell they like. The best way to crack imho is to *understand* and work out (by testing or whatever) what is going on, and reason what needs to be done.
Have fun,