Ratinglists

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

Adam Hair
Posts: 3226
Joined: Wed May 06, 2009 10:31 pm
Location: Fuquay-Varina, North Carolina

Re: Ratinglists

Post by Adam Hair »

ozziejoe wrote:I agree that Rybka should either be removed or houdini be included in the rating lists.

There are two arguments against this.

***argument 1: Rybka is "more original" than say strelka or houdini.

I respect Graham, and I think alot of unfair shots have been taken at him, and I would not be surprised if he hardened his stance against testing the fruit deriviatives.

But doesn't fabien's post suggest rybka is fruit derivative? What else would you need to say rbka = deriviative. Is there really more evidence against houdini or strelka?

****argument 2: lists are just a hobby and we can do what we want.

The difficulty here is that the lists are public and are used for advertisement. for example, You will find links to the ccrl list on the rybka page. Also many people will find those lists if they search under "chess ratings" and they will be led to believe rybka is the best and will be more likely to buy that engine. So even if it is not the intention of the list owner, the list does have the appearence of objectivity and will influence what people do.

Therefore, I think you have some responsibility to make the public lists as objective and honest as possible. Maybe it would be enough to put a disclaimer in the top, saying something like "we do not test some engines which appear to be stronger than the top engine on our list." Or "this is a hobby, and we have intentionally exlcuded some engines which appear to be stronger than our top engine. This list should not be used to inform purchasing decisions." That would be totally in keeping with your list being a hobby and not a tool to influence what people buy.


Anyway, I've always appreciated the work you put into the lists, graham et al., and look forward to what you do in the future.
best
Joseph
Joseph, thank you for your well-reasoned opinion. It is quite refreshing
to see something concerning the CCRL that represents a disagreement
with how we have dealt with the situation so far without the use of
insults and libel.

You mentioned one point that I was unaware of. I know that several
amateur engine authors use the CCRL to indicate the approximate
strength of their engine. I did not know that at least one commercial
engine website did the same. Call it naivety or stupidity on my part,
but I honestly did not know that the CCRL, whether directly or indirectly,
could be considered advertisement for commercial engines. Or at least
I have never thought of it that way before. That gives me some food for
thought.

Thanks again,

Adam
Roger Brown
Posts: 782
Joined: Wed Mar 08, 2006 9:22 pm

Re: Ratinglists

Post by Roger Brown »

Adam Hair wrote:
Joseph, thank you for your well-reasoned opinion. It is quite refreshing
to see something concerning the CCRL that represents a disagreement
with how we have dealt with the situation so far without the use of
insults and libel.

You mentioned one point that I was unaware of. I know that several
amateur engine authors use the CCRL to indicate the approximate
strength of their engine. I did not know that at least one commercial
engine website did the same. Call it naivety or stupidity on my part,
but I honestly did not know that the CCRL, whether directly or indirectly,
could be considered advertisement for commercial engines. Or at least
I have never thought of it that way before. That gives me some food for
thought.

Thanks again,

Adam

Hello Adam,

May I thank you for this piece of prose. At least there is a willingness to consider the facts if not actually agreeing with them.

I believe that the groups should be free to test what they like and want to, without being pressured to use any particular engine.

I appreciate the calm rationality of your posts in a sea of confusion....

:-)

Now I will probably get the what for, but hey, live dangerously I say!

Later.
Cubeman
Posts: 644
Joined: Fri Feb 02, 2007 3:11 am
Location: New Zealand

Re: Ratinglists

Post by Cubeman »

SzG wrote:
Alexander Schmidt wrote:
Graham Banks wrote:The current members have made the decision not to test the Ippo engines.
What if a mayority of the ccrl testers want to test it now?
As soon as even one CCRL member submits games of any engine, that engine will appear on the list.
But at the moment CCRL not taking on new members,(is that to make sure no Ippo or Houdini results are submitted?) but I guess you have been losing members thru natural attrition.So what happens when it dwindles down to just you and Graham (or has it already got that low).You can effectively keep it that way for ever since you control what happens.
Roger Brown
Posts: 782
Joined: Wed Mar 08, 2006 9:22 pm

Re: Ratinglists

Post by Roger Brown »

Cubeman wrote:
But at the moment CCRL not taking on new members,(is that to make sure no Ippo or Houdini results are submitted?) but I guess you have been losing members thru natural attrition.So what happens when it dwindles down to just you and Graham (or has it already got that low).You can effectively keep it that way for ever since you control what happens.


Hello Alex,

Can we agree that they are free to spend their time as they see fit?

