I think it's because the code fragment
call print_nl
call print_int
those two functions might do something to the registers eax and edi. Have you tried debugging the code ?
Edit:
jne RegularScore
refers to DumpRegs2, not the cmp eax, edi
in my opinion it should be like this:
cmp eax,edi
je DoubleScore
dump_regs 1
;here we will handle the regularScore
mov edx, 0
mov eax,[new]
ret
DoubleScore:
mov ebx,0
ret