If one of the purposes of a list is to convey meaningful information and as a result of a flawed (?) policy in the eyes of its major consumer(s) it no longer has validity or meaning, then the natural order of things is that such lists will eventually cease to be published or ignored if they are published.

No need for insisting that they do what you or anyone else thinks is best. Simply follow those lists which convey what you consider to be useful information.

Just a suggestion....

Later.
Last edited by Roger Brown on Sat Jan 29, 2011 11:39 pm, edited 1 time in total.
Roger Brown
Posts: 782
Joined: Wed Mar 08, 2006 9:22 pm

Re: Ratinglists

Post by Roger Brown »

Adam Hair wrote:
SNIP

You mentioned one point that I was unaware of. I know that several
amateur engine authors use the CCRL to indicate the approximate
strength of their engine. I did not know that at least one commercial
engine website did the same. Call it naivety or stupidity on my part,
but I honestly did not know that the CCRL, whether directly or indirectly,
could be considered advertisement for commercial engines. Or at least
I have never thought of it that way before. That gives me some food for
thought.

Thanks again,

Adam


Hello Adam,

A bit of mischief if I might be allowed.

Wouldn't permission be required to use the list in this way?

Later.
Adam Hair
Posts: 3226
Joined: Wed May 06, 2009 10:31 pm
Location: Fuquay-Varina, North Carolina

Re: Ratinglists

Post by Adam Hair »

Roger Brown wrote:
Adam Hair wrote:
Joseph, thank you for your well-reasoned opinion. It is quite refreshing
to see something concerning the CCRL that represents a disagreement
with how we have dealt with the situation so far without the use of
insults and libel.

You mentioned one point that I was unaware of. I know that several
amateur engine authors use the CCRL to indicate the approximate
strength of their engine. I did not know that at least one commercial
engine website did the same. Call it naivety or stupidity on my part,
but I honestly did not know that the CCRL, whether directly or indirectly,
could be considered advertisement for commercial engines. Or at least
I have never thought of it that way before. That gives me some food for
thought.

Thanks again,

Adam

Hello Adam,

May I thank you for this piece of prose. At least there is a willingness to consider the facts if not actually agreeing with them.

I believe that the groups should be free to test what they like and want to, without being pressured to use any particular engine.

I appreciate the calm rationality of your posts in a sea of confusion....

:-)

Now I will probably get the what for, but hey, live dangerously I say!

Later.
Thank you Roger. It is simply my nature to consider all sides of an issue.
I have had enough personal examples to teach me the folly of closing
my mind before noting opposing views/ideas.

As far as the calm rationality of my posts, I attribute a good portion of
that to my agonizing over the correct words to say. There has been
several times where I wanted to dish out some choice words only to
have the urge leave me while forming my response. :) Yet, for the
most part I would rather conduct myself in a civil manner.

Adam
Cubeman
Posts: 644
Joined: Fri Feb 02, 2007 3:11 am
Location: New Zealand

Re: Ratinglists

Post by Cubeman »

Roger Brown wrote:
Cubeman wrote:
But at the moment CCRL not taking on new members,(is that to make sure no Ippo or Houdini results are submitted?) but I guess you have been losing members thru natural attrition.So what happens when it dwindles down to just you and Graham (or has it already got that low).You can effectively keep it that way for ever since you control what happens.


Hello Alex,

Can we agree that they are free to spend their time as they see fit?

If one of the purposes of a list is to convey meaningful information and as a result of a flawed (?) policy in the eyes of its major consumer(s) it no longer has validity or meaning, then the natural order of things is that such lists will eventually cease to be published or ignored if they are published.

No need for insisting that they do what you or anyone else thinks is best. Simply follow those lists which convey what you consider to be useful information.

Just a suggestion....

Later.
I have made my position known and will leave it at that, just debating the issue and feel that I have made some valid points, at the end of the day I think that you are correct and the lists that are good will survive and those that are not will either disappear or be ignored.After all we are talking about chess rating lists and I assume that most chess players are clever enough not to be deceived.
Adam Hair
Posts: 3226
Joined: Wed May 06, 2009 10:31 pm
Location: Fuquay-Varina, North Carolina

Re: Ratinglists

Post by Adam Hair »

Roger Brown wrote:
Adam Hair wrote:
SNIP

You mentioned one point that I was unaware of. I know that several
amateur engine authors use the CCRL to indicate the approximate
strength of their engine. I did not know that at least one commercial
engine website did the same. Call it naivety or stupidity on my part,
but I honestly did not know that the CCRL, whether directly or indirectly,
could be considered advertisement for commercial engines. Or at least
I have never thought of it that way before. That gives me some food for
thought.

Thanks again,

Adam


Hello Adam,

A bit of mischief if I might be allowed.

Wouldn't permission be required to use the list in this way?

Later.
If you allow me to state my personal opinion and the reason for that
opinion.

My focus has been on freely available chess engines. Most of the
authors of free engines are hobbyist, the same as myself. I feel lucky
that they make their work available to the members of the computer
chess community. So if they want to link to a rating list that I am
involved with, or if their placement on such a list helps to draw
attention to their work, then I feel that it is fair compensation for what
they have given me.

I have had to give some thought in regards to commercial engines.
When I ran my own rating list, I made the decision to not test commercial
engines. It wasn't due to any animosity towards commercial authors.
I admire their ability and hold no grudge if they want to try to make some
extra money by selling their engine/program to the public. For me, the
reason I chose to not test commercial engines is that I could not buy
every one. If I were to test one commercial engine, then I would need to
test all of them. Quite honestly, that was not and is not feasible for me.
What if I could receive some of them for free? I would still choose to not
test them, unless I could purchase the rest of them. I would not want to
exclude any of them, regardless of whether or not a particular author
really did not give a damn if their engine was not on my list.

How do I connect the paragraph above to your question? I feel that if
every commercial engine is represented on a rating list and that list
is made public, then it is fair for a particular author to use that list as
advertisement. After all, the information is already being shared with
the public. I don't see where permission is needed.

I hope you find this a satisfactory, if long-winded, response to your
question.

Now, after my statements above, I know I will have to clarify at least
one thing. "I would not want to exclude any of them". That
statement could be used to apply pressure to include Ippolit engines
and/or Houdini. After all, Rybka is on the CCRL lists and it seems to
have a cloud of illegitimacy surrounding it. There is one difference ( if
no other ) between Rybka and the other engines. Though I have only
been a part of this community for close to two years now, I am aware
that Rybka was considered a legitimate engine by most people for
several years. There is a certain amount of inertia due to that fact.
It is not unexpected that some people would want abundant, undeniable
evidence before they changed their opinion about Rybka. Yes, some
experts have repeatedly stated that there is no doubt that Rybka
contains code from Fruit. However, other experts have stated their
doubts. When you mix in the appearance of an agenda by people on
both sides of that debate ( whether or not anybody actually has had an
agenda ), it does not surprise me that some people have not changed
their stance regarding Rybka. I would not expect them to, though if
Fabian at some point says that Rybka contains Fruit code, then they
should.

On the other hand, there has been a cloud of illegitimacy surrounding
the Ippolit engines and Houdini from the start. Take for example Ippolit.
I don't believe we could define it as a clone or even a derivative of Rybka,
at least not using the widely perceived definitions of those terms. Yet,
BB himself stated: "I would find it wholly plausible that IPPOLIT is
a "reverse-engineered Rybka with many changes", and indeed I would
assert that the IPPOLIT maker(s) certainly knew much of the internal
workings of Rybka." He is not the only expert with that opinion ( reverse
engineered), though I am not certain he still holds that opinion. Throw
into the mix the manner that Ippolit's author(s) have presented the engine
and themselves, I do not blame anybody that decides not to test Ippolit
et al. As for Houdini, there has been enough circumstantial evidence
presented to cast some doubt over its relationship to the Ippolit family.
Certainly enough to warrant the same scrutiny that Rybka has received.
It is easy to see parallels between the origin of Rybka and the origin of
Houdini. I could be wrong in my speculation, but it seems that the
exact relationship between Houdini and the Ippolit family is being hidden.
Perhaps the stigma that would be attached to a modified version of
Robbolito or Ivanhoe is something Robert would like to avoid. I find that
to be sad, for if Houdini was a modified Robbolito/Ivanhoe and Robert
stated that publicly, I would be compelled to defend him. This of course
is supposition on my part; I have no proof otherwise and lack the ability
to determine the truth. I could only generate more circumstantial
evidence. Yet, this opinion of mine seems to be widely shared. And I
do not want to test an engine that I have doubts about the author's
honesty concerning his/her engine. I have done so a few times already
and wish to avoid that. Again, this is simply my opinion in regards to
Houdini. I reserve some right to choose the engines I test.

Roger, I'm sorry that I have used this simple question of yours as a
platform to voice my opinions. But I know that my answer to your
question leaves the door open to more questions by others and
I simply wish to close that door. I doubt that I have succeeded.

Adam
De Vos W
Posts: 431
Joined: Tue Dec 01, 2009 11:59 am

Re: Ratinglists

Post by De Vos W »

Adam Hair wrote:
Roger Brown wrote:
Adam Hair wrote:
SNIP

You mentioned one point that I was unaware of. I know that several
amateur engine authors use the CCRL to indicate the approximate
strength of their engine. I did not know that at least one commercial
engine website did the same. Call it naivety or stupidity on my part,
but I honestly did not know that the CCRL, whether directly or indirectly,
could be considered advertisement for commercial engines. Or at least
I have never thought of it that way before. That gives me some food for
thought.

Thanks again,

Adam


Hello Adam,

A bit of mischief if I might be allowed.

Wouldn't permission be required to use the list in this way?

Later.
If you allow me to state my personal opinion and the reason for that
opinion.

My focus has been on freely available chess engines. Most of the
authors of free engines are hobbyist, the same as myself. I feel lucky
that they make their work available to the members of the computer
chess community. So if they want to link to a rating list that I am
involved with, or if their placement on such a list helps to draw
attention to their work, then I feel that it is fair compensation for what
they have given me.

I have had to give some thought in regards to commercial engines.
When I ran my own rating list, I made the decision to not test commercial
engines. It wasn't due to any animosity towards commercial authors.
I admire their ability and hold no grudge if they want to try to make some
extra money by selling their engine/program to the public. For me, the
reason I chose to not test commercial engines is that I could not buy
every one. If I were to test one commercial engine, then I would need to
test all of them. Quite honestly, that was not and is not feasible for me.
What if I could receive some of them for free? I would still choose to not
test them, unless I could purchase the rest of them. I would not want to
exclude any of them, regardless of whether or not a particular author
really did not give a damn if their engine was not on my list.

How do I connect the paragraph above to your question? I feel that if
every commercial engine is represented on a rating list and that list
is made public, then it is fair for a particular author to use that list as
advertisement. After all, the information is already being shared with
the public. I don't see where permission is needed.

I hope you find this a satisfactory, if long-winded, response to your
question.

Now, after my statements above, I know I will have to clarify at least
one thing. "I would not want to exclude any of them". That
statement could be used to apply pressure to include Ippolit engines
and/or Houdini. After all, Rybka is on the CCRL lists and it seems to
have a cloud of illegitimacy surrounding it. There is one difference ( if
no other ) between Rybka and the other engines. Though I have only
been a part of this community for close to two years now, I am aware
that Rybka was considered a legitimate engine by most people for
several years. There is a certain amount of inertia due to that fact.
It is not unexpected that some people would want abundant, undeniable
evidence before they changed their opinion about Rybka. Yes, some
experts have repeatedly stated that there is no doubt that Rybka
contains code from Fruit. However, other experts have stated their
doubts. When you mix in the appearance of an agenda by people on
both sides of that debate ( whether or not anybody actually has had an
agenda ), it does not surprise me that some people have not changed
their stance regarding Rybka. I would not expect them to, though if
Fabian at some point says that Rybka contains Fruit code, then they
should.

On the other hand, there has been a cloud of illegitimacy surrounding
the Ippolit engines and Houdini from the start. Take for example Ippolit.
I don't believe we could define it as a clone or even a derivative of Rybka,
at least not using the widely perceived definitions of those terms. Yet,
BB himself stated: "I would find it wholly plausible that IPPOLIT is
a "reverse-engineered Rybka with many changes", and indeed I would
assert that the IPPOLIT maker(s) certainly knew much of the internal
workings of Rybka." He is not the only expert with that opinion ( reverse
engineered), though I am not certain he still holds that opinion. Throw
into the mix the manner that Ippolit's author(s) have presented the engine
and themselves, I do not blame anybody that decides not to test Ippolit
et al. As for Houdini, there has been enough circumstantial evidence
presented to cast some doubt over its relationship to the Ippolit family.
Certainly enough to warrant the same scrutiny that Rybka has received.
It is easy to see parallels between the origin of Rybka and the origin of
Houdini. I could be wrong in my speculation, but it seems that the
exact relationship between Houdini and the Ippolit family is being hidden.
Perhaps the stigma that would be attached to a modified version of
Robbolito or Ivanhoe is something Robert would like to avoid. I find that
to be sad, for if Houdini was a modified Robbolito/Ivanhoe and Robert
stated that publicly, I would be compelled to defend him. This of course
is supposition on my part; I have no proof otherwise and lack the ability
to determine the truth. I could only generate more circumstantial
evidence. Yet, this opinion of mine seems to be widely shared. And I
do not want to test an engine that I have doubts about the author's
honesty concerning his/her engine. I have done so a few times already
and wish to avoid that. Again, this is simply my opinion in regards to
Houdini. I reserve some right to choose the engines I test.

Roger, I'm sorry that I have used this simple question of yours as a
platform to voice my opinions. But I know that my answer to your
question leaves the door open to more questions by others and
I simply wish to close that door. I doubt that I have succeeded.

Adam

Adam wrote:

And I
do not want to test an engine that I have doubts about the author's
honesty concerning his/her engine. I have done so a few times already
and wish to avoid that.


Is this paranoia on a finer scale?
Gods are fragile things; they may be killed by a whiff of science or a dose of common sense.
K I Hyams
Posts: 3584
Joined: Fri Mar 31, 2006 11:21 pm

Re: Ratinglists

Post by K I Hyams »

Adam Hair wrote:
I could be wrong in my speculation, but it seems that the
exact relationship between Houdini and the Ippolit family is being hidden.
Perhaps the stigma that would be attached to a modified version of
Robbolito or Ivanhoe is something Robert would like to avoid. I find that
to be sad, for if Houdini was a modified Robbolito/Ivanhoe and Robert
stated that publicly, I would be compelled to defend him. This of course
is supposition on my part; I have no proof otherwise and lack the ability
to determine the truth.
Adam
I hold exactly the same view that you hold and I am in much the same position as you are.

If I were to release an engine that was likely to arouse the sort of controversy that currently prevails, I would be very careful to be absolutely open and extremely accurate about the origins of that engine. If I took a block of code, I would acknowledge it. The underlined and italicised quote is from the Houdart site.

Without many ideas from the excellent open source chess engines Ippolit/Robbolito, Stockfish and Crafty, Houdini would not nearly be as strong as it is now.


Rajlich acknowledged, somewhat grudgingly, an influence from Fruit. Robert acknowledges, less grudgingly, influences from Ippolit/Robbolito, Stockfish and Crafty. However, it may be that he has been “economical with the truth”. The quote below is from Lance Perkins, author of Thinker. One might wonder whether the claim that “This Houdini is just a cheap compile of the Ippo/Robo source code” is an example of Lance also being “economical with the truth”, however if the material that he published is genuine, it would seem to indicate to this layman that Robert has taken more than “ideas” from Robolito.
CThinker wrote:This Houdini is just a cheap compile of the Ippo/Robo source code.

Below is one example of a decompiled Robolito and Houdini. The entire decompiled code is like this. You will find a one-to-one equivalence between the two.

I even found a few bugs in Robo/Ippo that were also in Houdini. Really funny. I will not disclose the bug. This way, I have an easy method of spotting these types of cheap tricks to compile Robo/Ippo and release it as something new.

Whoever did this Houdini thing is clueless about Robo/Ippo.

From the function...

Code: Select all

static void Material_calculation( int c )
{
    int white_queen, black_queen, white_rook, black_rook, white_clear, black_clear, white_dark, black_dark,
        white_knight, black_knight, white_pawn, black_pawn, n, value, white_bishop, black_bishop;
    int ca, white_load, black_load, phase, va1, va2, va3, va4;
    uint64 va;
    n = c;
    white_queen = n % 2;
    n /= 2;
    black_queen = n % 2;
    n /= 2;
    white_rook = n % 3;
    n /= 3;
    black_rook = n % 3;
    n /= 3;
    white_clear = n % 2;
    n /= 2;
    white_dark = n % 2;
    n /= 2;
    black_clear = n % 2;
    n /= 2;
    black_dark = n % 2;
    n /= 2;
    white_knight = n % 3;
    n /= 3;
    black_knight = n % 3;
    n /= 3;
    white_pawn = n % 9;
    n /= 9;
    black_pawn = n % 9;
    white_bishop = white_clear + white_dark;
    black_bishop = black_clear + black_dark;
    va =
        value_value(white_pawn, white_knight, white_bishop, white_clear, white_dark, white_rook, white_queen,
            black_pawn, black_knight, black_bishop, black_clear, black_dark, black_rook, black_queen);
    phase =
        PHASE_MINOR * (white_knight + white_bishop + black_knight + black_bishop)
            + PHASE_ROOK * (white_rook + black_rook) + PHASE_QUEEN * (white_queen + black_queen);

    // etc., etc.
}
Decompiled Houdini:

Code: Select all

:00428364 8BE8                    mov ebp, eax
:00428366 81E501000080            and ebp, 80000001
:0042836C 7905                    jns 00428373
:0042836E 4D                      dec ebp
:0042836F 83CDFE                  or ebp, -00000002
:00428372 45                      inc ebp
---------
:00428373 99                      cdq
:00428374 2BC2                    sub eax, edx
:00428376 D1F8                    sar eax, 1
:00428378 8BD8                    mov ebx, eax
:0042837A 81E301000080            and ebx, 80000001
:00428380 7905                    jns 00428387
:00428382 4B                      dec ebx
:00428383 83CBFE                  or ebx, -00000002
:00428386 43                      inc ebx
---------
:00428387 99                      cdq
:00428388 2BC2                    sub eax, edx
:0042838A 8BC8                    mov ecx, eax
:0042838C D1F9                    sar ecx, 1
:0042838E B856555555              mov eax, 55555556
:00428393 F7E9                    imul ecx
:00428395 8BC2                    mov eax, edx
:00428397 C1E81F                  shr eax, 1F
:0042839A 03C2                    add eax, edx
:0042839C 8D1440                  lea edx, dword[eax+2*eax]
:0042839F 2BCA                    sub ecx, edx
:004283A1 894C2418                mov dword[esp+18], ecx
:004283A5 8BC8                    mov ecx, eax
:004283A7 B856555555              mov eax, 55555556
:004283AC F7E9                    imul ecx
:004283AE 8BC2                    mov eax, edx
:004283B0 C1E81F                  shr eax, 1F
:004283B3 03C2                    add eax, edx
:004283B5 8D1440                  lea edx, dword[eax+2*eax]
:004283B8 2BCA                    sub ecx, edx
:004283BA 8BF8                    mov edi, eax
:004283BC 81E701000080            and edi, 80000001
:004283C2 894C2410                mov dword[esp+10], ecx
:004283C6 7905                    jns 004283CD
:004283C8 4F                      dec edi
:004283C9 83CFFE                  or edi, -00000002
:004283CC 47                      inc edi
---------
:004283CD 99                      cdq
:004283CE 2BC2                    sub eax, edx
:004283D0 D1F8                    sar eax, 1
:004283D2 8BC8                    mov ecx, eax
:004283D4 81E101000080            and ecx, 80000001
:004283DA 897C2448                mov dword[esp+48], edi
:004283DE 7905                    jns 004283E5
:004283E0 49                      dec ecx
:004283E1 83C9FE                  or ecx, -00000002
:004283E4 41                      inc ecx
---------
:004283E5 99                      cdq
:004283E6 2BC2                    sub eax, edx
:004283E8 D1F8                    sar eax, 1
:004283EA 894C2434                mov dword[esp+34], ecx
:004283EE 8BC8                    mov ecx, eax
:004283F0 81E101000080            and ecx, 80000001
:004283F6 7905                    jns 004283FD
:004283F8 49                      dec ecx
:004283F9 83C9FE                  or ecx, -00000002
:004283FC 41                      inc ecx
---------
:004283FD 99                      cdq
:004283FE 2BC2                    sub eax, edx
:00428400 D1F8                    sar eax, 1
:00428402 894C2428                mov dword[esp+28], ecx
:00428406 8BC8                    mov ecx, eax
:00428408 81E101000080            and ecx, 80000001
:0042840E 7905                    jns 00428415
:00428410 49                      dec ecx
:00428411 83C9FE                  or ecx, -00000002
:00428414 41                      inc ecx
---------
:00428415 99                      cdq
:00428416 2BC2                    sub eax, edx
:00428418 894C2424                mov dword[esp+24], ecx
:0042841C 8BC8                    mov ecx, eax
:0042841E D1F9                    sar ecx, 1
:00428420 B856555555              mov eax, 55555556
:00428425 F7E9                    imul ecx
:00428427 8BC2                    mov eax, edx
:00428429 C1E81F                  shr eax, 1F
:0042842C 03C2                    add eax, edx
:0042842E 8D1440                  lea edx, dword[eax+2*eax]
:00428431 8BF0                    mov esi, eax
:00428433 2BCA                    sub ecx, edx
:00428435 B856555555              mov eax, 55555556
:0042843A F7EE                    imul esi
:0042843C 894C241C                mov dword[esp+1C], ecx
:00428440 8BCA                    mov ecx, edx
:00428442 C1E91F                  shr ecx, 1F
:00428445 03CA                    add ecx, edx
:00428447 8D0449                  lea eax, dword[ecx+2*ecx]
:0042844A 2BF0                    sub esi, eax
:0042844C B8398EE338              mov eax, 38E38E39
:00428451 F7E9                    imul ecx
:00428453 D1FA                    sar edx, 1
:00428455 89742414                mov dword[esp+14], esi
:00428459 8BF2                    mov esi, edx
:0042845B C1EE1F                  shr esi, 1F
:0042845E 03F2                    add esi, edx
:00428460 8D14F6                  lea edx, dword[esi+8*esi]
:00428463 2BCA                    sub ecx, edx
:00428465 B8398EE338              mov eax, 38E38E39
:0042846A F7EE                    imul esi
:0042846C D1FA                    sar edx, 1
:0042846E 8BC2                    mov eax, edx
:00428470 C1E81F                  shr eax, 1F
:00428473 03C2                    add eax, edx
:00428475 8B542410                mov edx, dword[esp+10]
:00428479 8D04C0                  lea eax, dword[eax+8*eax]
:0042847C 2BF0                    sub esi, eax
:0042847E 8B442424                mov eax, dword[esp+24]
:00428482 03442428                add eax, dword[esp+28]
:00428486 53                      push ebx
:00428487 52                      push edx
:00428488 50                      push eax
:00428489 89442438                mov dword[esp+38], eax
:0042848D 8B442420                mov eax, dword[esp+20]
:00428491 50                      push eax
:00428492 8B442428                mov eax, dword[esp+28]
:00428496 89742440                mov dword[esp+40], esi
:0042849A 8B542440                mov edx, dword[esp+40]
:0042849E 8B742444                mov esi, dword[esp+44]
:004284A2 52                      push edx
:004284A3 8B542430                mov edx, dword[esp+30]
:004284A7 55                      push ebp
:004284A8 50                      push eax
:004284A9 03F7                    add esi, edi
:004284AB 56                      push esi
:004284AC 52                      push edx
:004284AD 51                      push ecx
:004284AE 894C2460                mov dword[esp+60], ecx
:004284B2 E899FCFFFF              call 00428150
Decompiled Robo:

Code: Select all

:00425B49 8BD8                    mov ebx, eax
:00425B4B 81E301000080            and ebx, 80000001
:00425B51 56                      push esi
:00425B52 57                      push edi
:00425B53 7905                    jns 00425B5A
:00425B55 4B                      dec ebx
:00425B56 83CBFE                  or ebx, -00000002
:00425B59 43                      inc ebx
---------
:00425B5A 99                      cdq
:00425B5B 2BC2                    sub eax, edx
:00425B5D D1F8                    sar eax, 1
:00425B5F 8BF0                    mov esi, eax
:00425B61 81E601000080            and esi, 80000001
:00425B67 7905                    jns 00425B6E
:00425B69 4E                      dec esi
:00425B6A 83CEFE                  or esi, -00000002
:00425B6D 46                      inc esi
---------
:00425B6E 99                      cdq
:00425B6F 2BC2                    sub eax, edx
:00425B71 8BC8                    mov ecx, eax
:00425B73 D1F9                    sar ecx, 1
:00425B75 B856555555              mov eax, 55555556
:00425B7A F7E9                    imul ecx
:00425B7C 8BC2                    mov eax, edx
:00425B7E C1E81F                  shr eax, 1F
:00425B81 03C2                    add eax, edx
:00425B83 8D1440                  lea edx, dword[eax+2*eax]
:00425B86 2BCA                    sub ecx, edx
:00425B88 894C2418                mov dword[esp+18], ecx
:00425B8C 8BC8                    mov ecx, eax
:00425B8E B856555555              mov eax, 55555556
:00425B93 F7E9                    imul ecx
:00425B95 8BC2                    mov eax, edx
:00425B97 C1E81F                  shr eax, 1F
:00425B9A 03C2                    add eax, edx
:00425B9C 8D1440                  lea edx, dword[eax+2*eax]
:00425B9F 2BCA                    sub ecx, edx
:00425BA1 8BE8                    mov ebp, eax
:00425BA3 81E501000080            and ebp, 80000001
:00425BA9 894C2414                mov dword[esp+14], ecx
:00425BAD 7905                    jns 00425BB4
:00425BAF 4D                      dec ebp
:00425BB0 83CDFE                  or ebp, -00000002
:00425BB3 45                      inc ebp
---------
:00425BB4 99                      cdq
:00425BB5 2BC2                    sub eax, edx
:00425BB7 D1F8                    sar eax, 1
:00425BB9 8BC8                    mov ecx, eax
:00425BBB 81E101000080            and ecx, 80000001
:00425BC1 7905                    jns 00425BC8
:00425BC3 49                      dec ecx
:00425BC4 83C9FE                  or ecx, -00000002
:00425BC7 41                      inc ecx
---------
:00425BC8 99                      cdq
:00425BC9 2BC2                    sub eax, edx
:00425BCB D1F8                    sar eax, 1
:00425BCD 894C2438                mov dword[esp+38], ecx
:00425BD1 8BC8                    mov ecx, eax
:00425BD3 81E101000080            and ecx, 80000001
:00425BD9 7905                    jns 00425BE0
:00425BDB 49                      dec ecx
:00425BDC 83C9FE                  or ecx, -00000002
:00425BDF 41                      inc ecx
---------
:00425BE0 99                      cdq
:00425BE1 2BC2                    sub eax, edx
:00425BE3 D1F8                    sar eax, 1
:00425BE5 894C242C                mov dword[esp+2C], ecx
:00425BE9 8BC8                    mov ecx, eax
:00425BEB 81E101000080            and ecx, 80000001
:00425BF1 7905                    jns 00425BF8
:00425BF3 49                      dec ecx
:00425BF4 83C9FE                  or ecx, -00000002
:00425BF7 41                      inc ecx
---------
:00425BF8 99                      cdq
:00425BF9 2BC2                    sub eax, edx
:00425BFB 894C2428                mov dword[esp+28], ecx
:00425BFF 8BC8                    mov ecx, eax
:00425C01 D1F9                    sar ecx, 1
:00425C03 B856555555              mov eax, 55555556
:00425C08 F7E9                    imul ecx
:00425C0A 8BC2                    mov eax, edx
:00425C0C C1E81F                  shr eax, 1F
:00425C0F 03C2                    add eax, edx
:00425C11 8D1440                  lea edx, dword[eax+2*eax]
:00425C14 8BF8                    mov edi, eax
:00425C16 2BCA                    sub ecx, edx
:00425C18 B856555555              mov eax, 55555556
:00425C1D F7EF                    imul edi
:00425C1F 894C2420                mov dword[esp+20], ecx
:00425C23 8BCA                    mov ecx, edx
:00425C25 C1E91F                  shr ecx, 1F
:00425C28 03CA                    add ecx, edx
:00425C2A 8D0449                  lea eax, dword[ecx+2*ecx]
:00425C2D 2BF8                    sub edi, eax
:00425C2F B8398EE338              mov eax, 38E38E39
:00425C34 F7E9                    imul ecx
:00425C36 D1FA                    sar edx, 1
:00425C38 897C241C                mov dword[esp+1C], edi
:00425C3C 8BFA                    mov edi, edx
:00425C3E C1EF1F                  shr edi, 1F
:00425C41 03FA                    add edi, edx
:00425C43 8D14FF                  lea edx, dword[edi+8*edi]
:00425C46 2BCA                    sub ecx, edx
:00425C48 B8398EE338              mov eax, 38E38E39
:00425C4D F7EF                    imul edi
:00425C4F D1FA                    sar edx, 1
:00425C51 8BC2                    mov eax, edx
:00425C53 C1E81F                  shr eax, 1F
:00425C56 03C2                    add eax, edx
:00425C58 8B542438                mov edx, dword[esp+38]
:00425C5C 8D04C0                  lea eax, dword[eax+8*eax]
:00425C5F 2BF8                    sub edi, eax
:00425C61 8B442428                mov eax, dword[esp+28]
:00425C65 56                      push esi
:00425C66 897C2438                mov dword[esp+38], edi
:00425C6A 8D3C2A                  lea edi, dword[edx+ebp]
:00425C6D 8B542430                mov edx, dword[esp+30]
:00425C71 03C2                    add eax, edx
:00425C73 8B542418                mov edx, dword[esp+18]
:00425C77 52                      push edx
:00425C78 8B54243C                mov edx, dword[esp+3C]
:00425C7C 50                      push eax
:00425C7D 8944243C                mov dword[esp+3C], eax
:00425C81 8B442428                mov eax, dword[esp+28]
:00425C85 50                      push eax
:00425C86 8B442428                mov eax, dword[esp+28]
:00425C8A 52                      push edx
:00425C8B 8B542434                mov edx, dword[esp+34]
:00425C8F 53                      push ebx
:00425C90 50                      push eax
:00425C91 57                      push edi
:00425C92 52                      push edx
:00425C93 51                      push ecx
:00425C94 894C2464                mov dword[esp+64], ecx
:00425C98 E8A3FCFFFF              call 00425940
[/code]