Why Is Houdini Not Entered In The WCCC??

General discussion about computer chess...
Post Reply
BTO7
Posts: 101
Joined: Thu Jun 10, 2010 4:21 am

Re: Why Is Houdini Not Entered In The WCCC??

Post by BTO7 » Mon Aug 09, 2010 8:45 pm

Robert Houdart wrote:@Carl,
Going commercial is an option to fund at least partially the hardware and the expenses of a WCCC participation.
The question is which option would be preferred by the users: a free engine that hasn't participated in the WCCC or a $40 engine that has participated in the WCCC? Would make an interesting poll...

@Gerold,
I could surely include a short book with the next release, but so many good general purpose books are available that this may not be very useful.

Robert
Personally I really love and enjoy this engine. As a user I would rather it stay free and heck with the WCCC. Real chess engine fans know what the deal is anyways and besides you could maybe just put a donate option at the page and at least get a bit for your work.

Regards,
BT

User avatar
kingliveson
Posts: 1388
Joined: Thu Jun 10, 2010 1:22 am
Real Name: Franklin Titus
Location: 28°32'1"N 81°22'33"W

Re: Why Is Houdini Not Entered In The WCCC??

Post by kingliveson » Mon Aug 09, 2010 11:34 pm

It is a shame really that it had come to this point. When Houdini was initially released, Robert was asked a direct question whether or not it was an Ippolit derivative. His reply left me a little disappointed because prior to asking that question, the binary had been scanned with a disassembler. Houdini, like RobboLito does not support mpv and outputs similar pv in many positions; there was a post on CCC demonstrating it.

Houdini is a modified and improved RobboLito. Robert's improvement is overshadowed by his lack of honesty. When we have a case of verbatim code -- global function structure, search, eval, values, uci, etc, and yet the continuous insistence of only "taking ideas" is quite immodest. I cannot understand what sort of ego drives one to such a point of no return. The debate is over for me. Below are a couple examples of what you will see throughout Houdini's binary:


RobboLito 0.09 w32
Aug 4 2010 19:40:41
basic windows version by kranium, improved by sentinel

Code: Select all

.text:00425B60 ; =============== S U B R O U T I N E =======================================
.text:00425B60
.text:00425B60
.text:00425B60 sub_425B60      proc near               ; CODE XREF: sub_4269A0+2CFp
.text:00425B60
.text:00425B60 arg_0           = dword ptr  4
.text:00425B60 arg_4           = dword ptr  8
.text:00425B60 arg_8           = dword ptr  0Ch
.text:00425B60 arg_C           = dword ptr  10h
.text:00425B60 arg_10          = dword ptr  14h
.text:00425B60 arg_14          = dword ptr  18h
.text:00425B60 arg_18          = dword ptr  1Ch
.text:00425B60 arg_1C          = dword ptr  20h
.text:00425B60 arg_20          = dword ptr  24h
.text:00425B60 arg_24          = dword ptr  28h
.text:00425B60 arg_28          = dword ptr  2Ch
.text:00425B60 arg_2C          = dword ptr  30h
.text:00425B60 arg_30          = dword ptr  34h
.text:00425B60 arg_34          = dword ptr  38h
.text:00425B60
.text:00425B60                 mov     eax, [esp+arg_24]
.text:00425B64                 mov     ecx, [esp+arg_20]
.text:00425B68                 mov     edx, [esp+arg_8]
.text:00425B6C                 push    ebx
.text:00425B6D                 mov     ebx, [esp+4+arg_18]
.text:00425B71                 push    ebp
.text:00425B72                 mov     ebp, [esp+8+arg_30]
.text:00425B76                 push    esi
.text:00425B77                 mov     esi, [esp+0Ch+arg_34]
.text:00425B7B                 push    edi
.text:00425B7C                 lea     edi, [ecx+eax]
.text:00425B7F                 mov     eax, [esp+10h+arg_14]
.text:00425B83                 lea     ecx, [eax+ebx*2]
.text:00425B86                 mov     eax, [esp+10h+arg_4]
.text:00425B8A                 lea     ecx, [eax+ecx*2]
.text:00425B8D                 lea     eax, [ebp+esi*2+0]
.text:00425B91                 mov     [esp+10h+arg_30], edi
.text:00425B95                 lea     edi, [edi+eax*2]
.text:00425B98                 mov     eax, [esp+10h+arg_4]
.text:00425B9C                 lea     eax, [eax+ebx*2]
.text:00425B9F                 add     eax, ebx
.text:00425BA1                 add     eax, edx
.text:00425BA3                 add     ecx, edx
.text:00425BA5                 lea     edx, [eax+eax*2]
.text:00425BA8                 mov     eax, [esp+10h+arg_14]
.text:00425BAC                 lea     eax, [eax+eax*4]
.text:00425BAF                 add     edx, eax
.text:00425BB1                 mov     eax, [esp+10h+arg_20]
.text:00425BB5                 lea     eax, [eax+esi*2]
.text:00425BB8                 add     eax, esi
.text:00425BBA                 add     eax, [esp+10h+arg_24]
.text:00425BBE                 mov     [esp+10h+arg_24], 0Ah
.text:00425BC6                 lea     esi, [eax+eax*2]
.text:00425BC9                 lea     eax, [ebp+ebp*4+0]
.text:00425BCD                 add     esi, eax
.text:00425BCF                 cmp     [esp+10h+arg_0], 0
.text:00425BD4                 jnz     loc_4260A8
.text:00425BDA                 cmp     ecx, 1
.text:00425BDD                 jnz     short loc_425BE6
.text:00425BDF                 pop     edi
.text:00425BE0                 pop     esi
.text:00425BE1                 pop     ebp
.text:00425BE2                 xor     eax, eax
.text:00425BE4                 pop     ebx
.text:00425BE5                 retn
.text:00425BE6 ; ---------------------------------------------------------------------------
.text:00425BE6
.text:00425BE6 loc_425BE6:                             ; CODE XREF: sub_425B60+7Dj
.text:00425BE6                 mov     eax, 2
.text:00425BEB                 cmp     ecx, eax
.text:00425BED                 jnz     short loc_425C59
.text:00425BEF                 test    edi, edi
.text:00425BF1                 jnz     short loc_425C10
.text:00425BF3                 cmp     [esp+10h+arg_4], eax
.text:00425BF7                 jnz     loc_425CFC
.text:00425BFD                 xor     eax, eax
.text:00425BFF                 cmp     [esp+10h+arg_1C], 1
.text:00425C04                 pop     edi
.text:00425C05                 setl    al
.text:00425C08                 pop     esi
.text:00425C09                 pop     ebp
.text:00425C0A                 pop     ebx
.text:00425C0B                 dec     eax
.text:00425C0C                 and     eax, 3
.text:00425C0F                 retn
.text:00425C10 ; ---------------------------------------------------------------------------
.text:00425C10
.text:00425C10 loc_425C10:                             ; CODE XREF: sub_425B60+91j
.text:00425C10                 cmp     edi, 1
.text:00425C13                 jnz     short loc_425C47
.text:00425C15                 cmp     [esp+10h+arg_8], 2
.text:00425C1A                 mov     ecx, edi
.text:00425C1C                 mov     eax, ecx
.text:00425C1E                 jnz     short loc_425C29
.text:00425C20                 cmp     [esp+10h+arg_20], ecx
.text:00425C24                 jnz     short loc_425C29
.text:00425C26                 lea     eax, [edi+7]
.text:00425C29
.text:00425C29 loc_425C29:                             ; CODE XREF: sub_425B60+BEj
.text:00425C29                                         ; sub_425B60+C4j
.text:00425C29                 cmp     [esp+10h+arg_14], ecx
.text:00425C2D                 jnz     loc_425D00
.text:00425C33                 cmp     [esp+10h+arg_20], ecx
.text:00425C37                 jnz     loc_425D00
.text:00425C3D
.text:00425C3D loc_425C3D:                             ; CODE XREF: sub_425B60+244j
.text:00425C3D                                         ; sub_425B60+445j
.text:00425C3D                 pop     edi
.text:00425C3E                 pop     esi
.text:00425C3F                 pop     ebp
.text:00425C40                 mov     eax, 2
.text:00425C45                 pop     ebx
.text:00425C46                 retn
.text:00425C47 ; ---------------------------------------------------------------------------
.text:00425C47
.text:00425C47 loc_425C47:                             ; CODE XREF: sub_425B60+B3j
.text:00425C47                 cmp     edi, eax
.text:00425C49                 jnz     loc_425CFC
.text:00425C4F
.text:00425C4F loc_425C4F:                             ; CODE XREF: sub_425B60+479j
.text:00425C4F                 pop     edi
.text:00425C50                 pop     esi
.text:00425C51                 pop     ebp
.text:00425C52                 mov     eax, 1
.text:00425C57                 pop     ebx
.text:00425C58                 retn
.text:00425C59 ; ---------------------------------------------------------------------------
.text:00425C59
.text:00425C59 loc_425C59:                             ; CODE XREF: sub_425B60+8Dj
.text:00425C59                 cmp     ecx, 3
.text:00425C5C                 jnz     loc_425D45
.text:00425C62                 mov     ecx, [esp+10h+arg_14]
.text:00425C66                 cmp     ecx, 1
.text:00425C69                 jnz     loc_425D05
.text:00425C6F                 cmp     edi, eax
.text:00425C71                 jnz     loc_425CF7
.text:00425C77                 cmp     ebp, ecx
.text:00425C79                 jnz     short loc_425C98
.text:00425C7B                 mov     eax, ecx
.text:00425C7D                 cmp     [esp+10h+arg_4], ecx
.text:00425C81                 jz      short loc_425C87
.text:00425C83                 mov     eax, [esp+10h+arg_24]
.text:00425C87
.text:00425C87 loc_425C87:                             ; CODE XREF: sub_425B60+121j
.text:00425C87                 cmp     [esp+10h+arg_8], 1
.text:00425C8C                 jnz     short loc_425D00
.text:00425C8E                 pop     edi
.text:00425C8F                 pop     esi
.text:00425C90                 pop     ebp
.text:00425C91                 mov     eax, 1
.text:00425C96                 pop     ebx
.text:00425C97                 retn
.text:00425C98 ; ---------------------------------------------------------------------------
.text:00425C98
.text:00425C98 loc_425C98:                             ; CODE XREF: sub_425B60+119j
.text:00425C98                 test    ebp, ebp
.text:00425C9A                 jnz     short loc_425CFC
.text:00425C9C                 mov     edx, 1
.text:00425CA1                 cmp     [esp+10h+arg_8], edx
.text:00425CA5                 jnz     short loc_425CB7
.text:00425CA7                 cmp     [esp+10h+arg_20], eax
.text:00425CAB                 jnz     short loc_425CB7
.text:00425CAD
.text:00425CAD loc_425CAD:                             ; CODE XREF: sub_425B60+3CFj
.text:00425CAD                 pop     edi
.text:00425CAE                 pop     esi
.text:00425CAF                 pop     ebp
.text:00425CB0                 mov     eax, 6
.text:00425CB5                 pop     ebx
.text:00425CB6                 retn
.text:00425CB7 ; ---------------------------------------------------------------------------
.text:00425CB7
.text:00425CB7 loc_425CB7:                             ; CODE XREF: sub_425B60+145j
.text:00425CB7                                         ; sub_425B60+14Bj
.text:00425CB7                 cmp     [esp+10h+arg_20], edx
.text:00425CBB                 jnz     short loc_425D00
.text:00425CBD                 mov     ecx, [esp+10h+arg_C]
.text:00425CC1                 cmp     ecx, edx
.text:00425CC3                 jnz     short loc_425CCB
.text:00425CC5                 cmp     [esp+10h+arg_28], edx
.text:00425CC9                 jz      short loc_425CD7
.text:00425CCB
.text:00425CCB loc_425CCB:                             ; CODE XREF: sub_425B60+163j
.text:00425CCB                 cmp     [esp+10h+arg_10], edx
.text:00425CCF                 jnz     short loc_425CE3
.text:00425CD1                 cmp     [esp+10h+arg_2C], edx
.text:00425CD5                 jnz     short loc_425CDD
.text:00425CD7
.text:00425CD7 loc_425CD7:                             ; CODE XREF: sub_425B60+169j
.text:00425CD7                 cmp     [esp+10h+arg_10], edx
.text:00425CDB                 jnz     short loc_425CE3
.text:00425CDD
.text:00425CDD loc_425CDD:                             ; CODE XREF: sub_425B60+175j
.text:00425CDD                 cmp     [esp+10h+arg_28], edx
.text:00425CE1                 jz      short loc_425CED
.text:00425CE3
.text:00425CE3 loc_425CE3:                             ; CODE XREF: sub_425B60+16Fj
.text:00425CE3                                         ; sub_425B60+17Bj
.text:00425CE3                 cmp     ecx, edx
.text:00425CE5                 jnz     short loc_425D00
.text:00425CE7                 cmp     [esp+10h+arg_2C], edx
.text:00425CEB                 jnz     short loc_425D00
.text:00425CED
.text:00425CED loc_425CED:                             ; CODE XREF: sub_425B60+181j
.text:00425CED                 pop     edi
.text:00425CEE                 pop     esi
.text:00425CEF                 pop     ebp
.text:00425CF0                 mov     eax, 7
.text:00425CF5                 pop     ebx
.text:00425CF6                 retn
.text:00425CF7 ; ---------------------------------------------------------------------------
.text:00425CF7
.text:00425CF7 loc_425CF7:                             ; CODE XREF: sub_425B60+111j
.text:00425CF7                                         ; sub_425B60+1ABj
.text:00425CF7                 cmp     edi, 3
.text:00425CFA                 jz      short loc_425D00
.text:00425CFC
.text:00425CFC loc_425CFC:                             ; CODE XREF: sub_425B60+97j
.text:00425CFC                                         ; sub_425B60+E9j ...
.text:00425CFC                 mov     eax, [esp+10h+arg_24]
.text:00425D00
.text:00425D00 loc_425D00:                             ; CODE XREF: sub_425B60+CDj
.text:00425D00                                         ; sub_425B60+D7j ...
.text:00425D00                 pop     edi
.text:00425D01                 pop     esi
.text:00425D02                 pop     ebp
.text:00425D03                 pop     ebx
.text:00425D04                 retn
.text:00425D05 ; ---------------------------------------------------------------------------
.text:00425D05
.text:00425D05 loc_425D05:                             ; CODE XREF: sub_425B60+109j
.text:00425D05                 test    ecx, ecx
.text:00425D07                 jnz     short loc_425CFC
.text:00425D09                 cmp     edi, eax
.text:00425D0B                 jnz     short loc_425CF7
.text:00425D0D                 cmp     ebp, 1
.text:00425D10                 jnz     short loc_425D2D
.text:00425D12                 cmp     [esp+10h+arg_4], eax
.text:00425D16                 jz      short loc_425D1C
.text:00425D18                 mov     eax, [esp+10h+arg_24]
.text:00425D1C
.text:00425D1C loc_425D1C:                             ; CODE XREF: sub_425B60+1B6j
.text:00425D1C                 cmp     [esp+10h+arg_8], 2
.text:00425D21                 jnz     short loc_425D00
.text:00425D23                 pop     edi
.text:00425D24                 pop     esi
.text:00425D25                 pop     ebp
.text:00425D26                 mov     eax, 7
.text:00425D2B                 pop     ebx
.text:00425D2C                 retn
.text:00425D2D ; ---------------------------------------------------------------------------
.text:00425D2D
.text:00425D2D loc_425D2D:                             ; CODE XREF: sub_425B60+1B0j
.text:00425D2D                 test    ebp, ebp
.text:00425D2F                 jnz     short loc_425CFC
.text:00425D31                 cmp     [esp+10h+arg_8], eax
.text:00425D35                 jnz     short loc_425D00
.text:00425D37                 cmp     [esp+10h+arg_20], eax
.text:00425D3B                 jnz     short loc_425D00
.text:00425D3D                 pop     edi
.text:00425D3E                 pop     esi
.text:00425D3F                 lea     eax, [ebp+4]
.text:00425D42                 pop     ebp
.text:00425D43                 pop     ebx
.text:00425D44                 retn
.text:00425D45 ; ---------------------------------------------------------------------------
.text:00425D45
.text:00425D45 loc_425D45:                             ; CODE XREF: sub_425B60+FCj
.text:00425D45                 cmp     ecx, 4
.text:00425D48                 jnz     loc_425E2A
.text:00425D4E                 test    ebx, ebx
.text:00425D50                 jz      short loc_425D80
.text:00425D52                 cmp     edi, eax
.text:00425D54                 jnz     short loc_425D71
.text:00425D56                 mov     ecx, [esp+10h+arg_20]
.text:00425D5A                 cmp     ecx, eax
.text:00425D5C                 jz      short loc_425D84
.text:00425D5E                 cmp     ecx, 1
.text:00425D61                 jnz     short loc_425D68
.text:00425D63                 lea     eax, [ecx+7]
.text:00425D66                 jmp     short loc_425D84
.text:00425D68 ; ---------------------------------------------------------------------------
.text:00425D68
.text:00425D68 loc_425D68:                             ; CODE XREF: sub_425B60+201j
.text:00425D68                 test    ecx, ecx
.text:00425D6A                 jnz     short loc_425D80
.text:00425D6C                 lea     eax, [ecx+7]
.text:00425D6F                 jmp     short loc_425D84
.text:00425D71 ; ---------------------------------------------------------------------------
.text:00425D71
.text:00425D71 loc_425D71:                             ; CODE XREF: sub_425B60+1F4j
.text:00425D71                 mov     eax, 1
.text:00425D76                 cmp     edi, 3
.text:00425D79                 jz      short loc_425D84
.text:00425D7B                 cmp     edi, 4
.text:00425D7E                 jz      short loc_425D84
.text:00425D80
.text:00425D80 loc_425D80:                             ; CODE XREF: sub_425B60+1F0j
.text:00425D80                                         ; sub_425B60+20Aj
.text:00425D80                 mov     eax, [esp+10h+arg_24]
.text:00425D84
.text:00425D84 loc_425D84:                             ; CODE XREF: sub_425B60+1FCj
.text:00425D84                                         ; sub_425B60+206j ...
.text:00425D84                 mov     ecx, [esp+10h+arg_14]
.text:00425D88                 cmp     ecx, 2
.text:00425D8B                 jnz     short loc_425DBB
.text:00425D8D                 cmp     edi, ecx
.text:00425D8F                 jnz     short loc_425DA1
.text:00425D91                 test    ebp, ebp
.text:00425D93                 jnz     loc_425D00
.text:00425D99                 pop     edi
.text:00425D9A                 pop     esi
.text:00425D9B                 pop     ebp
.text:00425D9C                 lea     eax, [ecx+5]
.text:00425D9F                 pop     ebx
.text:00425DA0                 retn
.text:00425DA1 ; ---------------------------------------------------------------------------
.text:00425DA1
.text:00425DA1 loc_425DA1:                             ; CODE XREF: sub_425B60+22Fj
.text:00425DA1                 cmp     edi, 3
.text:00425DA4                 jz      loc_425C3D
.text:00425DAA                 cmp     edi, 4
.text:00425DAD                 jnz     loc_425D00
.text:00425DB3                 lea     eax, [edi-3]
.text:00425DB6                 pop     edi
.text:00425DB7                 pop     esi
.text:00425DB8                 pop     ebp
.text:00425DB9                 pop     ebx
.text:00425DBA                 retn
.text:00425DBB ; ---------------------------------------------------------------------------
.text:00425DBB
.text:00425DBB loc_425DBB:                             ; CODE XREF: sub_425B60+22Bj
.text:00425DBB                 cmp     ecx, 1
.text:00425DBE                 jnz     short loc_425DEE
.text:00425DC0                 cmp     edi, 3
.text:00425DC3                 jnz     short loc_425DDD
.text:00425DC5                 cmp     ebp, ecx
.text:00425DC7                 jz      loc_425F3D
.text:00425DCD
.text:00425DCD loc_425DCD:                             ; CODE XREF: sub_425B60+2A6j
.text:00425DCD                 test    ebp, ebp
.text:00425DCF                 jnz     loc_425D00
.text:00425DD5                 pop     edi
.text:00425DD6                 pop     esi
.text:00425DD7                 lea     eax, [ebp+2]
.text:00425DDA                 pop     ebp
.text:00425DDB                 pop     ebx
.text:00425DDC                 retn
.text:00425DDD ; ---------------------------------------------------------------------------
.text:00425DDD
.text:00425DDD loc_425DDD:                             ; CODE XREF: sub_425B60+263j
.text:00425DDD                 cmp     edi, 4
.text:00425DE0                 jnz     loc_425D00
.text:00425DE6                 lea     eax, [edi-2]
.text:00425DE9                 pop     edi
.text:00425DEA                 pop     esi
.text:00425DEB                 pop     ebp
.text:00425DEC                 pop     ebx
.text:00425DED                 retn
.text:00425DEE ; ---------------------------------------------------------------------------
.text:00425DEE
.text:00425DEE loc_425DEE:                             ; CODE XREF: sub_425B60+25Ej
.text:00425DEE                 test    ecx, ecx
.text:00425DF0                 jnz     loc_425D00
.text:00425DF6                 test    ebx, ebx
.text:00425DF8                 jnz     loc_425D00
.text:00425DFE                 cmp     edi, 3
.text:00425E01                 jnz     short loc_425E10
.text:00425E03                 cmp     ebp, 1
.text:00425E06                 jnz     short loc_425DCD
.text:00425E08                 pop     edi
.text:00425E09                 pop     esi
.text:00425E0A                 pop     ebp
.text:00425E0B                 lea     eax, [ecx+4]
.text:00425E0E                 pop     ebx
.text:00425E0F                 retn
.text:00425E10 ; ---------------------------------------------------------------------------
.text:00425E10
.text:00425E10 loc_425E10:                             ; CODE XREF: sub_425B60+2A1j
.text:00425E10                 cmp     edi, 4
.text:00425E13                 jnz     loc_425D00
.text:00425E19                 mov     eax, [esp+10h+arg_34]
.text:00425E1D                 neg     eax
.text:00425E1F                 pop     edi
.text:00425E20                 sbb     eax, eax
.text:00425E22                 pop     esi
.text:00425E23                 and     eax, 7
.text:00425E26                 pop     ebp
.text:00425E27                 inc     eax
.text:00425E28                 pop     ebx
.text:00425E29                 retn
.text:00425E2A ; ---------------------------------------------------------------------------
.text:00425E2A
.text:00425E2A loc_425E2A:                             ; CODE XREF: sub_425B60+1E8j
.text:00425E2A                 cmp     ecx, 5
.text:00425E2D                 jnz     loc_425F00
.text:00425E33                 test    ebx, ebx
.text:00425E35                 jz      short loc_425E40
.text:00425E37                 cmp     edi, 4
.text:00425E3A                 jz      short loc_425E6B
.text:00425E3C                 cmp     edi, ecx
.text:00425E3E                 jz      short loc_425E89
.text:00425E40
.text:00425E40 loc_425E40:                             ; CODE XREF: sub_425B60+2D5j
.text:00425E40                 mov     eax, [esp+10h+arg_24]
.text:00425E44
.text:00425E44 loc_425E44:                             ; CODE XREF: sub_425B60+30Dj
.text:00425E44                                         ; sub_425B60+320j ...
.text:00425E44                 mov     ecx, [esp+10h+arg_14]
.text:00425E48                 mov     edx, 1
.text:00425E4D                 cmp     ecx, edx
.text:00425E4F                 jnz     short loc_425EC1
.text:00425E51                 cmp     edi, 4
.text:00425E54                 jnz     short loc_425EB0
.text:00425E56                 mov     ecx, [esp+10h+arg_34]
.text:00425E5A                 test    ecx, ecx
.text:00425E5C                 jz      short loc_425E61
.text:00425E5E                 lea     eax, [edx+8]
.text:00425E61
.text:00425E61 loc_425E61:                             ; CODE XREF: sub_425B60+2FCj
.text:00425E61                 cmp     ebp, 2
.text:00425E64                 jnz     short loc_425E90
.text:00425E66                 lea     eax, [ebp+5]
.text:00425E69                 jmp     short loc_425E99
.text:00425E6B ; ---------------------------------------------------------------------------
.text:00425E6B
.text:00425E6B loc_425E6B:                             ; CODE XREF: sub_425B60+2DAj
.text:00425E6B                 cmp     ebp, eax
.text:00425E6D                 jnz     short loc_425E44
.text:00425E6F                 cmp     [esp+10h+arg_4], 0
.text:00425E74                 jz      short loc_425E7B
.text:00425E76                 mov     eax, 3
.text:00425E7B
.text:00425E7B loc_425E7B:                             ; CODE XREF: sub_425B60+314j
.text:00425E7B                 cmp     [esp+10h+arg_8], 0
.text:00425E80                 jz      short loc_425E44
.text:00425E82                 mov     eax, 7
.text:00425E87                 jmp     short loc_425E44
.text:00425E89 ; ---------------------------------------------------------------------------
.text:00425E89
.text:00425E89 loc_425E89:                             ; CODE XREF: sub_425B60+2DEj
.text:00425E89                 mov     eax, 1
.text:00425E8E                 jmp     short loc_425E44
.text:00425E90 ; ---------------------------------------------------------------------------
.text:00425E90
.text:00425E90 loc_425E90:                             ; CODE XREF: sub_425B60+304j
.text:00425E90                 cmp     ebp, edx
.text:00425E92                 jnz     short loc_425E99
.text:00425E94
.text:00425E94 loc_425E94:                             ; CODE XREF: sub_425B60+38Ej
.text:00425E94                 mov     eax, 3
.text:00425E99
.text:00425E99 loc_425E99:                             ; CODE XREF: sub_425B60+309j
.text:00425E99                                         ; sub_425B60+332j ...
.text:00425E99                 test    ecx, ecx
.text:00425E9B                 jnz     loc_425D00
.text:00425EA1                 test    ebp, ebp
.text:00425EA3
.text:00425EA3 loc_425EA3:                             ; CODE XREF: sub_425B60+39Ej
.text:00425EA3                 jnz     loc_425D00
.text:00425EA9                 pop     edi
.text:00425EAA                 pop     esi
.text:00425EAB                 pop     ebp
.text:00425EAC                 mov     eax, edx
.text:00425EAE                 pop     ebx
.text:00425EAF                 retn
.text:00425EB0 ; ---------------------------------------------------------------------------
.text:00425EB0
.text:00425EB0 loc_425EB0:                             ; CODE XREF: sub_425B60+2F4j
.text:00425EB0                 cmp     edi, 5
.text:00425EB3                 jnz     loc_425D00
.text:00425EB9                 lea     eax, [edi-3]
.text:00425EBC                 pop     edi
.text:00425EBD                 pop     esi
.text:00425EBE                 pop     ebp
.text:00425EBF                 pop     ebx
.text:00425EC0                 retn
.text:00425EC1 ; ---------------------------------------------------------------------------
.text:00425EC1
.text:00425EC1 loc_425EC1:                             ; CODE XREF: sub_425B60+2EFj
.text:00425EC1                 cmp     ecx, 2
.text:00425EC4                 jnz     loc_425D00
.text:00425ECA                 cmp     edi, 4
.text:00425ECD                 jnz     short loc_425EFB
.text:00425ECF                 mov     ecx, [esp+10h+arg_34]
.text:00425ED3                 test    ecx, ecx
.text:00425ED5                 jz      short loc_425EEB
.text:00425ED7                 cmp     [esp+10h+arg_8], edx
.text:00425EDB                 jnz     short loc_425EE0
.text:00425EDD                 lea     eax, [edi+4]
.text:00425EE0
.text:00425EE0 loc_425EE0:                             ; CODE XREF: sub_425B60+37Bj
.text:00425EE0                 cmp     [esp+10h+arg_4], edx
.text:00425EE4                 jnz     short loc_425EEB
.text:00425EE6                 mov     eax, 7
.text:00425EEB
.text:00425EEB loc_425EEB:                             ; CODE XREF: sub_425B60+375j
.text:00425EEB                                         ; sub_425B60+384j
.text:00425EEB                 cmp     ebp, 2
.text:00425EEE                 jz      short loc_425E94
.text:00425EF0                 cmp     ebp, edx
.text:00425EF2                 jnz     short loc_425E99
.text:00425EF4                 mov     eax, 2
.text:00425EF9                 jmp     short loc_425E99
.text:00425EFB ; ---------------------------------------------------------------------------
.text:00425EFB
.text:00425EFB loc_425EFB:                             ; CODE XREF: sub_425B60+36Dj
.text:00425EFB                 cmp     edi, 5
.text:00425EFE                 jmp     short loc_425EA3
.text:00425F00 ; ---------------------------------------------------------------------------
.text:00425F00
.text:00425F00 loc_425F00:                             ; CODE XREF: sub_425B60+2CDj
.text:00425F00                 cmp     ecx, 6
.text:00425F03                 jnz     loc_426060
.text:00425F09                 test    ebx, ebx
.text:00425F0B                 jz      loc_425FBB
.text:00425F11                 cmp     [esp+10h+arg_14], 0
.text:00425F16                 jz      short loc_425F72
.text:00425F18                 cmp     edi, 4
.text:00425F1B                 jnz     short loc_425F47
.text:00425F1D                 cmp     [esp+10h+arg_34], 0
.text:00425F22                 jnz     short loc_425F2C
.text:00425F24                 test    ebp, ebp
.text:00425F26                 jz      loc_425D00
.text:00425F2C
.text:00425F2C loc_425F2C:                             ; CODE XREF: sub_425B60+3C2j
.text:00425F2C                 cmp     ebp, 1
.text:00425F2F                 jz      loc_425CAD
.text:00425F35                 cmp     ebp, eax
.text:00425F37                 jnz     loc_425CFC
.text:00425F3D
.text:00425F3D loc_425F3D:                             ; CODE XREF: sub_425B60+267j
.text:00425F3D                                         ; sub_425B60+4BFj ...
.text:00425F3D                 pop     edi
.text:00425F3E                 pop     esi
.text:00425F3F                 pop     ebp
.text:00425F40                 mov     eax, 3
.text:00425F45                 pop     ebx
.text:00425F46                 retn
.text:00425F47 ; ---------------------------------------------------------------------------
.text:00425F47
.text:00425F47 loc_425F47:                             ; CODE XREF: sub_425B60+3BBj
.text:00425F47                 cmp     edi, 5
.text:00425F4A                 jnz     loc_425FEF
.text:00425F50                 cmp     [esp+10h+arg_34], 0
.text:00425F55                 jz      short loc_425F5C
.text:00425F57                 lea     eax, [edi-4]
.text:00425F5A                 jmp     short loc_425F60
.text:00425F5C ; ---------------------------------------------------------------------------
.text:00425F5C
.text:00425F5C loc_425F5C:                             ; CODE XREF: sub_425B60+3F5j
.text:00425F5C                 mov     eax, [esp+10h+arg_24]
.text:00425F60
.text:00425F60 loc_425F60:                             ; CODE XREF: sub_425B60+3FAj
.text:00425F60                 test    ebp, ebp
.text:00425F62                 jz      loc_425D00
.text:00425F68                 pop     edi
.text:00425F69                 pop     esi
.text:00425F6A                 pop     ebp
.text:00425F6B                 mov     eax, 1
.text:00425F70                 pop     ebx
.text:00425F71                 retn
.text:00425F72 ; ---------------------------------------------------------------------------
.text:00425F72
.text:00425F72 loc_425F72:                             ; CODE XREF: sub_425B60+3B6j
.text:00425F72                 cmp     edi, 4
.text:00425F75                 jnz     short loc_425F92
.text:00425F77                 cmp     [esp+10h+arg_34], 0
.text:00425F7C                 jnz     loc_425CFC
.text:00425F82                 test    ebp, ebp
.text:00425F84                 jnz     loc_425CFC
.text:00425F8A                 lea     eax, [edi+1]
.text:00425F8D                 pop     edi
.text:00425F8E                 pop     esi
.text:00425F8F                 pop     ebp
.text:00425F90                 pop     ebx
.text:00425F91                 retn
.text:00425F92 ; ---------------------------------------------------------------------------
.text:00425F92
.text:00425F92 loc_425F92:                             ; CODE XREF: sub_425B60+415j
.text:00425F92                 cmp     edi, 5
.text:00425F95                 jnz     short loc_425FEF
.text:00425F97                 cmp     [esp+10h+arg_34], 0
.text:00425F9C                 jnz     short loc_425FA2
.text:00425F9E                 mov     eax, [esp+10h+arg_24]
.text:00425FA2
.text:00425FA2 loc_425FA2:                             ; CODE XREF: sub_425B60+43Cj
.text:00425FA2                 cmp     ebp, 2
.text:00425FA5                 jz      loc_425C3D
.text:00425FAB                 cmp     ebp, 1
.text:00425FAE                 jnz     loc_425D00
.text:00425FB4                 pop     edi
.text:00425FB5                 pop     esi
.text:00425FB6                 mov     eax, ebp
.text:00425FB8                 pop     ebp
.text:00425FB9                 pop     ebx
.text:00425FBA                 retn
.text:00425FBB ; ---------------------------------------------------------------------------
.text:00425FBB
.text:00425FBB loc_425FBB:                             ; CODE XREF: sub_425B60+3ABj
.text:00425FBB                 mov     ecx, [esp+10h+arg_14]
.text:00425FBF                 cmp     ecx, eax
.text:00425FC1                 jnz     short loc_426000
.text:00425FC3                 cmp     edi, 5
.text:00425FC6                 jnz     short loc_425FEF
.text:00425FC8                 cmp     [esp+10h+arg_34], 0
.text:00425FCD                 lea     eax, [edi+2]
.text:00425FD0                 jnz     short loc_425FD6
.text:00425FD2                 mov     eax, [esp+10h+arg_24]
.text:00425FD6
.text:00425FD6 loc_425FD6:                             ; CODE XREF: sub_425B60+470j
.text:00425FD6                 cmp     ebp, 1
.text:00425FD9                 jz      loc_425C4F
.text:00425FDF                 cmp     ebp, 2
.text:00425FE2                 jnz     loc_425D00
.text:00425FE8                 pop     edi
.text:00425FE9                 pop     esi
.text:00425FEA                 mov     eax, ebp
.text:00425FEC                 pop     ebp
.text:00425FED                 pop     ebx
.text:00425FEE                 retn
.text:00425FEF ; ---------------------------------------------------------------------------
.text:00425FEF
.text:00425FEF loc_425FEF:                             ; CODE XREF: sub_425B60+3EAj
.text:00425FEF                                         ; sub_425B60+435j ...
.text:00425FEF                 cmp     edi, 6
.text:00425FF2                 jnz     loc_425CFC
.text:00425FF8                 lea     eax, [edi-5]
.text:00425FFB                 pop     edi
.text:00425FFC                 pop     esi
.text:00425FFD                 pop     ebp
.text:00425FFE                 pop     ebx
.text:00425FFF                 retn
.text:00426000 ; ---------------------------------------------------------------------------
.text:00426000
.text:00426000 loc_426000:                             ; CODE XREF: sub_425B60+461j
.text:00426000                 cmp     ecx, 1
.text:00426003                 jnz     loc_425CFC
.text:00426009                 cmp     edi, 5
.text:0042600C                 jnz     short loc_426036
.text:0042600E                 cmp     [esp+10h+arg_34], 0
.text:00426013                 lea     eax, [ecx+8]
.text:00426016                 jnz     short loc_42601C
.text:00426018                 mov     eax, [esp+10h+arg_24]
.text:0042601C
.text:0042601C loc_42601C:                             ; CODE XREF: sub_425B60+4B6j
.text:0042601C                 cmp     ebp, 2
.text:0042601F                 jz      loc_425F3D
.text:00426025                 cmp     ebp, 1
.text:00426028                 jnz     loc_425D00
.text:0042602E                 pop     edi
.text:0042602F                 pop     esi
.text:00426030                 lea     eax, [ebp+1]
.text:00426033                 pop     ebp
.text:00426034                 pop     ebx
.text:00426035                 retn
.text:00426036 ; ---------------------------------------------------------------------------
.text:00426036
.text:00426036 loc_426036:                             ; CODE XREF: sub_425B60+4ACj
.text:00426036                 cmp     edi, 6
.text:00426039                 jnz     loc_425CFC
.text:0042603F                 cmp     [esp+10h+arg_34], 0
.text:00426044                 lea     eax, [edi-5]
.text:00426047                 jz      loc_425D00
.text:0042604D                 lea     eax, [edi-4]
.text:00426050                 test    ebp, ebp
.text:00426052                 jz      loc_425D00
.text:00426058                 lea     eax, [edi-2]
.text:0042605B                 pop     edi
.text:0042605C                 pop     esi
.text:0042605D                 pop     ebp
.text:0042605E                 pop     ebx
.text:0042605F                 retn
.text:00426060 ; ---------------------------------------------------------------------------
.text:00426060
.text:00426060 loc_426060:                             ; CODE XREF: sub_425B60+3A3j
.text:00426060                 cmp     ecx, 7
.text:00426063                 jl      loc_425CFC
.text:00426069                 lea     ecx, [esi+4]
.text:0042606C                 cmp     edx, ecx
.text:0042606E                 mov     eax, 9
.text:00426073                 jg      short loc_426080
.text:00426075                 mov     eax, [esp+10h+arg_24]
.text:00426079                 jnz     short loc_426080
.text:0042607B                 mov     eax, 7
.text:00426080
.text:00426080 loc_426080:                             ; CODE XREF: sub_425B60+513j
.text:00426080                                         ; sub_425B60+519j
.text:00426080                 lea     ecx, [esi+3]
.text:00426083                 cmp     edx, ecx
.text:00426085                 jnz     short loc_42608C
.text:00426087                 mov     eax, 4
.text:0042608C
.text:0042608C loc_42608C:                             ; CODE XREF: sub_425B60+525j
.text:0042608C                 add     esi, 2
.text:0042608F                 cmp     edx, esi
.text:00426091                 jnz     short loc_426098
.text:00426093                 mov     eax, 2
.text:00426098
.text:00426098 loc_426098:                             ; CODE XREF: sub_425B60+531j
.text:00426098                 jge     loc_425D00
.text:0042609E                 pop     edi
.text:0042609F                 pop     esi
.text:004260A0                 pop     ebp
.text:004260A1                 mov     eax, 1
.text:004260A6                 pop     ebx
.text:004260A7                 retn
.text:004260A8 ; ---------------------------------------------------------------------------
.text:004260A8
.text:004260A8 loc_4260A8:                             ; CODE XREF: sub_425B60+74j
.text:004260A8                 mov     esi, 1
.text:004260AD                 cmp     [esp+10h+arg_0], esi
.text:004260B1                 jnz     loc_425CFC
.text:004260B7                 cmp     edi, esi
.text:004260B9                 jnz     short loc_4260F9
.text:004260BB                 cmp     ecx, esi
.text:004260BD                 jz      loc_425F3D
.text:004260C3                 cmp     ecx, 2
.text:004260C6                 jnz     loc_425CFC
.text:004260CC                 cmp     [esp+10h+arg_4], ecx
.text:004260D0                 jnz     short loc_4260E1
.text:004260D2                 xor     eax, eax
.text:004260D4                 cmp     [esp+10h+arg_1C], eax
.text:004260D8                 setnz   al
.text:004260DB                 lea     eax, [eax+eax+3]
.text:004260DF                 jmp     short loc_4260E5
.text:004260E1 ; ---------------------------------------------------------------------------
.text:004260E1
.text:004260E1 loc_4260E1:                             ; CODE XREF: sub_425B60+570j
.text:004260E1                 mov     eax, [esp+10h+arg_24]
.text:004260E5
.text:004260E5 loc_4260E5:                             ; CODE XREF: sub_425B60+57Fj
.text:004260E5                 cmp     [esp+10h+arg_14], esi
.text:004260E9                 jnz     loc_425D00
.text:004260EF                 pop     edi
.text:004260F0                 pop     esi
.text:004260F1                 pop     ebp
.text:004260F2                 mov     eax, 7
.text:004260F7                 pop     ebx
.text:004260F8                 retn
.text:004260F9 ; ---------------------------------------------------------------------------
.text:004260F9
.text:004260F9 loc_4260F9:                             ; CODE XREF: sub_425B60+559j
.text:004260F9                 cmp     edi, 2
.text:004260FC                 jnz     short loc_426135
.text:004260FE                 cmp     ebp, esi
.text:00426100                 jnz     short loc_42611C
.text:00426102                 cmp     ecx, edi
.text:00426104                 jnz     loc_425CFC
.text:0042610A                 cmp     [esp+10h+arg_14], esi
.text:0042610E                 jnz     loc_425CFC
.text:00426114                 lea     eax, [edi+6]
.text:00426117                 pop     edi
.text:00426118                 pop     esi
.text:00426119                 pop     ebp
.text:0042611A                 pop     ebx
.text:0042611B                 retn
.text:0042611C ; ---------------------------------------------------------------------------
.text:0042611C
.text:0042611C loc_42611C:                             ; CODE XREF: sub_425B60+5A0j
.text:0042611C                 test    ebp, ebp
.text:0042611E                 jnz     loc_425CFC
.text:00426124                 cmp     ecx, 2
.text:00426127                 jnz     loc_425CFC
.text:0042612D                 pop     edi
.text:0042612E                 pop     esi
.text:0042612F                 lea     eax, [ebp+4]
.text:00426132                 pop     ebp
.text:00426133                 pop     ebx
.text:00426134                 retn
.text:00426135 ; ---------------------------------------------------------------------------
.text:00426135
.text:00426135 loc_426135:                             ; CODE XREF: sub_425B60+59Cj
.text:00426135                 cmp     edi, 3
.text:00426138                 jl      short loc_42615C
.text:0042613A                 mov     edx, [esp+10h+arg_30]
.text:0042613E                 test    edx, edx
.text:00426140                 jle     short loc_42614B
.text:00426142                 mov     eax, 3
.text:00426147                 cmp     ecx, edi
.text:00426149                 jz      short loc_42614F
.text:0042614B
.text:0042614B loc_42614B:                             ; CODE XREF: sub_425B60+5E0j
.text:0042614B                 mov     eax, [esp+10h+arg_24]
.text:0042614F
.text:0042614F loc_42614F:                             ; CODE XREF: sub_425B60+5E9j
.text:0042614F                 test    edx, edx
.text:00426151                 jnz     short loc_426160
.text:00426153                 cmp     ecx, edi
.text:00426155                 jnz     short loc_426160
.text:00426157                 lea     eax, [edx+5]
.text:0042615A                 jmp     short loc_426160
.text:0042615C ; ---------------------------------------------------------------------------
.text:0042615C
.text:0042615C loc_42615C:                             ; CODE XREF: sub_425B60+5D8j
.text:0042615C                 mov     eax, [esp+10h+arg_24]
.text:00426160
.text:00426160 loc_426160:                             ; CODE XREF: sub_425B60+5F1j
.text:00426160                                         ; sub_425B60+5F5j ...
.text:00426160                 cmp     edi, 4
.text:00426163                 jnz     loc_425D00
.text:00426169                 cmp     [esp+10h+arg_34], esi
.text:0042616D                 jnz     loc_425D00
.text:00426173                 cmp     ecx, edi
.text:00426175                 jnz     loc_425D00
.text:0042617B                 lea     eax, [edi+3]
.text:0042617E                 pop     edi
.text:0042617F                 pop     esi
.text:00426180                 pop     ebp
.text:00426181                 pop     ebx
.text:00426182                 retn
.text:00426182 sub_425B60      endp
Houdini w32 1_CPU
build 2010-05-15
by Robert Houdart

Code: Select all

.text:00427B30 ; =============== S U B R O U T I N E =======================================
.text:00427B30
.text:00427B30
.text:00427B30 sub_427B30      proc near               ; CODE XREF: sub_428340:loc_428611p
.text:00427B30
.text:00427B30 arg_0           = dword ptr  4
.text:00427B30 arg_4           = dword ptr  8
.text:00427B30 arg_8           = dword ptr  0Ch
.text:00427B30 arg_C           = dword ptr  10h
.text:00427B30 arg_10          = dword ptr  14h
.text:00427B30 arg_14          = dword ptr  18h
.text:00427B30 arg_18          = dword ptr  1Ch
.text:00427B30 arg_1C          = dword ptr  20h
.text:00427B30 arg_20          = dword ptr  24h
.text:00427B30 arg_24          = dword ptr  28h
.text:00427B30 arg_28          = dword ptr  2Ch
.text:00427B30 arg_2C          = dword ptr  30h
.text:00427B30 arg_30          = dword ptr  34h
.text:00427B30 arg_34          = dword ptr  38h
.text:00427B30
.text:00427B30                 mov     eax, [esp+arg_14]
.text:00427B34                 mov     edx, [esp+arg_8]
.text:00427B38                 push    ebx
.text:00427B39                 mov     ebx, [esp+4+arg_18]
.text:00427B3D                 lea     ecx, [eax+ebx*2]
.text:00427B40                 mov     eax, [esp+4+arg_4]
.text:00427B44                 lea     ecx, [eax+ecx*2]
.text:00427B47                 push    ebp
.text:00427B48                 mov     ebp, [esp+8+arg_30]
.text:00427B4C                 push    esi
.text:00427B4D                 mov     esi, [esp+0Ch+arg_34]
.text:00427B51                 push    edi
.text:00427B52                 mov     edi, [esp+10h+arg_20]
.text:00427B56                 add     edi, [esp+10h+arg_24]
.text:00427B5A                 lea     eax, [ebp+esi*2+0]
.text:00427B5E                 mov     [esp+10h+arg_30], edi
.text:00427B62                 lea     edi, [edi+eax*2]
.text:00427B65                 mov     eax, [esp+10h+arg_4]
.text:00427B69                 lea     eax, [eax+ebx*2]
.text:00427B6C                 add     eax, ebx
.text:00427B6E                 add     eax, edx
.text:00427B70                 add     ecx, edx
.text:00427B72                 lea     edx, [eax+eax*2]
.text:00427B75                 mov     eax, [esp+10h+arg_14]
.text:00427B79                 lea     eax, [eax+eax*4]
.text:00427B7C                 add     edx, eax
.text:00427B7E                 mov     eax, [esp+10h+arg_20]
.text:00427B82                 lea     eax, [eax+esi*2]
.text:00427B85                 add     eax, esi
.text:00427B87                 add     eax, [esp+10h+arg_24]
.text:00427B8B                 mov     [esp+10h+arg_24], 0Ah
.text:00427B93                 lea     esi, [eax+eax*2]
.text:00427B96                 lea     eax, [ebp+ebp*4+0]
.text:00427B9A                 add     esi, eax
.text:00427B9C                 cmp     [esp+10h+arg_0], 0
.text:00427BA1                 jnz     loc_42806C
.text:00427BA7                 cmp     ecx, 1
.text:00427BAA                 jnz     short loc_427BB3
.text:00427BAC                 pop     edi
.text:00427BAD                 pop     esi
.text:00427BAE                 pop     ebp
.text:00427BAF                 xor     eax, eax
.text:00427BB1                 pop     ebx
.text:00427BB2                 retn
.text:00427BB3 ; ---------------------------------------------------------------------------
.text:00427BB3
.text:00427BB3 loc_427BB3:                             ; CODE XREF: sub_427B30+7Aj
.text:00427BB3                 mov     eax, 2
.text:00427BB8                 cmp     ecx, eax
.text:00427BBA                 jnz     short loc_427C1F
.text:00427BBC                 test    edi, edi
.text:00427BBE                 jnz     short loc_427BD9
.text:00427BC0                 cmp     [esp+10h+arg_4], eax
.text:00427BC4                 jnz     loc_427CC2
.text:00427BCA                 pop     edi
.text:00427BCB                 xor     eax, eax
.text:00427BCD                 cmp     [esp+0Ch+arg_1C], 1
.text:00427BD2                 pop     esi
.text:00427BD3                 pop     ebp
.text:00427BD4                 setnl   al
.text:00427BD7                 pop     ebx
.text:00427BD8                 retn
.text:00427BD9 ; ---------------------------------------------------------------------------
.text:00427BD9
.text:00427BD9 loc_427BD9:                             ; CODE XREF: sub_427B30+8Ej
.text:00427BD9                 cmp     edi, 1
.text:00427BDC                 jnz     short loc_427C0D
.text:00427BDE                 cmp     [esp+10h+arg_8], 2
.text:00427BE3                 mov     ecx, edi
.text:00427BE5                 mov     eax, ecx
.text:00427BE7                 jnz     short loc_427BF2
.text:00427BE9                 cmp     [esp+10h+arg_20], ecx
.text:00427BED                 jnz     short loc_427BF2
.text:00427BEF                 lea     eax, [edi+7]
.text:00427BF2
.text:00427BF2 loc_427BF2:                             ; CODE XREF: sub_427B30+B7j
.text:00427BF2                                         ; sub_427B30+BDj
.text:00427BF2                 cmp     [esp+10h+arg_14], ecx
.text:00427BF6                 jnz     loc_427CC6
.text:00427BFC                 cmp     [esp+10h+arg_20], ecx
.text:00427C00                 jnz     loc_427CC6
.text:00427C06                 pop     edi
.text:00427C07                 pop     esi
.text:00427C08                 pop     ebp
.text:00427C09                 mov     eax, ecx
.text:00427C0B                 pop     ebx
.text:00427C0C                 retn
.text:00427C0D ; ---------------------------------------------------------------------------
.text:00427C0D
.text:00427C0D loc_427C0D:                             ; CODE XREF: sub_427B30+ACj
.text:00427C0D                 cmp     edi, eax
.text:00427C0F                 jnz     loc_427CC2
.text:00427C15
.text:00427C15 loc_427C15:                             ; CODE XREF: sub_427B30+46Dj
.text:00427C15                 pop     edi
.text:00427C16                 pop     esi
.text:00427C17                 pop     ebp
.text:00427C18                 mov     eax, 1
.text:00427C1D                 pop     ebx
.text:00427C1E                 retn
.text:00427C1F ; ---------------------------------------------------------------------------
.text:00427C1F
.text:00427C1F loc_427C1F:                             ; CODE XREF: sub_427B30+8Aj
.text:00427C1F                 cmp     ecx, 3
.text:00427C22                 jnz     loc_427D0B
.text:00427C28                 mov     ecx, [esp+10h+arg_14]
.text:00427C2C                 cmp     ecx, 1
.text:00427C2F                 jnz     loc_427CCB
.text:00427C35                 cmp     edi, eax
.text:00427C37                 jnz     loc_427CBD
.text:00427C3D                 cmp     ebp, ecx
.text:00427C3F                 jnz     short loc_427C5E
.text:00427C41                 mov     eax, ecx
.text:00427C43                 cmp     [esp+10h+arg_4], ecx
.text:00427C47                 jz      short loc_427C4D
.text:00427C49                 mov     eax, [esp+10h+arg_24]
.text:00427C4D
.text:00427C4D loc_427C4D:                             ; CODE XREF: sub_427B30+117j
.text:00427C4D                 cmp     [esp+10h+arg_8], 1
.text:00427C52                 jnz     short loc_427CC6
.text:00427C54                 pop     edi
.text:00427C55                 pop     esi
.text:00427C56                 pop     ebp
.text:00427C57                 mov     eax, 1
.text:00427C5C                 pop     ebx
.text:00427C5D                 retn
.text:00427C5E ; ---------------------------------------------------------------------------
.text:00427C5E
.text:00427C5E loc_427C5E:                             ; CODE XREF: sub_427B30+10Fj
.text:00427C5E                 test    ebp, ebp
.text:00427C60                 jnz     short loc_427CC2
.text:00427C62                 mov     edx, 1
.text:00427C67                 cmp     [esp+10h+arg_8], edx
.text:00427C6B                 jnz     short loc_427C7D
.text:00427C6D                 cmp     [esp+10h+arg_20], eax
.text:00427C71                 jnz     short loc_427C7D
.text:00427C73
.text:00427C73 loc_427C73:                             ; CODE XREF: sub_427B30+3C3j
.text:00427C73                 pop     edi
.text:00427C74                 pop     esi
.text:00427C75                 pop     ebp
.text:00427C76                 mov     eax, 6
.text:00427C7B                 pop     ebx
.text:00427C7C                 retn
.text:00427C7D ; ---------------------------------------------------------------------------
.text:00427C7D
.text:00427C7D loc_427C7D:                             ; CODE XREF: sub_427B30+13Bj
.text:00427C7D                                         ; sub_427B30+141j
.text:00427C7D                 cmp     [esp+10h+arg_20], edx
.text:00427C81                 jnz     short loc_427CC6
.text:00427C83                 mov     ecx, [esp+10h+arg_C]
.text:00427C87                 cmp     ecx, edx
.text:00427C89                 jnz     short loc_427C91
.text:00427C8B                 cmp     [esp+10h+arg_28], edx
.text:00427C8F                 jz      short loc_427C9D
.text:00427C91
.text:00427C91 loc_427C91:                             ; CODE XREF: sub_427B30+159j
.text:00427C91                 cmp     [esp+10h+arg_10], edx
.text:00427C95                 jnz     short loc_427CA9
.text:00427C97                 cmp     [esp+10h+arg_2C], edx
.text:00427C9B                 jnz     short loc_427CA3
.text:00427C9D
.text:00427C9D loc_427C9D:                             ; CODE XREF: sub_427B30+15Fj
.text:00427C9D                 cmp     [esp+10h+arg_10], edx
.text:00427CA1                 jnz     short loc_427CA9
.text:00427CA3
.text:00427CA3 loc_427CA3:                             ; CODE XREF: sub_427B30+16Bj
.text:00427CA3                 cmp     [esp+10h+arg_28], edx
.text:00427CA7                 jz      short loc_427CB3
.text:00427CA9
.text:00427CA9 loc_427CA9:                             ; CODE XREF: sub_427B30+165j
.text:00427CA9                                         ; sub_427B30+171j
.text:00427CA9                 cmp     ecx, edx
.text:00427CAB                 jnz     short loc_427CC6
.text:00427CAD                 cmp     [esp+10h+arg_2C], edx
.text:00427CB1                 jnz     short loc_427CC6
.text:00427CB3
.text:00427CB3 loc_427CB3:                             ; CODE XREF: sub_427B30+177j
.text:00427CB3                 pop     edi
.text:00427CB4                 pop     esi
.text:00427CB5                 pop     ebp
.text:00427CB6                 mov     eax, 7
.text:00427CBB                 pop     ebx
.text:00427CBC                 retn
.text:00427CBD ; ---------------------------------------------------------------------------
.text:00427CBD
.text:00427CBD loc_427CBD:                             ; CODE XREF: sub_427B30+107j
.text:00427CBD                                         ; sub_427B30+1A1j
.text:00427CBD                 cmp     edi, 3
.text:00427CC0                 jz      short loc_427CC6
.text:00427CC2
.text:00427CC2 loc_427CC2:                             ; CODE XREF: sub_427B30+94j
.text:00427CC2                                         ; sub_427B30+DFj ...
.text:00427CC2                 mov     eax, [esp+10h+arg_24]
.text:00427CC6
.text:00427CC6 loc_427CC6:                             ; CODE XREF: sub_427B30+C6j
.text:00427CC6                                         ; sub_427B30+D0j ...
.text:00427CC6                 pop     edi
.text:00427CC7                 pop     esi
.text:00427CC8                 pop     ebp
.text:00427CC9                 pop     ebx
.text:00427CCA                 retn
.text:00427CCB ; ---------------------------------------------------------------------------
.text:00427CCB
.text:00427CCB loc_427CCB:                             ; CODE XREF: sub_427B30+FFj
.text:00427CCB                 test    ecx, ecx
.text:00427CCD                 jnz     short loc_427CC2
.text:00427CCF                 cmp     edi, eax
.text:00427CD1                 jnz     short loc_427CBD
.text:00427CD3                 cmp     ebp, 1
.text:00427CD6                 jnz     short loc_427CF3
.text:00427CD8                 cmp     [esp+10h+arg_4], eax
.text:00427CDC                 jz      short loc_427CE2
.text:00427CDE                 mov     eax, [esp+10h+arg_24]
.text:00427CE2
.text:00427CE2 loc_427CE2:                             ; CODE XREF: sub_427B30+1ACj
.text:00427CE2                 cmp     [esp+10h+arg_8], 2
.text:00427CE7                 jnz     short loc_427CC6
.text:00427CE9                 pop     edi
.text:00427CEA                 pop     esi
.text:00427CEB                 pop     ebp
.text:00427CEC                 mov     eax, 7
.text:00427CF1                 pop     ebx
.text:00427CF2                 retn
.text:00427CF3 ; ---------------------------------------------------------------------------
.text:00427CF3
.text:00427CF3 loc_427CF3:                             ; CODE XREF: sub_427B30+1A6j
.text:00427CF3                 test    ebp, ebp
.text:00427CF5                 jnz     short loc_427CC2
.text:00427CF7                 cmp     [esp+10h+arg_8], eax
.text:00427CFB                 jnz     short loc_427CC6
.text:00427CFD                 cmp     [esp+10h+arg_20], eax
.text:00427D01                 jnz     short loc_427CC6
.text:00427D03                 pop     edi
.text:00427D04                 pop     esi
.text:00427D05                 lea     eax, [ebp+4]
.text:00427D08                 pop     ebp
.text:00427D09                 pop     ebx
.text:00427D0A                 retn
.text:00427D0B ; ---------------------------------------------------------------------------
.text:00427D0B
.text:00427D0B loc_427D0B:                             ; CODE XREF: sub_427B30+F2j
.text:00427D0B                 cmp     ecx, 4
.text:00427D0E                 jnz     loc_427DEE
.text:00427D14                 test    ebx, ebx
.text:00427D16                 jz      short loc_427D46
.text:00427D18                 cmp     edi, eax
.text:00427D1A                 jnz     short loc_427D37
.text:00427D1C                 mov     ecx, [esp+10h+arg_20]
.text:00427D20                 cmp     ecx, eax
.text:00427D22                 jz      short loc_427D4A
.text:00427D24                 cmp     ecx, 1
.text:00427D27                 jnz     short loc_427D2E
.text:00427D29                 lea     eax, [ecx+7]
.text:00427D2C                 jmp     short loc_427D4A
.text:00427D2E ; ---------------------------------------------------------------------------
.text:00427D2E
.text:00427D2E loc_427D2E:                             ; CODE XREF: sub_427B30+1F7j
.text:00427D2E                 test    ecx, ecx
.text:00427D30                 jnz     short loc_427D46
.text:00427D32                 lea     eax, [ecx+7]
.text:00427D35                 jmp     short loc_427D4A
.text:00427D37 ; ---------------------------------------------------------------------------
.text:00427D37
.text:00427D37 loc_427D37:                             ; CODE XREF: sub_427B30+1EAj
.text:00427D37                 mov     eax, 1
.text:00427D3C                 cmp     edi, 3
.text:00427D3F                 jz      short loc_427D4A
.text:00427D41                 cmp     edi, 4
.text:00427D44                 jz      short loc_427D4A
.text:00427D46
.text:00427D46 loc_427D46:                             ; CODE XREF: sub_427B30+1E6j
.text:00427D46                                         ; sub_427B30+200j
.text:00427D46                 mov     eax, [esp+10h+arg_24]
.text:00427D4A
.text:00427D4A loc_427D4A:                             ; CODE XREF: sub_427B30+1F2j
.text:00427D4A                                         ; sub_427B30+1FCj ...
.text:00427D4A                 mov     ecx, [esp+10h+arg_14]
.text:00427D4E                 cmp     ecx, 2
.text:00427D51                 jnz     short loc_427D7D
.text:00427D53                 cmp     edi, ecx
.text:00427D55                 jnz     short loc_427D67
.text:00427D57                 test    ebp, ebp
.text:00427D59                 jnz     loc_427CC6
.text:00427D5F                 pop     edi
.text:00427D60                 pop     esi
.text:00427D61                 pop     ebp
.text:00427D62                 lea     eax, [ecx+5]
.text:00427D65                 pop     ebx
.text:00427D66                 retn
.text:00427D67 ; ---------------------------------------------------------------------------
.text:00427D67
.text:00427D67 loc_427D67:                             ; CODE XREF: sub_427B30+225j
.text:00427D67                 cmp     edi, 3
.text:00427D6A                 jz      short loc_427D97
.text:00427D6C                 cmp     edi, 4
.text:00427D6F                 jnz     loc_427CC6
.text:00427D75                 lea     eax, [edi-3]
.text:00427D78                 pop     edi
.text:00427D79                 pop     esi
.text:00427D7A                 pop     ebp
.text:00427D7B                 pop     ebx
.text:00427D7C                 retn
.text:00427D7D ; ---------------------------------------------------------------------------
.text:00427D7D
.text:00427D7D loc_427D7D:                             ; CODE XREF: sub_427B30+221j
.text:00427D7D                 cmp     ecx, 1
.text:00427D80                 jnz     short loc_427DB2
.text:00427D82                 cmp     edi, 3
.text:00427D85                 jnz     short loc_427DA1
.text:00427D87                 cmp     ebp, ecx
.text:00427D89                 jz      loc_427F01
.text:00427D8F
.text:00427D8F loc_427D8F:                             ; CODE XREF: sub_427B30+29Aj
.text:00427D8F                 test    ebp, ebp
.text:00427D91                 jnz     loc_427CC6
.text:00427D97
.text:00427D97 loc_427D97:                             ; CODE XREF: sub_427B30+23Aj
.text:00427D97                                         ; sub_427B30+439j
.text:00427D97                 pop     edi
.text:00427D98                 pop     esi
.text:00427D99                 pop     ebp
.text:00427D9A                 mov     eax, 2
.text:00427D9F                 pop     ebx
.text:00427DA0                 retn
.text:00427DA1 ; ---------------------------------------------------------------------------
.text:00427DA1
.text:00427DA1 loc_427DA1:                             ; CODE XREF: sub_427B30+255j
.text:00427DA1                 cmp     edi, 4
.text:00427DA4                 jnz     loc_427CC6
.text:00427DAA                 lea     eax, [edi-2]
.text:00427DAD                 pop     edi
.text:00427DAE                 pop     esi
.text:00427DAF                 pop     ebp
.text:00427DB0                 pop     ebx
.text:00427DB1                 retn
.text:00427DB2 ; ---------------------------------------------------------------------------
.text:00427DB2
.text:00427DB2 loc_427DB2:                             ; CODE XREF: sub_427B30+250j
.text:00427DB2                 test    ecx, ecx
.text:00427DB4                 jnz     loc_427CC6
.text:00427DBA                 test    ebx, ebx
.text:00427DBC                 jnz     loc_427CC6
.text:00427DC2                 cmp     edi, 3
.text:00427DC5                 jnz     short loc_427DD4
.text:00427DC7                 cmp     ebp, 1
.text:00427DCA                 jnz     short loc_427D8F
.text:00427DCC                 pop     edi
.text:00427DCD                 pop     esi
.text:00427DCE                 pop     ebp
.text:00427DCF                 lea     eax, [ecx+4]
.text:00427DD2                 pop     ebx
.text:00427DD3                 retn
.text:00427DD4 ; ---------------------------------------------------------------------------
.text:00427DD4
.text:00427DD4 loc_427DD4:                             ; CODE XREF: sub_427B30+295j
.text:00427DD4                 cmp     edi, 4
.text:00427DD7                 jnz     loc_427CC6
.text:00427DDD                 mov     eax, [esp+10h+arg_34]
.text:00427DE1                 neg     eax
.text:00427DE3                 pop     edi
.text:00427DE4                 sbb     eax, eax
.text:00427DE6                 pop     esi
.text:00427DE7                 and     eax, 7
.text:00427DEA                 pop     ebp
.text:00427DEB                 inc     eax
.text:00427DEC                 pop     ebx
.text:00427DED                 retn
.text:00427DEE ; ---------------------------------------------------------------------------
.text:00427DEE
.text:00427DEE loc_427DEE:                             ; CODE XREF: sub_427B30+1DEj
.text:00427DEE                 cmp     ecx, 5
.text:00427DF1                 jnz     loc_427EC4
.text:00427DF7                 test    ebx, ebx
.text:00427DF9                 jz      short loc_427E04
.text:00427DFB                 cmp     edi, 4
.text:00427DFE                 jz      short loc_427E2F
.text:00427E00                 cmp     edi, ecx
.text:00427E02                 jz      short loc_427E4D
.text:00427E04
.text:00427E04 loc_427E04:                             ; CODE XREF: sub_427B30+2C9j
.text:00427E04                 mov     eax, [esp+10h+arg_24]
.text:00427E08
.text:00427E08 loc_427E08:                             ; CODE XREF: sub_427B30+301j
.text:00427E08                                         ; sub_427B30+314j ...
.text:00427E08                 mov     ecx, [esp+10h+arg_14]
.text:00427E0C                 mov     edx, 1
.text:00427E11                 cmp     ecx, edx
.text:00427E13                 jnz     short loc_427E85
.text:00427E15                 cmp     edi, 4
.text:00427E18                 jnz     short loc_427E74
.text:00427E1A                 mov     ecx, [esp+10h+arg_34]
.text:00427E1E                 test    ecx, ecx
.text:00427E20                 jz      short loc_427E25
.text:00427E22                 lea     eax, [edx+8]
.text:00427E25
.text:00427E25 loc_427E25:                             ; CODE XREF: sub_427B30+2F0j
.text:00427E25                 cmp     ebp, 2
.text:00427E28                 jnz     short loc_427E54
.text:00427E2A                 lea     eax, [ebp+5]
.text:00427E2D                 jmp     short loc_427E5D
.text:00427E2F ; ---------------------------------------------------------------------------
.text:00427E2F
.text:00427E2F loc_427E2F:                             ; CODE XREF: sub_427B30+2CEj
.text:00427E2F                 cmp     ebp, eax
.text:00427E31                 jnz     short loc_427E08
.text:00427E33                 cmp     [esp+10h+arg_4], 0
.text:00427E38                 jz      short loc_427E3F
.text:00427E3A                 mov     eax, 3
.text:00427E3F
.text:00427E3F loc_427E3F:                             ; CODE XREF: sub_427B30+308j
.text:00427E3F                 cmp     [esp+10h+arg_8], 0
.text:00427E44                 jz      short loc_427E08
.text:00427E46                 mov     eax, 7
.text:00427E4B                 jmp     short loc_427E08
.text:00427E4D ; ---------------------------------------------------------------------------
.text:00427E4D
.text:00427E4D loc_427E4D:                             ; CODE XREF: sub_427B30+2D2j
.text:00427E4D                 mov     eax, 1
.text:00427E52                 jmp     short loc_427E08
.text:00427E54 ; ---------------------------------------------------------------------------
.text:00427E54
.text:00427E54 loc_427E54:                             ; CODE XREF: sub_427B30+2F8j
.text:00427E54                 cmp     ebp, edx
.text:00427E56                 jnz     short loc_427E5D
.text:00427E58
.text:00427E58 loc_427E58:                             ; CODE XREF: sub_427B30+382j
.text:00427E58                 mov     eax, 3
.text:00427E5D
.text:00427E5D loc_427E5D:                             ; CODE XREF: sub_427B30+2FDj
.text:00427E5D                                         ; sub_427B30+326j ...
.text:00427E5D                 test    ecx, ecx
.text:00427E5F                 jnz     loc_427CC6
.text:00427E65                 test    ebp, ebp
.text:00427E67
.text:00427E67 loc_427E67:                             ; CODE XREF: sub_427B30+392j
.text:00427E67                 jnz     loc_427CC6
.text:00427E6D                 pop     edi
.text:00427E6E                 pop     esi
.text:00427E6F                 pop     ebp
.text:00427E70                 mov     eax, edx
.text:00427E72                 pop     ebx
.text:00427E73                 retn
.text:00427E74 ; ---------------------------------------------------------------------------
.text:00427E74
.text:00427E74 loc_427E74:                             ; CODE XREF: sub_427B30+2E8j
.text:00427E74                 cmp     edi, 5
.text:00427E77                 jnz     loc_427CC6
.text:00427E7D                 lea     eax, [edi-3]
.text:00427E80                 pop     edi
.text:00427E81                 pop     esi
.text:00427E82                 pop     ebp
.text:00427E83                 pop     ebx
.text:00427E84                 retn
.text:00427E85 ; ---------------------------------------------------------------------------
.text:00427E85
.text:00427E85 loc_427E85:                             ; CODE XREF: sub_427B30+2E3j
.text:00427E85                 cmp     ecx, 2
.text:00427E88                 jnz     loc_427CC6
.text:00427E8E                 cmp     edi, 4
.text:00427E91                 jnz     short loc_427EBF
.text:00427E93                 mov     ecx, [esp+10h+arg_34]
.text:00427E97                 test    ecx, ecx
.text:00427E99                 jz      short loc_427EAF
.text:00427E9B                 cmp     [esp+10h+arg_8], edx
.text:00427E9F                 jnz     short loc_427EA4
.text:00427EA1                 lea     eax, [edi+4]
.text:00427EA4
.text:00427EA4 loc_427EA4:                             ; CODE XREF: sub_427B30+36Fj
.text:00427EA4                 cmp     [esp+10h+arg_4], edx
.text:00427EA8                 jnz     short loc_427EAF
.text:00427EAA                 mov     eax, 7
.text:00427EAF
.text:00427EAF loc_427EAF:                             ; CODE XREF: sub_427B30+369j
.text:00427EAF                                         ; sub_427B30+378j
.text:00427EAF                 cmp     ebp, 2
.text:00427EB2                 jz      short loc_427E58
.text:00427EB4                 cmp     ebp, edx
.text:00427EB6                 jnz     short loc_427E5D
.text:00427EB8                 mov     eax, 2
.text:00427EBD                 jmp     short loc_427E5D
.text:00427EBF ; ---------------------------------------------------------------------------
.text:00427EBF
.text:00427EBF loc_427EBF:                             ; CODE XREF: sub_427B30+361j
.text:00427EBF                 cmp     edi, 5
.text:00427EC2                 jmp     short loc_427E67
.text:00427EC4 ; ---------------------------------------------------------------------------
.text:00427EC4
.text:00427EC4 loc_427EC4:                             ; CODE XREF: sub_427B30+2C1j
.text:00427EC4                 cmp     ecx, 6
.text:00427EC7                 jnz     loc_428024
.text:00427ECD                 test    ebx, ebx
.text:00427ECF                 jz      loc_427F7F
.text:00427ED5                 cmp     [esp+10h+arg_14], 0
.text:00427EDA                 jz      short loc_427F36
.text:00427EDC                 cmp     edi, 4
.text:00427EDF                 jnz     short loc_427F0B
.text:00427EE1                 cmp     [esp+10h+arg_34], 0
.text:00427EE6                 jnz     short loc_427EF0
.text:00427EE8                 test    ebp, ebp
.text:00427EEA                 jz      loc_427CC6
.text:00427EF0
.text:00427EF0 loc_427EF0:                             ; CODE XREF: sub_427B30+3B6j
.text:00427EF0                 cmp     ebp, 1
.text:00427EF3                 jz      loc_427C73
.text:00427EF9                 cmp     ebp, eax
.text:00427EFB                 jnz     loc_427CC2
.text:00427F01
.text:00427F01 loc_427F01:                             ; CODE XREF: sub_427B30+259j
.text:00427F01                                         ; sub_427B30+4B3j ...
.text:00427F01                 pop     edi
.text:00427F02                 pop     esi
.text:00427F03                 pop     ebp
.text:00427F04                 mov     eax, 3
.text:00427F09                 pop     ebx
.text:00427F0A                 retn
.text:00427F0B ; ---------------------------------------------------------------------------
.text:00427F0B
.text:00427F0B loc_427F0B:                             ; CODE XREF: sub_427B30+3AFj
.text:00427F0B                 cmp     edi, 5
.text:00427F0E                 jnz     loc_427FB3
.text:00427F14                 cmp     [esp+10h+arg_34], 0
.text:00427F19                 jz      short loc_427F20
.text:00427F1B                 lea     eax, [edi-4]
.text:00427F1E                 jmp     short loc_427F24
.text:00427F20 ; ---------------------------------------------------------------------------
.text:00427F20
.text:00427F20 loc_427F20:                             ; CODE XREF: sub_427B30+3E9j
.text:00427F20                 mov     eax, [esp+10h+arg_24]
.text:00427F24
.text:00427F24 loc_427F24:                             ; CODE XREF: sub_427B30+3EEj
.text:00427F24                 test    ebp, ebp
.text:00427F26                 jz      loc_427CC6
.text:00427F2C                 pop     edi
.text:00427F2D                 pop     esi
.text:00427F2E                 pop     ebp
.text:00427F2F                 mov     eax, 1
.text:00427F34                 pop     ebx
.text:00427F35                 retn
.text:00427F36 ; ---------------------------------------------------------------------------
.text:00427F36
.text:00427F36 loc_427F36:                             ; CODE XREF: sub_427B30+3AAj
.text:00427F36                 cmp     edi, 4
.text:00427F39                 jnz     short loc_427F56
.text:00427F3B                 cmp     [esp+10h+arg_34], 0
.text:00427F40                 jnz     loc_427CC2
.text:00427F46                 test    ebp, ebp
.text:00427F48                 jnz     loc_427CC2
.text:00427F4E                 lea     eax, [edi+1]
.text:00427F51                 pop     edi
.text:00427F52                 pop     esi
.text:00427F53                 pop     ebp
.text:00427F54                 pop     ebx
.text:00427F55                 retn
.text:00427F56 ; ---------------------------------------------------------------------------
.text:00427F56
.text:00427F56 loc_427F56:                             ; CODE XREF: sub_427B30+409j
.text:00427F56                 cmp     edi, 5
.text:00427F59                 jnz     short loc_427FB3
.text:00427F5B                 cmp     [esp+10h+arg_34], 0
.text:00427F60                 jnz     short loc_427F66
.text:00427F62                 mov     eax, [esp+10h+arg_24]
.text:00427F66
.text:00427F66 loc_427F66:                             ; CODE XREF: sub_427B30+430j
.text:00427F66                 cmp     ebp, 2
.text:00427F69                 jz      loc_427D97
.text:00427F6F                 cmp     ebp, 1
.text:00427F72                 jnz     loc_427CC6
.text:00427F78                 pop     edi
.text:00427F79                 pop     esi
.text:00427F7A                 mov     eax, ebp
.text:00427F7C                 pop     ebp
.text:00427F7D                 pop     ebx
.text:00427F7E                 retn
.text:00427F7F ; ---------------------------------------------------------------------------
.text:00427F7F
.text:00427F7F loc_427F7F:                             ; CODE XREF: sub_427B30+39Fj
.text:00427F7F                 mov     ecx, [esp+10h+arg_14]
.text:00427F83                 cmp     ecx, eax
.text:00427F85                 jnz     short loc_427FC4
.text:00427F87                 cmp     edi, 5
.text:00427F8A                 jnz     short loc_427FB3
.text:00427F8C                 cmp     [esp+10h+arg_34], 0
.text:00427F91                 lea     eax, [edi+2]
.text:00427F94                 jnz     short loc_427F9A
.text:00427F96                 mov     eax, [esp+10h+arg_24]
.text:00427F9A
.text:00427F9A loc_427F9A:                             ; CODE XREF: sub_427B30+464j
.text:00427F9A                 cmp     ebp, 1
.text:00427F9D                 jz      loc_427C15
.text:00427FA3                 cmp     ebp, 2
.text:00427FA6                 jnz     loc_427CC6
.text:00427FAC                 pop     edi
.text:00427FAD                 pop     esi
.text:00427FAE                 mov     eax, ebp
.text:00427FB0                 pop     ebp
.text:00427FB1                 pop     ebx
.text:00427FB2                 retn
.text:00427FB3 ; ---------------------------------------------------------------------------
.text:00427FB3
.text:00427FB3 loc_427FB3:                             ; CODE XREF: sub_427B30+3DEj
.text:00427FB3                                         ; sub_427B30+429j ...
.text:00427FB3                 cmp     edi, 6
.text:00427FB6                 jnz     loc_427CC2
.text:00427FBC                 lea     eax, [edi-5]
.text:00427FBF                 pop     edi
.text:00427FC0                 pop     esi
.text:00427FC1                 pop     ebp
.text:00427FC2                 pop     ebx
.text:00427FC3                 retn
.text:00427FC4 ; ---------------------------------------------------------------------------
.text:00427FC4
.text:00427FC4 loc_427FC4:                             ; CODE XREF: sub_427B30+455j
.text:00427FC4                 cmp     ecx, 1
.text:00427FC7                 jnz     loc_427CC2
.text:00427FCD                 cmp     edi, 5
.text:00427FD0                 jnz     short loc_427FFA
.text:00427FD2                 cmp     [esp+10h+arg_34], 0
.text:00427FD7                 lea     eax, [ecx+8]
.text:00427FDA                 jnz     short loc_427FE0
.text:00427FDC                 mov     eax, [esp+10h+arg_24]
.text:00427FE0
.text:00427FE0 loc_427FE0:                             ; CODE XREF: sub_427B30+4AAj
.text:00427FE0                 cmp     ebp, 2
.text:00427FE3                 jz      loc_427F01
.text:00427FE9                 cmp     ebp, 1
.text:00427FEC                 jnz     loc_427CC6
.text:00427FF2                 pop     edi
.text:00427FF3                 pop     esi
.text:00427FF4                 lea     eax, [ebp+1]
.text:00427FF7                 pop     ebp
.text:00427FF8                 pop     ebx
.text:00427FF9                 retn
.text:00427FFA ; ---------------------------------------------------------------------------
.text:00427FFA
.text:00427FFA loc_427FFA:                             ; CODE XREF: sub_427B30+4A0j
.text:00427FFA                 cmp     edi, 6
.text:00427FFD                 jnz     loc_427CC2
.text:00428003                 cmp     [esp+10h+arg_34], 0
.text:00428008                 lea     eax, [edi-5]
.text:0042800B                 jz      loc_427CC6
.text:00428011                 lea     eax, [edi-4]
.text:00428014                 test    ebp, ebp
.text:00428016                 jz      loc_427CC6
.text:0042801C                 lea     eax, [edi-2]
.text:0042801F                 pop     edi
.text:00428020                 pop     esi
.text:00428021                 pop     ebp
.text:00428022                 pop     ebx
.text:00428023                 retn
.text:00428024 ; ---------------------------------------------------------------------------
.text:00428024
.text:00428024 loc_428024:                             ; CODE XREF: sub_427B30+397j
.text:00428024                 cmp     ecx, 7
.text:00428027                 jl      loc_427CC2
.text:0042802D                 lea     ecx, [esi+4]
.text:00428030                 mov     eax, 9
.text:00428035                 cmp     edx, ecx
.text:00428037                 jg      short loc_428044
.text:00428039                 mov     eax, [esp+10h+arg_24]
.text:0042803D                 jnz     short loc_428044
.text:0042803F                 mov     eax, 7
.text:00428044
.text:00428044 loc_428044:                             ; CODE XREF: sub_427B30+507j
.text:00428044                                         ; sub_427B30+50Dj
.text:00428044                 lea     ecx, [esi+3]
.text:00428047                 cmp     edx, ecx
.text:00428049                 jnz     short loc_428050
.text:0042804B                 mov     eax, 4
.text:00428050
.text:00428050 loc_428050:                             ; CODE XREF: sub_427B30+519j
.text:00428050                 add     esi, 2
.text:00428053                 cmp     edx, esi
.text:00428055                 jnz     short loc_42805C
.text:00428057                 mov     eax, 2
.text:0042805C
.text:0042805C loc_42805C:                             ; CODE XREF: sub_427B30+525j
.text:0042805C                 jge     loc_427CC6
.text:00428062                 pop     edi
.text:00428063                 pop     esi
.text:00428064                 pop     ebp
.text:00428065                 mov     eax, 1
.text:0042806A                 pop     ebx
.text:0042806B                 retn
.text:0042806C ; ---------------------------------------------------------------------------
.text:0042806C
.text:0042806C loc_42806C:                             ; CODE XREF: sub_427B30+71j
.text:0042806C                 mov     esi, 1
.text:00428071                 cmp     [esp+10h+arg_0], esi
.text:00428075                 jnz     loc_427CC2
.text:0042807B                 cmp     edi, esi
.text:0042807D                 jnz     short loc_4280BD
.text:0042807F                 cmp     ecx, esi
.text:00428081                 jz      loc_427F01
.text:00428087                 cmp     ecx, 2
.text:0042808A                 jnz     loc_427CC2
.text:00428090                 cmp     [esp+10h+arg_4], ecx
.text:00428094                 jnz     short loc_4280A5
.text:00428096                 xor     eax, eax
.text:00428098                 cmp     [esp+10h+arg_1C], eax
.text:0042809C                 setnz   al
.text:0042809F                 lea     eax, [eax+eax+3]
.text:004280A3                 jmp     short loc_4280A9
.text:004280A5 ; ---------------------------------------------------------------------------
.text:004280A5
.text:004280A5 loc_4280A5:                             ; CODE XREF: sub_427B30+564j
.text:004280A5                 mov     eax, [esp+10h+arg_24]
.text:004280A9
.text:004280A9 loc_4280A9:                             ; CODE XREF: sub_427B30+573j
.text:004280A9                 cmp     [esp+10h+arg_14], esi
.text:004280AD                 jnz     loc_427CC6
.text:004280B3                 pop     edi
.text:004280B4                 pop     esi
.text:004280B5                 pop     ebp
.text:004280B6                 mov     eax, 7
.text:004280BB                 pop     ebx
.text:004280BC                 retn
.text:004280BD ; ---------------------------------------------------------------------------
.text:004280BD
.text:004280BD loc_4280BD:                             ; CODE XREF: sub_427B30+54Dj
.text:004280BD                 cmp     edi, 2
.text:004280C0                 jnz     short loc_4280F9
.text:004280C2                 cmp     ebp, esi
.text:004280C4                 jnz     short loc_4280E0
.text:004280C6                 cmp     ecx, edi
.text:004280C8                 jnz     loc_427CC2
.text:004280CE                 cmp     [esp+10h+arg_14], esi
.text:004280D2                 jnz     loc_427CC2
.text:004280D8                 lea     eax, [edi+6]
.text:004280DB                 pop     edi
.text:004280DC                 pop     esi
.text:004280DD                 pop     ebp
.text:004280DE                 pop     ebx
.text:004280DF                 retn
.text:004280E0 ; ---------------------------------------------------------------------------
.text:004280E0
.text:004280E0 loc_4280E0:                             ; CODE XREF: sub_427B30+594j
.text:004280E0                 test    ebp, ebp
.text:004280E2                 jnz     loc_427CC2
.text:004280E8                 cmp     ecx, 2
.text:004280EB                 jnz     loc_427CC2
.text:004280F1                 pop     edi
.text:004280F2                 pop     esi
.text:004280F3                 lea     eax, [ebp+4]
.text:004280F6                 pop     ebp
.text:004280F7                 pop     ebx
.text:004280F8                 retn
.text:004280F9 ; ---------------------------------------------------------------------------
.text:004280F9
.text:004280F9 loc_4280F9:                             ; CODE XREF: sub_427B30+590j
.text:004280F9                 cmp     edi, 3
.text:004280FC                 jl      short loc_428120
.text:004280FE                 mov     edx, [esp+10h+arg_30]
.text:00428102                 test    edx, edx
.text:00428104                 jle     short loc_42810F
.text:00428106                 mov     eax, 3
.text:0042810B                 cmp     ecx, edi
.text:0042810D                 jz      short loc_428113
.text:0042810F
.text:0042810F loc_42810F:                             ; CODE XREF: sub_427B30+5D4j
.text:0042810F                 mov     eax, [esp+10h+arg_24]
.text:00428113
.text:00428113 loc_428113:                             ; CODE XREF: sub_427B30+5DDj
.text:00428113                 test    edx, edx
.text:00428115                 jnz     short loc_428124
.text:00428117                 cmp     ecx, edi
.text:00428119                 jnz     short loc_428124
.text:0042811B                 lea     eax, [edx+5]
.text:0042811E                 jmp     short loc_428124
.text:00428120 ; ---------------------------------------------------------------------------
.text:00428120
.text:00428120 loc_428120:                             ; CODE XREF: sub_427B30+5CCj
.text:00428120                 mov     eax, [esp+10h+arg_24]
.text:00428124
.text:00428124 loc_428124:                             ; CODE XREF: sub_427B30+5E5j
.text:00428124                                         ; sub_427B30+5E9j ...
.text:00428124                 cmp     edi, 4
.text:00428127                 jnz     loc_427CC6
.text:0042812D                 cmp     [esp+10h+arg_34], esi
.text:00428131                 jnz     loc_427CC6
.text:00428137                 cmp     ecx, edi
.text:00428139                 jnz     loc_427CC6
.text:0042813F                 lea     eax, [edi+3]
.text:00428142                 pop     edi
.text:00428143                 pop     esi
.text:00428144                 pop     ebp
.text:00428145                 pop     ebx
.text:00428146                 retn
.text:00428146 sub_427B30      endp
RobboLito 009 Source Code values.c

Code: Select all

    static int load_white(int white_pawn, int white_knight, int white_bishop, int white_light, int white_dark,
       int white_rook, int white_queen, int black_pawn, int black_knight, int black_bishop, int black_light,
       int black_dark, int black_rook, int black_queen)
    {
       int white_minor, black_minor, white_phase, black_phase, white_load, white_value, black_value;
       white_minor = white_bishop + white_knight;
       black_minor = black_bishop + black_knight;
       white_phase = white_minor + 2 * white_rook + 4 * white_queen;
       black_phase = black_minor + 2 * black_rook + 4 * black_queen;
       white_value = 3 * (white_bishop + white_knight) + 5 * white_rook + 9 * white_queen;
       black_value = 3 * (black_bishop + black_knight) + 5 * black_rook + 9 * black_queen;
       white_load = 10;

       if (!white_pawn)
       {
          if (white_phase == 1)
             white_load = 0;

          if (white_phase == 2)
          {
             if (black_phase == 0)
             {
                if (white_knight == 2)
                {
                   if (black_pawn >= 1)
                      white_load = 3;
                   else
                      white_load = 0;
                }
             }

             if (black_phase == 1)
             {
                white_load = 1;

                if (white_bishop == 2 && black_knight == 1)
                   white_load = 8;

                if (white_rook == 1 && black_knight == 1)
                   white_load = 2;
             }

             if (black_phase == 2)
                white_load = 1;
          }

          if (white_phase == 3 && white_rook == 1)
          {
             if (black_phase == 2 && black_rook == 1)
             {
                if (white_knight == 1)
                   white_load = 1;

                if (white_bishop == 1)
                   white_load = 1;
             }

             if (black_phase == 2 && black_rook == 0)
             {
                white_load = 2;

                if (white_bishop == 1 && black_knight == 2)
                   white_load = 6;

                if (black_knight == 1
                   && ((white_light == 1 && black_light == 1) || (white_dark == 1 && black_dark == 1)))
                   white_load = 2;

                if (black_knight == 1
                   && ((white_dark == 1 && black_light == 1) || (white_light == 1 && black_dark == 1)))
                   white_load = 7;
             }

             if (black_phase == 3)
                white_load = 2;
          }

          if (white_phase == 3 && white_rook == 0)
          {
             if (black_phase == 2 && black_rook == 1)
             {
                if (white_knight == 2)
                   white_load = 2;

                if (white_bishop == 2)
                   white_load = 7;
             }

             if (black_phase == 2 && black_rook == 0)
             {
                white_load = 2;

                if (white_bishop == 2 && black_knight == 2)
                   white_load = 4;
             }

             if (black_phase == 3)
                white_load = 2;
          }

          if (white_phase == 4 && white_queen)
          {
             if (black_phase == 2 && black_knight == 2)
                white_load = 2;

             if (black_phase == 2 && black_knight == 1)
                white_load = 8;

             if (black_phase == 2 && black_knight == 0)
                white_load = 7;

             if (black_phase == 3)
                white_load = 1;

             if (black_phase == 4)
                white_load = 1;
          }

          if (white_phase == 4 && white_rook == 2)
          {
             if (black_phase == 2 && black_rook == 0)
                white_load = 7;

             if (black_phase == 3)
                white_load = 2;

             if (black_phase == 4)
                white_load = 1;
          }

          if (white_phase == 4 && white_rook == 1)
          {
             if (black_phase == 3 && black_rook == 1)
                white_load = 3;

             if (black_phase == 3 && black_rook == 0)
                white_load = 2;

             if (black_phase == 4)
                white_load = 2;
          }

          if (white_phase == 4 && white_rook == 0 && white_queen == 0)
          {
             if (black_phase == 3 && black_rook == 1)
                white_load = 4;

             if (black_phase == 3 && black_rook == 0)
                white_load = 2;

             if (black_phase == 4 && black_queen)
                white_load = 8;

             if (black_phase == 4 && black_queen == 0)
                white_load = 1;
          }

          if (white_phase == 5 && white_queen)
          {
             if (black_phase == 4)
                white_load = 2;

             if (black_phase == 5)
                white_load = 1;

             if (black_phase == 4 && black_rook == 2)
             {
                if (white_knight)
                   white_load = 3;

                if (white_bishop)
                   white_load = 7;
             }

             if (black_phase == 5)
                white_load = 1;
          }

          if (white_phase == 5 && white_rook == 1)
          {
             if (black_phase == 4 && black_queen)
                white_load = 9;

             if (black_phase == 4 && black_rook == 2)
                white_load = 7;

             if (black_phase == 4 && black_rook == 1)
                white_load = 3;

             if (black_phase == 4 && black_queen == 0 && black_rook == 0)
                white_load = 1;

             if (black_phase == 5)
                white_load = 2;
          }

          if (white_phase == 5 && white_rook == 2)
          {
             if (black_phase == 4 && black_queen && white_bishop == 1)
                white_load = 8;

             if (black_phase == 4 && black_queen && white_knight == 1)
                white_load = 7;

             if (black_phase == 4 && black_rook == 2)
                white_load = 3;

             if (black_phase == 4 && black_rook == 1)
                white_load = 2;

             if (black_phase == 4 && black_queen == 0 && black_rook == 0)
                white_load = 1;

             if (black_phase == 5)
                white_load = 1;
          }

          if (white_phase == 6 && white_queen && white_rook)
          {
             if (black_phase == 4 && black_queen == 0 && black_rook == 0)
                white_load = 2;

             if (black_phase == 5 && black_queen)
                white_load = 1;

             if (black_phase == 4 && black_rook == 1)
                white_load = 6;

             if (black_phase == 4 && black_rook == 2)
                white_load = 3;

             if (black_phase == 5 && black_rook)
                white_load = 1;

             if (black_phase == 6)
                white_load = 1;
          }

          if (white_phase == 6 && white_queen && white_rook == 0)
          {
             if (black_phase == 4 && black_queen == 0 && black_rook == 0)
                white_load = 5;

             if (black_phase == 5 && black_queen)
                white_load = 2;

             if (black_phase == 5 && black_rook == 2)
                white_load = 2;

             if (black_phase == 5 && black_rook == 1)
                white_load = 1;

             if (black_phase == 6)
                white_load = 1;
          }

          if (white_phase == 6 && white_queen == 0 && white_rook == 2)
          {
             if (black_phase == 5 && black_queen)
                white_load = 7;

             if (black_phase == 5 && black_rook == 1)
                white_load = 1;

             if (black_phase == 5 && black_rook == 2)
                white_load = 2;

             if (black_phase == 6)
                white_load = 1;
          }

          if (white_phase == 6 && white_queen == 0 && white_rook == 1)
          {
             if (black_phase == 5 && black_queen)
                white_load = 9;

             if (black_phase == 5 && black_rook == 2)
                white_load = 3;

             if (black_phase == 5 && black_rook == 1)
                white_load = 2;

             if (black_phase == 6)
                white_load = 1;

             if (black_phase == 6 && black_queen)
                white_load = 2;

             if (black_phase == 6 && black_queen && black_rook)
                white_load = 4;
          }

          if (white_phase >= 7)
          {
             if (white_value > black_value + 4)
                white_load = 9;

             if (white_value == black_value + 4)
                white_load = 7;

             if (white_value == black_value + 3)
                white_load = 4;

             if (white_value == black_value + 2)
                white_load = 2;

             if (white_value < black_value + 2)
                white_load = 1;
          }
       }

       if (white_pawn == 1)
       {
          if (black_phase == 1)
          {
             if (white_phase == 1)
                white_load = 3;

             if (white_phase == 2 && white_knight == 2)
             {
                if (black_pawn == 0)
                   white_load = 3;
                else
                   white_load = 5;
             }

             if (white_phase == 2 && white_rook == 1)
                white_load = 7;
          }

          if (black_phase == 2 && black_rook == 1 && white_phase == 2 && white_rook == 1)
             white_load = 8;

          if (black_phase == 2 && black_rook == 0 && white_phase == 2)
             white_load = 4;

          if (black_phase >= 3 && black_minor > 0 && white_phase == black_phase)
             white_load = 3;

          if (black_phase >= 3 && black_minor == 0 && white_phase == black_phase)
             white_load = 5;

          if (black_phase == 4 && black_queen == 1 && white_phase == black_phase)
             white_load = 7;
       }
       return white_load;
    }
RobboLito 0.09 w32
Aug 4 2010 19:40:41
basic windows version by kranium, improved by sentinel

Code: Select all

.text:004269A0 ; =============== S U B R O U T I N E =======================================
.text:004269A0
.text:004269A0
.text:004269A0 sub_4269A0      proc near               ; CODE XREF: _main+76p
.text:004269A0
.text:004269A0 var_3C          = dword ptr -3Ch
.text:004269A0 var_38          = dword ptr -38h
.text:004269A0 var_34          = dword ptr -34h
.text:004269A0 var_30          = dword ptr -30h
.text:004269A0 var_2C          = dword ptr -2Ch
.text:004269A0 var_28          = dword ptr -28h
.text:004269A0 var_24          = dword ptr -24h
.text:004269A0 var_20          = dword ptr -20h
.text:004269A0 var_1C          = dword ptr -1Ch
.text:004269A0 var_18          = dword ptr -18h
.text:004269A0 var_14          = dword ptr -14h
.text:004269A0 var_10          = dword ptr -10h
.text:004269A0 var_C           = dword ptr -0Ch
.text:004269A0 var_8           = dword ptr -8
.text:004269A0 var_4           = dword ptr -4
.text:004269A0 arg_0           = dword ptr  4
.text:004269A0
.text:004269A0                 mov     eax, [esp+arg_0]
.text:004269A4                 sub     esp, 40h
.text:004269A7                 push    ebx
.text:004269A8                 push    ebp
.text:004269A9                 mov     ebx, eax
.text:004269AB                 and     ebx, 80000001h
.text:004269B1                 push    esi
.text:004269B2                 push    edi
.text:004269B3                 jns     short loc_4269BA
.text:004269B5                 dec     ebx
.text:004269B6                 or      ebx, 0FFFFFFFEh
.text:004269B9                 inc     ebx
.text:004269BA
.text:004269BA loc_4269BA:                             ; CODE XREF: sub_4269A0+13j
.text:004269BA                 cdq
.text:004269BB                 sub     eax, edx
.text:004269BD                 sar     eax, 1
.text:004269BF                 mov     esi, eax
.text:004269C1                 and     esi, 80000001h
.text:004269C7                 jns     short loc_4269CE
.text:004269C9                 dec     esi
.text:004269CA                 or      esi, 0FFFFFFFEh
.text:004269CD                 inc     esi
.text:004269CE
.text:004269CE loc_4269CE:                             ; CODE XREF: sub_4269A0+27j
.text:004269CE                 cdq
.text:004269CF                 sub     eax, edx
.text:004269D1                 mov     ecx, eax
.text:004269D3                 sar     ecx, 1
.text:004269D5                 mov     eax, 55555556h
.text:004269DA                 imul    ecx
.text:004269DC                 mov     eax, edx
.text:004269DE                 shr     eax, 1Fh
.text:004269E1                 add     eax, edx
.text:004269E3                 lea     edx, [eax+eax*2]
.text:004269E6                 sub     ecx, edx
.text:004269E8                 mov     [esp+50h+var_38], ecx
.text:004269EC                 mov     ecx, eax
.text:004269EE                 mov     eax, 55555556h
.text:004269F3                 imul    ecx
.text:004269F5                 mov     eax, edx
.text:004269F7                 shr     eax, 1Fh
.text:004269FA                 add     eax, edx
.text:004269FC                 lea     edx, [eax+eax*2]
.text:004269FF                 sub     ecx, edx
.text:00426A01                 mov     ebp, eax
.text:00426A03                 and     ebp, 80000001h
.text:00426A09                 mov     [esp+50h+var_3C], ecx
.text:00426A0D                 jns     short loc_426A14
.text:00426A0F                 dec     ebp
.text:00426A10                 or      ebp, 0FFFFFFFEh
.text:00426A13                 inc     ebp
.text:00426A14
.text:00426A14 loc_426A14:                             ; CODE XREF: sub_4269A0+6Dj
.text:00426A14                 cdq
.text:00426A15                 sub     eax, edx
.text:00426A17                 sar     eax, 1
.text:00426A19                 mov     ecx, eax
.text:00426A1B                 and     ecx, 80000001h
.text:00426A21                 jns     short loc_426A28
.text:00426A23                 dec     ecx
.text:00426A24                 or      ecx, 0FFFFFFFEh
.text:00426A27                 inc     ecx
.text:00426A28
.text:00426A28 loc_426A28:                             ; CODE XREF: sub_4269A0+81j
.text:00426A28                 cdq
.text:00426A29                 sub     eax, edx
.text:00426A2B                 sar     eax, 1
.text:00426A2D                 mov     [esp+50h+var_18], ecx
.text:00426A31                 mov     ecx, eax
.text:00426A33                 and     ecx, 80000001h
.text:00426A39                 jns     short loc_426A40
.text:00426A3B                 dec     ecx
.text:00426A3C                 or      ecx, 0FFFFFFFEh
.text:00426A3F                 inc     ecx
.text:00426A40
.text:00426A40 loc_426A40:                             ; CODE XREF: sub_4269A0+99j
.text:00426A40                 cdq
.text:00426A41                 sub     eax, edx
.text:00426A43                 sar     eax, 1
.text:00426A45                 mov     [esp+50h+var_24], ecx
.text:00426A49                 mov     ecx, eax
.text:00426A4B                 and     ecx, 80000001h
.text:00426A51                 jns     short loc_426A58
.text:00426A53                 dec     ecx
.text:00426A54                 or      ecx, 0FFFFFFFEh
.text:00426A57                 inc     ecx
.text:00426A58
.text:00426A58 loc_426A58:                             ; CODE XREF: sub_4269A0+B1j
.text:00426A58                 cdq
.text:00426A59                 sub     eax, edx
.text:00426A5B                 mov     [esp+50h+var_28], ecx
.text:00426A5F                 mov     ecx, eax
.text:00426A61                 sar     ecx, 1
.text:00426A63                 mov     eax, 55555556h
.text:00426A68                 imul    ecx
.text:00426A6A                 mov     eax, edx
.text:00426A6C                 shr     eax, 1Fh
.text:00426A6F                 add     eax, edx
.text:00426A71                 lea     edx, [eax+eax*2]
.text:00426A74                 mov     edi, eax
.text:00426A76                 sub     ecx, edx
.text:00426A78                 mov     eax, 55555556h
.text:00426A7D                 imul    edi
.text:00426A7F                 mov     [esp+50h+var_30], ecx
.text:00426A83                 mov     ecx, edx
.text:00426A85                 shr     ecx, 1Fh
.text:00426A88                 add     ecx, edx
.text:00426A8A                 lea     eax, [ecx+ecx*2]
.text:00426A8D                 sub     edi, eax
.text:00426A8F                 mov     eax, 38E38E39h
.text:00426A94                 imul    ecx
.text:00426A96                 sar     edx, 1
.text:00426A98                 mov     [esp+50h+var_34], edi
.text:00426A9C                 mov     edi, edx
.text:00426A9E                 shr     edi, 1Fh
.text:00426AA1                 add     edi, edx
.text:00426AA3                 lea     edx, [edi+edi*8]
.text:00426AA6                 sub     ecx, edx
.text:00426AA8                 mov     eax, 38E38E39h
.text:00426AAD                 imul    edi
.text:00426AAF                 sar     edx, 1
.text:00426AB1                 mov     eax, edx
.text:00426AB3                 shr     eax, 1Fh
.text:00426AB6                 add     eax, edx
.text:00426AB8                 mov     edx, [esp+50h+var_18]
.text:00426ABC                 lea     eax, [eax+eax*8]
.text:00426ABF                 sub     edi, eax
.text:00426AC1                 mov     eax, [esp+50h+var_28]
.text:00426AC5                 push    esi
.text:00426AC6                 mov     [esp+54h+var_1C], edi
.text:00426ACA                 lea     edi, [edx+ebp]
.text:00426ACD                 mov     edx, [esp+54h+var_24]
.text:00426AD1                 add     eax, edx
.text:00426AD3                 mov     edx, [esp+54h+var_3C]
.text:00426AD7                 push    edx
.text:00426AD8                 mov     edx, [esp+58h+var_1C]
.text:00426ADC                 push    eax
.text:00426ADD                 mov     [esp+5Ch+var_20], eax
.text:00426AE1                 mov     eax, [esp+5Ch+var_34]
.text:00426AE5                 push    eax
.text:00426AE6                 mov     eax, [esp+60h+var_38]
.text:00426AEA                 push    edx
.text:00426AEB                 mov     edx, [esp+64h+var_30]
.text:00426AEF                 push    ebx
.text:00426AF0                 push    eax
.text:00426AF1                 push    edi
.text:00426AF2                 push    edx
.text:00426AF3                 push    ecx
.text:00426AF4                 mov     [esp+78h+var_14], ecx
.text:00426AF8                 call    sub_4267A0
.text:00426AFD                 mov     ecx, [esp+78h+var_3C]
.text:00426B01                 mov     [esp+78h+var_8], eax
.text:00426B05                 lea     eax, [esi+ebx]
.text:00426B08                 lea     eax, [ecx+eax*2]
.text:00426B0B                 add     eax, [esp+78h+var_38]
.text:00426B0F                 mov     ecx, [esp+78h+var_20]
.text:00426B13                 lea     ecx, [ecx+eax*2]
.text:00426B16                 add     ecx, eax
.text:00426B18                 add     ecx, edi
.text:00426B1A                 mov     edi, [esp+78h+var_8]
.text:00426B1E                 add     ecx, [esp+78h+var_34]
.text:00426B22                 mov     eax, edi
.text:00426B24                 add     ecx, [esp+78h+var_30]
.text:00426B28                 and     eax, 0FFFFh
.text:00426B2D                 add     esp, 28h
.text:00426B30                 mov     [esp+50h+var_4], edx
.text:00426B34                 mov     [esp+50h+var_C], 0
.text:00426B3C                 cmp     eax, 8000h
.text:00426B41                 mov     [esp+50h+var_10], 1
.text:00426B49                 jg      short loc_426B53
.text:00426B4B                 mov     [esp+50h+var_10], 0
.text:00426B53
.text:00426B53 loc_426B53:                             ; CODE XREF: sub_4269A0+1A9j
.text:00426B53                 shrd    edi, edx, 10h
.text:00426B57                 shr     edx, 10h
.text:00426B5A                 mov     [esp+50h+var_2C], edx
.text:00426B5E                 mov     edx, edi
.text:00426B60                 mov     edi, [esp+50h+var_2C]
.text:00426B64                 and     edx, 0FFFFh
.text:00426B6A                 add     edx, [esp+50h+var_10]
.text:00426B6E                 cwde
.text:00426B6F                 cmp     edx, 8000h
.text:00426B75                 mov     [esp+50h+var_2C], eax
.text:00426B79                 jle     short loc_426B8A
.text:00426B7B                 mov     edi, 1
.text:00426B80                 mov     [esp+50h+var_C], 0
.text:00426B88                 jmp     short loc_426B90
.text:00426B8A ; ---------------------------------------------------------------------------
.text:00426B8A
.text:00426B8A loc_426B8A:                             ; CODE XREF: sub_4269A0+1D9j
.text:00426B8A                 xor     edi, edi
.text:00426B8C                 mov     [esp+50h+var_C], edi
.text:00426B90
.text:00426B90 loc_426B90:                             ; CODE XREF: sub_4269A0+1E8j
.text:00426B90                 mov     eax, [esp+50h+var_4]
.text:00426B94                 and     eax, 0FFFFh
.text:00426B99                 add     eax, edi
.text:00426B9B                 cmp     eax, 8000h
.text:00426BA0                 movsx   edi, dx
.text:00426BA3                 mov     [esp+50h+var_C], 0
.text:00426BAB                 mov     [esp+50h+var_10], 1
.text:00426BB3                 jg      short loc_426BBD
.text:00426BB5                 mov     [esp+50h+var_10], 0
.text:00426BBD
.text:00426BBD loc_426BBD:                             ; CODE XREF: sub_4269A0+213j
.text:00426BBD                 cmp     ecx, 8
.text:00426BC0                 movsx   edx, ax
.text:00426BC3                 jge     short loc_426BF0
.text:00426BC5                 mov     eax, [esp+50h+var_4]
.text:00426BC9                 imul    edx, ecx
.text:00426BCC                 shr     eax, 10h
.text:00426BCF                 add     ax, word ptr [esp+50h+var_10]
.text:00426BD4                 mov     edi, 8
.text:00426BD9                 cwde
.text:00426BDA                 sub     edi, ecx
.text:00426BDC                 imul    eax, edi
.text:00426BDF                 add     eax, edx
.text:00426BE1                 cdq
.text:00426BE2                 and     edx, 7
.text:00426BE5                 add     eax, edx
.text:00426BE7                 sar     eax, 3
.text:00426BEA                 mov     [esp+50h+var_2C], eax
.text:00426BEE                 jmp     short loc_426C33
.text:00426BF0 ; ---------------------------------------------------------------------------
.text:00426BF0
.text:00426BF0 loc_426BF0:                             ; CODE XREF: sub_4269A0+223j
.text:00426BF0                 cmp     ecx, 18h
.text:00426BF3                 jge     short loc_426C12
.text:00426BF5                 mov     eax, 18h
.text:00426BFA                 sub     eax, ecx
.text:00426BFC                 imul    eax, edx
.text:00426BFF                 add     ecx, 0FFFFFFF8h
.text:00426C02                 imul    ecx, edi
.text:00426C05                 add     eax, ecx
.text:00426C07                 cdq
.text:00426C08                 and     edx, 0Fh
.text:00426C0B                 add     eax, edx
.text:00426C0D                 sar     eax, 4
.text:00426C10                 jmp     short loc_426C2F
.text:00426C12 ; ---------------------------------------------------------------------------
.text:00426C12
.text:00426C12 loc_426C12:                             ; CODE XREF: sub_4269A0+253j
.text:00426C12                 mov     eax, 20h
.text:00426C17                 sub     eax, ecx
.text:00426C19                 imul    eax, edi
.text:00426C1C                 add     ecx, 0FFFFFFE8h
.text:00426C1F                 imul    ecx, [esp+50h+var_2C]
.text:00426C24                 add     eax, ecx
.text:00426C26                 cdq
.text:00426C27                 and     edx, 7
.text:00426C2A                 add     eax, edx
.text:00426C2C                 sar     eax, 3
.text:00426C2F
.text:00426C2F loc_426C2F:                             ; CODE XREF: sub_4269A0+270j
.text:00426C2F                 mov     [esp+50h+var_2C], eax
.text:00426C33
.text:00426C33 loc_426C33:                             ; CODE XREF: sub_4269A0+24Ej
.text:00426C33                 mov     ecx, [esp+50h+var_3C]
.text:00426C37                 mov     edx, [esp+50h+var_28]
.text:00426C3B                 mov     edi, [esp+50h+var_18]
.text:00426C3F                 push    esi
.text:00426C40                 push    ecx
.text:00426C41                 mov     ecx, [esp+58h+var_20]
.text:00426C45                 push    edx
.text:00426C46                 mov     edx, [esp+5Ch+var_34]
.text:00426C4A                 test    eax, eax
.text:00426C4C                 mov     eax, [esp+5Ch+var_24]
.text:00426C50                 push    eax
.text:00426C51                 mov     eax, [esp+60h+var_1C]
.text:00426C55                 push    ecx
.text:00426C56                 mov     ecx, [esp+64h+var_38]
.text:00426C5A                 push    edx
.text:00426C5B                 mov     edx, [esp+68h+var_30]
.text:00426C5F                 push    eax
.text:00426C60                 mov     eax, [esp+6Ch+var_14]
.text:00426C64                 push    ebx
.text:00426C65                 push    ecx
.text:00426C66                 push    edi
.text:00426C67                 push    ebp
.text:00426C68                 jle     short loc_426C79
.text:00426C6A                 add     edi, ebp
.text:00426C6C                 push    edi
.text:00426C6D                 push    edx
.text:00426C6E                 push    eax
.text:00426C6F                 call    sub_425B60
.text:00426C74                 add     esp, 38h
.text:00426C77                 jmp     short loc_426C87
.text:00426C79 ; ---------------------------------------------------------------------------
.text:00426C79
.text:00426C79 loc_426C79:                             ; CODE XREF: sub_4269A0+2C8j
.text:00426C79                 push    edx
.text:00426C7A                 add     edi, ebp
.text:00426C7C                 push    eax
.text:00426C7D                 mov     edx, edi
.text:00426C7F                 call    sub_426190
.text:00426C84                 add     esp, 34h
.text:00426C87
.text:00426C87 loc_426C87:                             ; CODE XREF: sub_4269A0+2D7j
.text:00426C87                 imul    eax, [esp+50h+var_2C]
.text:00426C8C                 mov     ecx, eax
.text:00426C8E                 mov     eax, 66666667h
.text:00426C93                 imul    ecx
.text:00426C95                 mov     eax, [esp+50h+var_3C]
.text:00426C99                 sar     edx, 2
.text:00426C9C                 mov     ecx, edx
.text:00426C9E                 shr     ecx, 1Fh
.text:00426CA1                 add     ecx, edx
.text:00426CA3                 mov     edx, [esp+50h+arg_0]
.text:00426CA7                 push    esi
.text:00426CA8                 push    eax
.text:00426CA9                 mov     eax, [esp+58h+var_20]
.text:00426CAD                 mov     word_45BEC0[edx*4], cx
.text:00426CB5                 mov     ecx, [esp+58h+var_28]
.text:00426CB9                 mov     edx, [esp+58h+var_24]
.text:00426CBD                 push    ecx
.text:00426CBE                 mov     ecx, [esp+5Ch+var_1C]
.text:00426CC2                 push    edx
.text:00426CC3                 mov     edx, [esp+60h+var_38]
.text:00426CC7                 push    eax
.text:00426CC8                 mov     eax, [esp+64h+var_18]
.text:00426CCC                 push    ecx
.text:00426CCD                 mov     ecx, [esp+68h+var_14]
.text:00426CD1                 push    ebx
.text:00426CD2                 push    edx
.text:00426CD3                 mov     edx, [esp+70h+var_34]
.text:00426CD7                 push    eax
.text:00426CD8                 push    ebp
.text:00426CD9                 push    ecx
.text:00426CDA                 mov     ecx, [esp+7Ch+var_30]
.text:00426CDE                 call    sub_425950
.text:00426CE3                 mov     edx, [esp+7Ch+arg_0]
.text:00426CEA                 mov     ecx, [esp+7Ch+var_28]
.text:00426CEE                 add     esp, 2Ch
.text:00426CF1                 push    esi
.text:00426CF2                 mov     esi, [esp+54h+var_30]
.text:00426CF6                 mov     byte_45BEC2[edx*4], al
.text:00426CFD                 mov     eax, [esp+54h+var_3C]
.text:00426D01                 mov     edx, [esp+54h+var_24]
.text:00426D05                 push    eax
.text:00426D06                 mov     eax, [esp+58h+var_20]
.text:00426D0A                 push    ecx
.text:00426D0B                 mov     ecx, [esp+5Ch+var_1C]
.text:00426D0F                 push    edx
.text:00426D10                 mov     edx, [esp+60h+var_38]
.text:00426D14                 push    eax
.text:00426D15                 mov     eax, [esp+64h+var_18]
.text:00426D19                 push    ecx
.text:00426D1A                 mov     ecx, [esp+68h+var_14]
.text:00426D1E                 push    edx
.text:00426D1F                 push    eax
.text:00426D20                 push    ebp
.text:00426D21                 push    edi
.text:00426D22                 mov     edi, [esp+78h+var_34]
.text:00426D26                 push    ecx
.text:00426D27                 mov     edx, ebx
.text:00426D29                 call    sub_425670
.text:00426D2E                 mov     edx, [esp+7Ch+arg_0]
.text:00426D35                 add     esp, 2Ch
.text:00426D38                 pop     edi
.text:00426D39                 pop     esi
.text:00426D3A                 pop     ebp
.text:00426D3B                 mov     byte_45BEC3[edx*4], al
.text:00426D42                 pop     ebx
.text:00426D43                 add     esp, 40h
.text:00426D46                 retn
.text:00426D46 sub_4269A0      endp
Houdini w32 1_CPU
build 2010-05-15
by Robert Houdart*

Code: Select all

.text:00428340 ; =============== S U B R O U T I N E =======================================
.text:00428340
.text:00428340
.text:00428340 sub_428340      proc near               ; CODE XREF: sub_40FF90+CAp
.text:00428340
.text:00428340 var_48          = dword ptr -48h
.text:00428340 var_44          = dword ptr -44h
.text:00428340 var_40          = dword ptr -40h
.text:00428340 var_3C          = dword ptr -3Ch
.text:00428340 var_38          = dword ptr -38h
.text:00428340 var_34          = dword ptr -34h
.text:00428340 var_30          = dword ptr -30h
.text:00428340 var_2C          = dword ptr -2Ch
.text:00428340 var_28          = dword ptr -28h
.text:00428340 var_24          = dword ptr -24h
.text:00428340 var_20          = dword ptr -20h
.text:00428340 var_1C          = dword ptr -1Ch
.text:00428340 var_18          = dword ptr -18h
.text:00428340 var_14          = dword ptr -14h
.text:00428340 var_10          = dword ptr -10h
.text:00428340 var_C           = dword ptr -0Ch
.text:00428340 var_8           = dword ptr -8
.text:00428340 var_4           = dword ptr -4
.text:00428340
.text:00428340                 push    ebp
.text:00428341                 mov     ebp, esp
.text:00428343                 and     esp, 0FFFFFFF8h
.text:00428346                 sub     esp, 48h
.text:00428349                 push    ebx
.text:0042834A                 push    ebp
.text:0042834B                 push    esi
.text:0042834C                 xor     eax, eax
.text:0042834E                 push    edi
.text:0042834F                 mov     [esp+58h+var_1C], eax
.text:00428353                 mov     [esp+58h+var_18], offset word_5C14FC
.text:0042835B                 jmp     short loc_428364
.text:0042835B ; ---------------------------------------------------------------------------
.text:0042835D                 align 10h
.text:00428360
.text:00428360 loc_428360:                             ; CODE XREF: sub_428340+399j
.text:00428360                 mov     eax, [esp+58h+var_1C]
.text:00428364
.text:00428364 loc_428364:                             ; CODE XREF: sub_428340+1Bj
.text:00428364                 mov     ebp, eax
.text:00428366                 and     ebp, 80000001h
.text:0042836C                 jns     short loc_428373
.text:0042836E                 dec     ebp
.text:0042836F                 or      ebp, 0FFFFFFFEh
.text:00428372                 inc     ebp
.text:00428373
.text:00428373 loc_428373:                             ; CODE XREF: sub_428340+2Cj
.text:00428373                 cdq
.text:00428374                 sub     eax, edx
.text:00428376                 sar     eax, 1
.text:00428378                 mov     ebx, eax
.text:0042837A                 and     ebx, 80000001h
.text:00428380                 jns     short loc_428387
.text:00428382                 dec     ebx
.text:00428383                 or      ebx, 0FFFFFFFEh
.text:00428386                 inc     ebx
.text:00428387
.text:00428387 loc_428387:                             ; CODE XREF: sub_428340+40j
.text:00428387                 cdq
.text:00428388                 sub     eax, edx
.text:0042838A                 mov     ecx, eax
.text:0042838C                 sar     ecx, 1
.text:0042838E                 mov     eax, 55555556h
.text:00428393                 imul    ecx
.text:00428395                 mov     eax, edx
.text:00428397                 shr     eax, 1Fh
.text:0042839A                 add     eax, edx
.text:0042839C                 lea     edx, [eax+eax*2]
.text:0042839F                 sub     ecx, edx
.text:004283A1                 mov     [esp+58h+var_40], ecx
.text:004283A5                 mov     ecx, eax
.text:004283A7                 mov     eax, 55555556h
.text:004283AC                 imul    ecx
.text:004283AE                 mov     eax, edx
.text:004283B0                 shr     eax, 1Fh
.text:004283B3                 add     eax, edx
.text:004283B5                 lea     edx, [eax+eax*2]
.text:004283B8                 sub     ecx, edx
.text:004283BA                 mov     edi, eax
.text:004283BC                 and     edi, 80000001h
.text:004283C2                 mov     [esp+58h+var_48], ecx
.text:004283C6                 jns     short loc_4283CD
.text:004283C8                 dec     edi
.text:004283C9                 or      edi, 0FFFFFFFEh
.text:004283CC                 inc     edi
.text:004283CD
.text:004283CD loc_4283CD:                             ; CODE XREF: sub_428340+86j
.text:004283CD                 cdq
.text:004283CE                 sub     eax, edx
.text:004283D0                 sar     eax, 1
.text:004283D2                 mov     ecx, eax
.text:004283D4                 and     ecx, 80000001h
.text:004283DA                 mov     [esp+58h+var_10], edi
.text:004283DE                 jns     short loc_4283E5
.text:004283E0                 dec     ecx
.text:004283E1                 or      ecx, 0FFFFFFFEh
.text:004283E4                 inc     ecx
.text:004283E5
.text:004283E5 loc_4283E5:                             ; CODE XREF: sub_428340+9Ej
.text:004283E5                 cdq
.text:004283E6                 sub     eax, edx
.text:004283E8                 sar     eax, 1
.text:004283EA                 mov     [esp+58h+var_24], ecx
.text:004283EE                 mov     ecx, eax
.text:004283F0                 and     ecx, 80000001h
.text:004283F6                 jns     short loc_4283FD
.text:004283F8                 dec     ecx
.text:004283F9                 or      ecx, 0FFFFFFFEh
.text:004283FC                 inc     ecx
.text:004283FD
.text:004283FD loc_4283FD:                             ; CODE XREF: sub_428340+B6j
.text:004283FD                 cdq
.text:004283FE                 sub     eax, edx
.text:00428400                 sar     eax, 1
.text:00428402                 mov     [esp+58h+var_30], ecx
.text:00428406                 mov     ecx, eax
.text:00428408                 and     ecx, 80000001h
.text:0042840E                 jns     short loc_428415
.text:00428410                 dec     ecx
.text:00428411                 or      ecx, 0FFFFFFFEh
.text:00428414                 inc     ecx
.text:00428415
.text:00428415 loc_428415:                             ; CODE XREF: sub_428340+CEj
.text:00428415                 cdq
.text:00428416                 sub     eax, edx
.text:00428418                 mov     [esp+58h+var_34], ecx
.text:0042841C                 mov     ecx, eax
.text:0042841E                 sar     ecx, 1
.text:00428420                 mov     eax, 55555556h
.text:00428425                 imul    ecx
.text:00428427                 mov     eax, edx
.text:00428429                 shr     eax, 1Fh
.text:0042842C                 add     eax, edx
.text:0042842E                 lea     edx, [eax+eax*2]
.text:00428431                 mov     esi, eax
.text:00428433                 sub     ecx, edx
.text:00428435                 mov     eax, 55555556h
.text:0042843A                 imul    esi
.text:0042843C                 mov     [esp+58h+var_3C], ecx
.text:00428440                 mov     ecx, edx
.text:00428442                 shr     ecx, 1Fh
.text:00428445                 add     ecx, edx
.text:00428447                 lea     eax, [ecx+ecx*2]
.text:0042844A                 sub     esi, eax
.text:0042844C                 mov     eax, 38E38E39h
.text:00428451                 imul    ecx
.text:00428453                 sar     edx, 1
.text:00428455                 mov     [esp+58h+var_44], esi
.text:00428459                 mov     esi, edx
.text:0042845B                 shr     esi, 1Fh
.text:0042845E                 add     esi, edx
.text:00428460                 lea     edx, [esi+esi*8]
.text:00428463                 sub     ecx, edx
.text:00428465                 mov     eax, 38E38E39h
.text:0042846A                 imul    esi
.text:0042846C                 sar     edx, 1
.text:0042846E                 mov     eax, edx
.text:00428470                 shr     eax, 1Fh
.text:00428473                 add     eax, edx
.text:00428475                 mov     edx, [esp+58h+var_48]
.text:00428479                 lea     eax, [eax+eax*8]
.text:0042847C                 sub     esi, eax
.text:0042847E                 mov     eax, [esp+58h+var_34]
.text:00428482                 add     eax, [esp+58h+var_30]
.text:00428486                 push    ebx
.text:00428487                 push    edx
.text:00428488                 push    eax
.text:00428489                 mov     [esp+64h+var_2C], eax
.text:0042848D                 mov     eax, [esp+64h+var_44]
.text:00428491                 push    eax
.text:00428492                 mov     eax, [esp+68h+var_40]
.text:00428496                 mov     [esp+68h+var_28], esi
.text:0042849A                 mov     edx, [esp+68h+var_28]
.text:0042849E                 mov     esi, [esp+68h+var_24]
.text:004284A2                 push    edx
.text:004284A3                 mov     edx, [esp+6Ch+var_3C]
.text:004284A7                 push    ebp
.text:004284A8                 push    eax
.text:004284A9                 add     esi, edi
.text:004284AB                 push    esi
.text:004284AC                 push    edx
.text:004284AD                 push    ecx
.text:004284AE                 mov     [esp+80h+var_20], ecx
.text:004284B2                 call    sub_428150
.text:004284B7                 mov     ecx, [esp+80h+var_48]
.text:004284BB                 mov     [esp+80h+var_8], eax
.text:004284BF                 mov     [esp+80h+var_4], edx
.text:004284C3                 mov     edx, [esp+80h+var_2C]
.text:004284C7                 lea     eax, [ebx+ebp]
.text:004284CA                 lea     eax, [ecx+eax*2]
.text:004284CD                 add     eax, [esp+80h+var_40]
.text:004284D1                 add     esp, 28h
.text:004284D4                 lea     ecx, [edx+eax*2]
.text:004284D7                 add     ecx, eax
.text:004284D9                 mov     eax, [esp+58h+var_8]
.text:004284DD                 movsx   edx, ax
.text:004284E0                 mov     [esp+58h+var_14], edx
.text:004284E4                 mov     edx, [esp+58h+var_4]
.text:004284E8                 add     ecx, esi
.text:004284EA                 add     ecx, [esp+58h+var_44]
.text:004284EE                 shrd    eax, edx, 10h
.text:004284F2                 add     ecx, [esp+58h+var_3C]
.text:004284F6                 shr     edx, 10h
.text:004284F9                 cwde
.text:004284FA                 xor     edx, edx
.text:004284FC                 cmp     [esp+58h+var_14], edx
.text:00428500                 setl    dl
.text:00428503                 add     eax, edx
.text:00428505                 movsx   edx, word ptr [esp+58h+var_4]
.text:0042850A                 mov     [esp+58h+var_38], eax
.text:0042850E                 mov     eax, 0
.text:00428513                 sets    al
.text:00428516                 add     edx, eax
.text:00428518                 mov     [esp+58h+var_C], edx
.text:0042851C                 cmp     ecx, 8
.text:0042851F                 jg      short loc_428558
.text:00428521                 mov     eax, [esp+58h+var_4]
.text:00428525                 mov     edi, [esp+58h+var_C]
.text:00428529                 shr     eax, 10h
.text:0042852C                 xor     edx, edx
.text:0042852E                 test    edi, edi
.text:00428530                 sets    dl
.text:00428533                 imul    edi, ecx
.text:00428536                 cwde
.text:00428537                 add     eax, edx
.text:00428539                 mov     edx, 8
.text:0042853E                 sub     edx, ecx
.text:00428540                 imul    eax, edx
.text:00428543                 add     eax, edi
.text:00428545                 mov     edi, [esp+58h+var_10]
.text:00428549                 cdq
.text:0042854A                 and     edx, 7
.text:0042854D                 add     eax, edx
.text:0042854F                 sar     eax, 3
.text:00428552                 mov     [esp+58h+var_38], eax
.text:00428556                 jmp     short loc_42859F
.text:00428558 ; ---------------------------------------------------------------------------
.text:00428558
.text:00428558 loc_428558:                             ; CODE XREF: sub_428340+1DFj
.text:00428558                 cmp     ecx, 18h
.text:0042855B                 jg      short loc_42857C
.text:0042855D                 mov     eax, 18h
.text:00428562                 sub     eax, ecx
.text:00428564                 imul    eax, edx
.text:00428567                 add     ecx, 0FFFFFFF8h
.text:0042856A                 imul    ecx, [esp+58h+var_38]
.text:0042856F                 add     eax, ecx
.text:00428571                 cdq
.text:00428572                 and     edx, 0Fh
.text:00428575                 add     eax, edx
.text:00428577                 sar     eax, 4
.text:0042857A                 jmp     short loc_42859B
.text:0042857C ; ---------------------------------------------------------------------------
.text:0042857C
.text:0042857C loc_42857C:                             ; CODE XREF: sub_428340+21Bj
.text:0042857C                 mov     eax, 20h
.text:00428581                 sub     eax, ecx
.text:00428583                 imul    eax, [esp+58h+var_38]
.text:00428588                 add     ecx, 0FFFFFFE8h
.text:0042858B                 imul    ecx, [esp+58h+var_14]
.text:00428590                 add     eax, ecx
.text:00428592                 cdq
.text:00428593                 and     edx, 7
.text:00428596                 add     eax, edx
.text:00428598                 sar     eax, 3
.text:0042859B
.text:0042859B loc_42859B:                             ; CODE XREF: sub_428340+23Aj
.text:0042859B                 mov     [esp+58h+var_38], eax
.text:0042859F
.text:0042859F loc_42859F:                             ; CODE XREF: sub_428340+216j
.text:0042859F                 test    eax, eax
.text:004285A1                 jle     short loc_4285DB
.text:004285A3                 mov     eax, [esp+58h+var_48]
.text:004285A7                 mov     ecx, [esp+58h+var_34]
.text:004285AB                 mov     edx, [esp+58h+var_30]
.text:004285AF                 push    ebx
.text:004285B0                 push    eax
.text:004285B1                 mov     eax, [esp+60h+var_2C]
.text:004285B5                 push    ecx
.text:004285B6                 mov     ecx, [esp+64h+var_44]
.text:004285BA                 push    edx
.text:004285BB                 mov     edx, [esp+68h+var_28]
.text:004285BF                 push    eax
.text:004285C0                 mov     eax, [esp+6Ch+var_40]
.text:004285C4                 push    ecx
.text:004285C5                 mov     ecx, [esp+70h+var_24]
.text:004285C9                 push    edx
.text:004285CA                 mov     edx, [esp+74h+var_3C]
.text:004285CE                 push    ebp
.text:004285CF                 push    eax
.text:004285D0                 mov     eax, [esp+7Ch+var_20]
.text:004285D4                 push    ecx
.text:004285D5                 push    edi
.text:004285D6                 push    esi
.text:004285D7                 push    edx
.text:004285D8                 push    eax
.text:004285D9                 jmp     short loc_428611
.text:004285DB ; ---------------------------------------------------------------------------
.text:004285DB
.text:004285DB loc_4285DB:                             ; CODE XREF: sub_428340+261j
.text:004285DB                 mov     ecx, [esp+58h+var_40]
.text:004285DF                 mov     edx, [esp+58h+var_24]
.text:004285E3                 mov     eax, [esp+58h+var_3C]
.text:004285E7                 push    ebp
.text:004285E8                 push    ecx
.text:004285E9                 mov     ecx, [esp+60h+var_20]
.text:004285ED                 push    edx
.text:004285EE                 mov     edx, [esp+64h+var_48]
.text:004285F2                 push    edi
.text:004285F3                 push    esi
.text:004285F4                 push    eax
.text:004285F5                 mov     eax, [esp+70h+var_34]
.text:004285F9                 push    ecx
.text:004285FA                 mov     ecx, [esp+74h+var_30]
.text:004285FE                 push    ebx
.text:004285FF                 push    edx
.text:00428600                 mov     edx, [esp+7Ch+var_2C]
.text:00428604                 push    eax
.text:00428605                 mov     eax, [esp+80h+var_44]
.text:00428609                 push    ecx
.text:0042860A                 mov     ecx, [esp+84h+var_28]
.text:0042860E                 push    edx
.text:0042860F                 push    eax
.text:00428610                 push    ecx
.text:00428611
.text:00428611 loc_428611:                             ; CODE XREF: sub_428340+299j
.text:00428611                 call    sub_427B30
.text:00428616                 imul    eax, [esp+90h+var_38]
.text:0042861B                 mov     ecx, eax
.text:0042861D                 mov     eax, 66666667h
.text:00428622                 imul    ecx
.text:00428624                 mov     ecx, [esp+90h+var_18]
.text:00428628                 add     esp, 38h
.text:0042862B                 sar     edx, 2
.text:0042862E                 push    ebx
.text:0042862F                 mov     eax, edx
.text:00428631                 shr     eax, 1Fh
.text:00428634                 add     eax, edx
.text:00428636                 mov     edx, [esp+5Ch+var_48]
.text:0042863A                 push    edx
.text:0042863B                 mov     edx, [esp+60h+var_2C]
.text:0042863F                 mov     [ecx-4], ax
.text:00428643                 mov     eax, [esp+60h+var_34]
.text:00428647                 mov     ecx, [esp+60h+var_30]
.text:0042864B                 push    eax
.text:0042864C                 mov     eax, [esp+64h+var_44]
.text:00428650                 push    ecx
.text:00428651                 mov     ecx, [esp+68h+var_40]
.text:00428655                 push    edx
.text:00428656                 mov     edx, [esp+6Ch+var_24]
.text:0042865A                 push    eax
.text:0042865B                 mov     eax, [esp+70h+var_3C]
.text:0042865F                 push    ebp
.text:00428660                 push    ecx
.text:00428661                 mov     ecx, [esp+78h+var_20]
.text:00428665                 push    edx
.text:00428666                 push    edi
.text:00428667                 mov     edi, [esp+80h+var_28]
.text:0042866B                 push    esi
.text:0042866C                 push    eax
.text:0042866D                 push    ecx
.text:0042866E                 call    sub_4279E0
.text:00428673                 mov     edi, [esp+8Ch+var_18]
.text:00428677                 mov     ecx, [esp+8Ch+var_34]
.text:0042867B                 add     esp, 34h
.text:0042867E                 push    ebx
.text:0042867F                 mov     [edi-2], al
.text:00428682                 mov     eax, [esp+5Ch+var_48]
.text:00428686                 push    eax
.text:00428687                 mov     eax, [esp+60h+var_2C]
.text:0042868B                 push    ecx
.text:0042868C                 mov     ecx, [esp+64h+var_44]
.text:00428690                 xor     edx, edx
.text:00428692                 mov     [edi], dx
.text:00428695                 mov     edx, [esp+64h+var_30]
.text:00428699                 push    edx
.text:0042869A                 mov     edx, [esp+68h+var_28]
.text:0042869E                 push    eax
.text:0042869F                 mov     eax, [esp+6Ch+var_40]
.text:004286A3                 push    ecx
.text:004286A4                 mov     ecx, [esp+70h+var_24]
.text:004286A8                 push    edx
.text:004286A9                 mov     edx, [esp+74h+var_10]
.text:004286AD                 push    ebp
.text:004286AE                 push    eax
.text:004286AF                 mov     eax, [esp+7Ch+var_3C]
.text:004286B3                 push    ecx
.text:004286B4                 mov     ecx, [esp+80h+var_20]
.text:004286B8                 push    edx
.text:004286B9                 push    esi
.text:004286BA                 push    eax
.text:004286BB                 push    ecx
.text:004286BC                 push    edi
.text:004286BD                 call    sub_427640
.text:004286C2                 inc     [esp+94h+var_1C]
.text:004286C6                 mov     [edi-1], al
.text:004286C9                 add     edi, 6
.text:004286CC                 add     esp, 3Ch
.text:004286CF                 mov     [esp+58h+var_18], edi
.text:004286D3                 cmp     edi, offset dword_82867C
.text:004286D9                 jl      loc_428360
.text:004286DF                 pop     edi
.text:004286E0                 pop     esi
.text:004286E1                 pop     ebp
.text:004286E2                 pop     ebx
.text:004286E3                 mov     esp, ebp
.text:004286E5                 pop     ebp
.text:004286E6                 retn
.text:004286E6 sub_428340      endp
RobboLito 009 Source Code values.c

Code: Select all

    static void Material_calculation(int c)
    {
       int white_queen, black_queen, white_rook, black_rook, white_light, black_light, 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_light = n % 2;
       n /= 2;
       white_dark = n % 2;
       n /= 2;
       black_light = 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_light + white_dark;
       black_bishop = black_light + black_dark;
       va =
          value_value(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen,
             black_pawn, black_knight, black_bishop, black_light, 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);
       va1 = va & 0xffff;
       va2 = ((va >> 16) & 0xffff) + (va1 > 0x8000);
       va1 = (sint16)va1;
       va3 = ((va >> 32) & 0xffff) + (va2 > 0x8000);
       va2 = (sint16)va2;
       va4 = ((va >> 48) & 0xffff) + (va3 > 0x8000);
       va3 = (sint16)va3;
       va4 = (sint16)va4;

       if (phase < 8)
       {
          va4 *= 8 - phase;
          va3 *= phase;
          va = va3 + va4;
          value = ((int)va) / 8;
       }
       else if (phase < 24)
       {
          va3 *= 24 - phase;
          va2 *= phase - 8;
          va = va2 + va3;
          value = ((int)va) / 16;
       }
       else
       {
          va2 *= 32 - phase;
          va1 *= phase - 24;
          va = va1 + va2;
          value = ((int)va) / 8;
       }
       white_load =
          load_white(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen, black_pawn,
             black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
       black_load =
          load_black(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen, black_pawn,
             black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);

       if (value > 0)
          ca = white_load;
       else
          ca = black_load;
       value *= ca;
       value /= 10;
       MATERIAL[c].value = value;
       MATERIAL[c].sign =
          sign_initialization(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen,
             black_pawn, black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
       MATERIAL[c].flags =
          flags_initialization(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen,
             black_pawn, black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
    }
*Modified
PAWN : Knight >> Bishop >> Rook >>Queen

User avatar
Dr. Ivannik
Posts: 35
Joined: Thu Aug 05, 2010 6:47 pm
Real Name: Ivannik
Location: Moscow

Re: Why Is Houdini Not Entered In The WCCC??

Post by Dr. Ivannik » Mon Aug 09, 2010 11:47 pm

kingliveson wrote:It is a shame really that it had come to this point. When Houdini was initially released, Robert was asked a direct question whether or not it was an Ippolit derivative. His reply left me a little disappointed because prior to asking that question, the binary had been scanned with a disassembler. Houdini, like RobboLito does not support mpv and outputs similar pv in many positions; there was a post on CCC demonstrating it.

Houdini is a modified and improved RobboLito. Robert's improvement is overshadowed by his lack of honesty. When we have a case of verbatim code -- global function structure, search, eval, values, uci, etc, and yet the continuous insistence of only "taking ideas" is quite immodest. I cannot understand what sort of ego drives one to such a point of no return. The debate is over for me. Below are a couple examples of what you will see throughout Houdini's binary:


RobboLito 0.09 w32
Aug 4 2010 19:40:41
basic windows version by kranium, improved by sentinel

Code: Select all

.text:00425B60 ; =============== S U B R O U T I N E =======================================
.text:00425B60
.text:00425B60
.text:00425B60 sub_425B60      proc near               ; CODE XREF: sub_4269A0+2CFp
.text:00425B60
.text:00425B60 arg_0           = dword ptr  4
.text:00425B60 arg_4           = dword ptr  8
.text:00425B60 arg_8           = dword ptr  0Ch
.text:00425B60 arg_C           = dword ptr  10h
.text:00425B60 arg_10          = dword ptr  14h
.text:00425B60 arg_14          = dword ptr  18h
.text:00425B60 arg_18          = dword ptr  1Ch
.text:00425B60 arg_1C          = dword ptr  20h
.text:00425B60 arg_20          = dword ptr  24h
.text:00425B60 arg_24          = dword ptr  28h
.text:00425B60 arg_28          = dword ptr  2Ch
.text:00425B60 arg_2C          = dword ptr  30h
.text:00425B60 arg_30          = dword ptr  34h
.text:00425B60 arg_34          = dword ptr  38h
.text:00425B60
.text:00425B60                 mov     eax, [esp+arg_24]
.text:00425B64                 mov     ecx, [esp+arg_20]
.text:00425B68                 mov     edx, [esp+arg_8]
.text:00425B6C                 push    ebx
.text:00425B6D                 mov     ebx, [esp+4+arg_18]
.text:00425B71                 push    ebp
.text:00425B72                 mov     ebp, [esp+8+arg_30]
.text:00425B76                 push    esi
.text:00425B77                 mov     esi, [esp+0Ch+arg_34]
.text:00425B7B                 push    edi
.text:00425B7C                 lea     edi, [ecx+eax]
.text:00425B7F                 mov     eax, [esp+10h+arg_14]
.text:00425B83                 lea     ecx, [eax+ebx*2]
.text:00425B86                 mov     eax, [esp+10h+arg_4]
.text:00425B8A                 lea     ecx, [eax+ecx*2]
.text:00425B8D                 lea     eax, [ebp+esi*2+0]
.text:00425B91                 mov     [esp+10h+arg_30], edi
.text:00425B95                 lea     edi, [edi+eax*2]
.text:00425B98                 mov     eax, [esp+10h+arg_4]
.text:00425B9C                 lea     eax, [eax+ebx*2]
.text:00425B9F                 add     eax, ebx
.text:00425BA1                 add     eax, edx
.text:00425BA3                 add     ecx, edx
.text:00425BA5                 lea     edx, [eax+eax*2]
.text:00425BA8                 mov     eax, [esp+10h+arg_14]
.text:00425BAC                 lea     eax, [eax+eax*4]
.text:00425BAF                 add     edx, eax
.text:00425BB1                 mov     eax, [esp+10h+arg_20]
.text:00425BB5                 lea     eax, [eax+esi*2]
.text:00425BB8                 add     eax, esi
.text:00425BBA                 add     eax, [esp+10h+arg_24]
.text:00425BBE                 mov     [esp+10h+arg_24], 0Ah
.text:00425BC6                 lea     esi, [eax+eax*2]
.text:00425BC9                 lea     eax, [ebp+ebp*4+0]
.text:00425BCD                 add     esi, eax
.text:00425BCF                 cmp     [esp+10h+arg_0], 0
.text:00425BD4                 jnz     loc_4260A8
.text:00425BDA                 cmp     ecx, 1
.text:00425BDD                 jnz     short loc_425BE6
.text:00425BDF                 pop     edi
.text:00425BE0                 pop     esi
.text:00425BE1                 pop     ebp
.text:00425BE2                 xor     eax, eax
.text:00425BE4                 pop     ebx
.text:00425BE5                 retn
.text:00425BE6 ; ---------------------------------------------------------------------------
.text:00425BE6
.text:00425BE6 loc_425BE6:                             ; CODE XREF: sub_425B60+7Dj
.text:00425BE6                 mov     eax, 2
.text:00425BEB                 cmp     ecx, eax
.text:00425BED                 jnz     short loc_425C59
.text:00425BEF                 test    edi, edi
.text:00425BF1                 jnz     short loc_425C10
.text:00425BF3                 cmp     [esp+10h+arg_4], eax
.text:00425BF7                 jnz     loc_425CFC
.text:00425BFD                 xor     eax, eax
.text:00425BFF                 cmp     [esp+10h+arg_1C], 1
.text:00425C04                 pop     edi
.text:00425C05                 setl    al
.text:00425C08                 pop     esi
.text:00425C09                 pop     ebp
.text:00425C0A                 pop     ebx
.text:00425C0B                 dec     eax
.text:00425C0C                 and     eax, 3
.text:00425C0F                 retn
.text:00425C10 ; ---------------------------------------------------------------------------
.text:00425C10
.text:00425C10 loc_425C10:                             ; CODE XREF: sub_425B60+91j
.text:00425C10                 cmp     edi, 1
.text:00425C13                 jnz     short loc_425C47
.text:00425C15                 cmp     [esp+10h+arg_8], 2
.text:00425C1A                 mov     ecx, edi
.text:00425C1C                 mov     eax, ecx
.text:00425C1E                 jnz     short loc_425C29
.text:00425C20                 cmp     [esp+10h+arg_20], ecx
.text:00425C24                 jnz     short loc_425C29
.text:00425C26                 lea     eax, [edi+7]
.text:00425C29
.text:00425C29 loc_425C29:                             ; CODE XREF: sub_425B60+BEj
.text:00425C29                                         ; sub_425B60+C4j
.text:00425C29                 cmp     [esp+10h+arg_14], ecx
.text:00425C2D                 jnz     loc_425D00
.text:00425C33                 cmp     [esp+10h+arg_20], ecx
.text:00425C37                 jnz     loc_425D00
.text:00425C3D
.text:00425C3D loc_425C3D:                             ; CODE XREF: sub_425B60+244j
.text:00425C3D                                         ; sub_425B60+445j
.text:00425C3D                 pop     edi
.text:00425C3E                 pop     esi
.text:00425C3F                 pop     ebp
.text:00425C40                 mov     eax, 2
.text:00425C45                 pop     ebx
.text:00425C46                 retn
.text:00425C47 ; ---------------------------------------------------------------------------
.text:00425C47
.text:00425C47 loc_425C47:                             ; CODE XREF: sub_425B60+B3j
.text:00425C47                 cmp     edi, eax
.text:00425C49                 jnz     loc_425CFC
.text:00425C4F
.text:00425C4F loc_425C4F:                             ; CODE XREF: sub_425B60+479j
.text:00425C4F                 pop     edi
.text:00425C50                 pop     esi
.text:00425C51                 pop     ebp
.text:00425C52                 mov     eax, 1
.text:00425C57                 pop     ebx
.text:00425C58                 retn
.text:00425C59 ; ---------------------------------------------------------------------------
.text:00425C59
.text:00425C59 loc_425C59:                             ; CODE XREF: sub_425B60+8Dj
.text:00425C59                 cmp     ecx, 3
.text:00425C5C                 jnz     loc_425D45
.text:00425C62                 mov     ecx, [esp+10h+arg_14]
.text:00425C66                 cmp     ecx, 1
.text:00425C69                 jnz     loc_425D05
.text:00425C6F                 cmp     edi, eax
.text:00425C71                 jnz     loc_425CF7
.text:00425C77                 cmp     ebp, ecx
.text:00425C79                 jnz     short loc_425C98
.text:00425C7B                 mov     eax, ecx
.text:00425C7D                 cmp     [esp+10h+arg_4], ecx
.text:00425C81                 jz      short loc_425C87
.text:00425C83                 mov     eax, [esp+10h+arg_24]
.text:00425C87
.text:00425C87 loc_425C87:                             ; CODE XREF: sub_425B60+121j
.text:00425C87                 cmp     [esp+10h+arg_8], 1
.text:00425C8C                 jnz     short loc_425D00
.text:00425C8E                 pop     edi
.text:00425C8F                 pop     esi
.text:00425C90                 pop     ebp
.text:00425C91                 mov     eax, 1
.text:00425C96                 pop     ebx
.text:00425C97                 retn
.text:00425C98 ; ---------------------------------------------------------------------------
.text:00425C98
.text:00425C98 loc_425C98:                             ; CODE XREF: sub_425B60+119j
.text:00425C98                 test    ebp, ebp
.text:00425C9A                 jnz     short loc_425CFC
.text:00425C9C                 mov     edx, 1
.text:00425CA1                 cmp     [esp+10h+arg_8], edx
.text:00425CA5                 jnz     short loc_425CB7
.text:00425CA7                 cmp     [esp+10h+arg_20], eax
.text:00425CAB                 jnz     short loc_425CB7
.text:00425CAD
.text:00425CAD loc_425CAD:                             ; CODE XREF: sub_425B60+3CFj
.text:00425CAD                 pop     edi
.text:00425CAE                 pop     esi
.text:00425CAF                 pop     ebp
.text:00425CB0                 mov     eax, 6
.text:00425CB5                 pop     ebx
.text:00425CB6                 retn
.text:00425CB7 ; ---------------------------------------------------------------------------
.text:00425CB7
.text:00425CB7 loc_425CB7:                             ; CODE XREF: sub_425B60+145j
.text:00425CB7                                         ; sub_425B60+14Bj
.text:00425CB7                 cmp     [esp+10h+arg_20], edx
.text:00425CBB                 jnz     short loc_425D00
.text:00425CBD                 mov     ecx, [esp+10h+arg_C]
.text:00425CC1                 cmp     ecx, edx
.text:00425CC3                 jnz     short loc_425CCB
.text:00425CC5                 cmp     [esp+10h+arg_28], edx
.text:00425CC9                 jz      short loc_425CD7
.text:00425CCB
.text:00425CCB loc_425CCB:                             ; CODE XREF: sub_425B60+163j
.text:00425CCB                 cmp     [esp+10h+arg_10], edx
.text:00425CCF                 jnz     short loc_425CE3
.text:00425CD1                 cmp     [esp+10h+arg_2C], edx
.text:00425CD5                 jnz     short loc_425CDD
.text:00425CD7
.text:00425CD7 loc_425CD7:                             ; CODE XREF: sub_425B60+169j
.text:00425CD7                 cmp     [esp+10h+arg_10], edx
.text:00425CDB                 jnz     short loc_425CE3
.text:00425CDD
.text:00425CDD loc_425CDD:                             ; CODE XREF: sub_425B60+175j
.text:00425CDD                 cmp     [esp+10h+arg_28], edx
.text:00425CE1                 jz      short loc_425CED
.text:00425CE3
.text:00425CE3 loc_425CE3:                             ; CODE XREF: sub_425B60+16Fj
.text:00425CE3                                         ; sub_425B60+17Bj
.text:00425CE3                 cmp     ecx, edx
.text:00425CE5                 jnz     short loc_425D00
.text:00425CE7                 cmp     [esp+10h+arg_2C], edx
.text:00425CEB                 jnz     short loc_425D00
.text:00425CED
.text:00425CED loc_425CED:                             ; CODE XREF: sub_425B60+181j
.text:00425CED                 pop     edi
.text:00425CEE                 pop     esi
.text:00425CEF                 pop     ebp
.text:00425CF0                 mov     eax, 7
.text:00425CF5                 pop     ebx
.text:00425CF6                 retn
.text:00425CF7 ; ---------------------------------------------------------------------------
.text:00425CF7
.text:00425CF7 loc_425CF7:                             ; CODE XREF: sub_425B60+111j
.text:00425CF7                                         ; sub_425B60+1ABj
.text:00425CF7                 cmp     edi, 3
.text:00425CFA                 jz      short loc_425D00
.text:00425CFC
.text:00425CFC loc_425CFC:                             ; CODE XREF: sub_425B60+97j
.text:00425CFC                                         ; sub_425B60+E9j ...
.text:00425CFC                 mov     eax, [esp+10h+arg_24]
.text:00425D00
.text:00425D00 loc_425D00:                             ; CODE XREF: sub_425B60+CDj
.text:00425D00                                         ; sub_425B60+D7j ...
.text:00425D00                 pop     edi
.text:00425D01                 pop     esi
.text:00425D02                 pop     ebp
.text:00425D03                 pop     ebx
.text:00425D04                 retn
.text:00425D05 ; ---------------------------------------------------------------------------
.text:00425D05
.text:00425D05 loc_425D05:                             ; CODE XREF: sub_425B60+109j
.text:00425D05                 test    ecx, ecx
.text:00425D07                 jnz     short loc_425CFC
.text:00425D09                 cmp     edi, eax
.text:00425D0B                 jnz     short loc_425CF7
.text:00425D0D                 cmp     ebp, 1
.text:00425D10                 jnz     short loc_425D2D
.text:00425D12                 cmp     [esp+10h+arg_4], eax
.text:00425D16                 jz      short loc_425D1C
.text:00425D18                 mov     eax, [esp+10h+arg_24]
.text:00425D1C
.text:00425D1C loc_425D1C:                             ; CODE XREF: sub_425B60+1B6j
.text:00425D1C                 cmp     [esp+10h+arg_8], 2
.text:00425D21                 jnz     short loc_425D00
.text:00425D23                 pop     edi
.text:00425D24                 pop     esi
.text:00425D25                 pop     ebp
.text:00425D26                 mov     eax, 7
.text:00425D2B                 pop     ebx
.text:00425D2C                 retn
.text:00425D2D ; ---------------------------------------------------------------------------
.text:00425D2D
.text:00425D2D loc_425D2D:                             ; CODE XREF: sub_425B60+1B0j
.text:00425D2D                 test    ebp, ebp
.text:00425D2F                 jnz     short loc_425CFC
.text:00425D31                 cmp     [esp+10h+arg_8], eax
.text:00425D35                 jnz     short loc_425D00
.text:00425D37                 cmp     [esp+10h+arg_20], eax
.text:00425D3B                 jnz     short loc_425D00
.text:00425D3D                 pop     edi
.text:00425D3E                 pop     esi
.text:00425D3F                 lea     eax, [ebp+4]
.text:00425D42                 pop     ebp
.text:00425D43                 pop     ebx
.text:00425D44                 retn
.text:00425D45 ; ---------------------------------------------------------------------------
.text:00425D45
.text:00425D45 loc_425D45:                             ; CODE XREF: sub_425B60+FCj
.text:00425D45                 cmp     ecx, 4
.text:00425D48                 jnz     loc_425E2A
.text:00425D4E                 test    ebx, ebx
.text:00425D50                 jz      short loc_425D80
.text:00425D52                 cmp     edi, eax
.text:00425D54                 jnz     short loc_425D71
.text:00425D56                 mov     ecx, [esp+10h+arg_20]
.text:00425D5A                 cmp     ecx, eax
.text:00425D5C                 jz      short loc_425D84
.text:00425D5E                 cmp     ecx, 1
.text:00425D61                 jnz     short loc_425D68
.text:00425D63                 lea     eax, [ecx+7]
.text:00425D66                 jmp     short loc_425D84
.text:00425D68 ; ---------------------------------------------------------------------------
.text:00425D68
.text:00425D68 loc_425D68:                             ; CODE XREF: sub_425B60+201j
.text:00425D68                 test    ecx, ecx
.text:00425D6A                 jnz     short loc_425D80
.text:00425D6C                 lea     eax, [ecx+7]
.text:00425D6F                 jmp     short loc_425D84
.text:00425D71 ; ---------------------------------------------------------------------------
.text:00425D71
.text:00425D71 loc_425D71:                             ; CODE XREF: sub_425B60+1F4j
.text:00425D71                 mov     eax, 1
.text:00425D76                 cmp     edi, 3
.text:00425D79                 jz      short loc_425D84
.text:00425D7B                 cmp     edi, 4
.text:00425D7E                 jz      short loc_425D84
.text:00425D80
.text:00425D80 loc_425D80:                             ; CODE XREF: sub_425B60+1F0j
.text:00425D80                                         ; sub_425B60+20Aj
.text:00425D80                 mov     eax, [esp+10h+arg_24]
.text:00425D84
.text:00425D84 loc_425D84:                             ; CODE XREF: sub_425B60+1FCj
.text:00425D84                                         ; sub_425B60+206j ...
.text:00425D84                 mov     ecx, [esp+10h+arg_14]
.text:00425D88                 cmp     ecx, 2
.text:00425D8B                 jnz     short loc_425DBB
.text:00425D8D                 cmp     edi, ecx
.text:00425D8F                 jnz     short loc_425DA1
.text:00425D91                 test    ebp, ebp
.text:00425D93                 jnz     loc_425D00
.text:00425D99                 pop     edi
.text:00425D9A                 pop     esi
.text:00425D9B                 pop     ebp
.text:00425D9C                 lea     eax, [ecx+5]
.text:00425D9F                 pop     ebx
.text:00425DA0                 retn
.text:00425DA1 ; ---------------------------------------------------------------------------
.text:00425DA1
.text:00425DA1 loc_425DA1:                             ; CODE XREF: sub_425B60+22Fj
.text:00425DA1                 cmp     edi, 3
.text:00425DA4                 jz      loc_425C3D
.text:00425DAA                 cmp     edi, 4
.text:00425DAD                 jnz     loc_425D00
.text:00425DB3                 lea     eax, [edi-3]
.text:00425DB6                 pop     edi
.text:00425DB7                 pop     esi
.text:00425DB8                 pop     ebp
.text:00425DB9                 pop     ebx
.text:00425DBA                 retn
.text:00425DBB ; ---------------------------------------------------------------------------
.text:00425DBB
.text:00425DBB loc_425DBB:                             ; CODE XREF: sub_425B60+22Bj
.text:00425DBB                 cmp     ecx, 1
.text:00425DBE                 jnz     short loc_425DEE
.text:00425DC0                 cmp     edi, 3
.text:00425DC3                 jnz     short loc_425DDD
.text:00425DC5                 cmp     ebp, ecx
.text:00425DC7                 jz      loc_425F3D
.text:00425DCD
.text:00425DCD loc_425DCD:                             ; CODE XREF: sub_425B60+2A6j
.text:00425DCD                 test    ebp, ebp
.text:00425DCF                 jnz     loc_425D00
.text:00425DD5                 pop     edi
.text:00425DD6                 pop     esi
.text:00425DD7                 lea     eax, [ebp+2]
.text:00425DDA                 pop     ebp
.text:00425DDB                 pop     ebx
.text:00425DDC                 retn
.text:00425DDD ; ---------------------------------------------------------------------------
.text:00425DDD
.text:00425DDD loc_425DDD:                             ; CODE XREF: sub_425B60+263j
.text:00425DDD                 cmp     edi, 4
.text:00425DE0                 jnz     loc_425D00
.text:00425DE6                 lea     eax, [edi-2]
.text:00425DE9                 pop     edi
.text:00425DEA                 pop     esi
.text:00425DEB                 pop     ebp
.text:00425DEC                 pop     ebx
.text:00425DED                 retn
.text:00425DEE ; ---------------------------------------------------------------------------
.text:00425DEE
.text:00425DEE loc_425DEE:                             ; CODE XREF: sub_425B60+25Ej
.text:00425DEE                 test    ecx, ecx
.text:00425DF0                 jnz     loc_425D00
.text:00425DF6                 test    ebx, ebx
.text:00425DF8                 jnz     loc_425D00
.text:00425DFE                 cmp     edi, 3
.text:00425E01                 jnz     short loc_425E10
.text:00425E03                 cmp     ebp, 1
.text:00425E06                 jnz     short loc_425DCD
.text:00425E08                 pop     edi
.text:00425E09                 pop     esi
.text:00425E0A                 pop     ebp
.text:00425E0B                 lea     eax, [ecx+4]
.text:00425E0E                 pop     ebx
.text:00425E0F                 retn
.text:00425E10 ; ---------------------------------------------------------------------------
.text:00425E10
.text:00425E10 loc_425E10:                             ; CODE XREF: sub_425B60+2A1j
.text:00425E10                 cmp     edi, 4
.text:00425E13                 jnz     loc_425D00
.text:00425E19                 mov     eax, [esp+10h+arg_34]
.text:00425E1D                 neg     eax
.text:00425E1F                 pop     edi
.text:00425E20                 sbb     eax, eax
.text:00425E22                 pop     esi
.text:00425E23                 and     eax, 7
.text:00425E26                 pop     ebp
.text:00425E27                 inc     eax
.text:00425E28                 pop     ebx
.text:00425E29                 retn
.text:00425E2A ; ---------------------------------------------------------------------------
.text:00425E2A
.text:00425E2A loc_425E2A:                             ; CODE XREF: sub_425B60+1E8j
.text:00425E2A                 cmp     ecx, 5
.text:00425E2D                 jnz     loc_425F00
.text:00425E33                 test    ebx, ebx
.text:00425E35                 jz      short loc_425E40
.text:00425E37                 cmp     edi, 4
.text:00425E3A                 jz      short loc_425E6B
.text:00425E3C                 cmp     edi, ecx
.text:00425E3E                 jz      short loc_425E89
.text:00425E40
.text:00425E40 loc_425E40:                             ; CODE XREF: sub_425B60+2D5j
.text:00425E40                 mov     eax, [esp+10h+arg_24]
.text:00425E44
.text:00425E44 loc_425E44:                             ; CODE XREF: sub_425B60+30Dj
.text:00425E44                                         ; sub_425B60+320j ...
.text:00425E44                 mov     ecx, [esp+10h+arg_14]
.text:00425E48                 mov     edx, 1
.text:00425E4D                 cmp     ecx, edx
.text:00425E4F                 jnz     short loc_425EC1
.text:00425E51                 cmp     edi, 4
.text:00425E54                 jnz     short loc_425EB0
.text:00425E56                 mov     ecx, [esp+10h+arg_34]
.text:00425E5A                 test    ecx, ecx
.text:00425E5C                 jz      short loc_425E61
.text:00425E5E                 lea     eax, [edx+8]
.text:00425E61
.text:00425E61 loc_425E61:                             ; CODE XREF: sub_425B60+2FCj
.text:00425E61                 cmp     ebp, 2
.text:00425E64                 jnz     short loc_425E90
.text:00425E66                 lea     eax, [ebp+5]
.text:00425E69                 jmp     short loc_425E99
.text:00425E6B ; ---------------------------------------------------------------------------
.text:00425E6B
.text:00425E6B loc_425E6B:                             ; CODE XREF: sub_425B60+2DAj
.text:00425E6B                 cmp     ebp, eax
.text:00425E6D                 jnz     short loc_425E44
.text:00425E6F                 cmp     [esp+10h+arg_4], 0
.text:00425E74                 jz      short loc_425E7B
.text:00425E76                 mov     eax, 3
.text:00425E7B
.text:00425E7B loc_425E7B:                             ; CODE XREF: sub_425B60+314j
.text:00425E7B                 cmp     [esp+10h+arg_8], 0
.text:00425E80                 jz      short loc_425E44
.text:00425E82                 mov     eax, 7
.text:00425E87                 jmp     short loc_425E44
.text:00425E89 ; ---------------------------------------------------------------------------
.text:00425E89
.text:00425E89 loc_425E89:                             ; CODE XREF: sub_425B60+2DEj
.text:00425E89                 mov     eax, 1
.text:00425E8E                 jmp     short loc_425E44
.text:00425E90 ; ---------------------------------------------------------------------------
.text:00425E90
.text:00425E90 loc_425E90:                             ; CODE XREF: sub_425B60+304j
.text:00425E90                 cmp     ebp, edx
.text:00425E92                 jnz     short loc_425E99
.text:00425E94
.text:00425E94 loc_425E94:                             ; CODE XREF: sub_425B60+38Ej
.text:00425E94                 mov     eax, 3
.text:00425E99
.text:00425E99 loc_425E99:                             ; CODE XREF: sub_425B60+309j
.text:00425E99                                         ; sub_425B60+332j ...
.text:00425E99                 test    ecx, ecx
.text:00425E9B                 jnz     loc_425D00
.text:00425EA1                 test    ebp, ebp
.text:00425EA3
.text:00425EA3 loc_425EA3:                             ; CODE XREF: sub_425B60+39Ej
.text:00425EA3                 jnz     loc_425D00
.text:00425EA9                 pop     edi
.text:00425EAA                 pop     esi
.text:00425EAB                 pop     ebp
.text:00425EAC                 mov     eax, edx
.text:00425EAE                 pop     ebx
.text:00425EAF                 retn
.text:00425EB0 ; ---------------------------------------------------------------------------
.text:00425EB0
.text:00425EB0 loc_425EB0:                             ; CODE XREF: sub_425B60+2F4j
.text:00425EB0                 cmp     edi, 5
.text:00425EB3                 jnz     loc_425D00
.text:00425EB9                 lea     eax, [edi-3]
.text:00425EBC                 pop     edi
.text:00425EBD                 pop     esi
.text:00425EBE                 pop     ebp
.text:00425EBF                 pop     ebx
.text:00425EC0                 retn
.text:00425EC1 ; ---------------------------------------------------------------------------
.text:00425EC1
.text:00425EC1 loc_425EC1:                             ; CODE XREF: sub_425B60+2EFj
.text:00425EC1                 cmp     ecx, 2
.text:00425EC4                 jnz     loc_425D00
.text:00425ECA                 cmp     edi, 4
.text:00425ECD                 jnz     short loc_425EFB
.text:00425ECF                 mov     ecx, [esp+10h+arg_34]
.text:00425ED3                 test    ecx, ecx
.text:00425ED5                 jz      short loc_425EEB
.text:00425ED7                 cmp     [esp+10h+arg_8], edx
.text:00425EDB                 jnz     short loc_425EE0
.text:00425EDD                 lea     eax, [edi+4]
.text:00425EE0
.text:00425EE0 loc_425EE0:                             ; CODE XREF: sub_425B60+37Bj
.text:00425EE0                 cmp     [esp+10h+arg_4], edx
.text:00425EE4                 jnz     short loc_425EEB
.text:00425EE6                 mov     eax, 7
.text:00425EEB
.text:00425EEB loc_425EEB:                             ; CODE XREF: sub_425B60+375j
.text:00425EEB                                         ; sub_425B60+384j
.text:00425EEB                 cmp     ebp, 2
.text:00425EEE                 jz      short loc_425E94
.text:00425EF0                 cmp     ebp, edx
.text:00425EF2                 jnz     short loc_425E99
.text:00425EF4                 mov     eax, 2
.text:00425EF9                 jmp     short loc_425E99
.text:00425EFB ; ---------------------------------------------------------------------------
.text:00425EFB
.text:00425EFB loc_425EFB:                             ; CODE XREF: sub_425B60+36Dj
.text:00425EFB                 cmp     edi, 5
.text:00425EFE                 jmp     short loc_425EA3
.text:00425F00 ; ---------------------------------------------------------------------------
.text:00425F00
.text:00425F00 loc_425F00:                             ; CODE XREF: sub_425B60+2CDj
.text:00425F00                 cmp     ecx, 6
.text:00425F03                 jnz     loc_426060
.text:00425F09                 test    ebx, ebx
.text:00425F0B                 jz      loc_425FBB
.text:00425F11                 cmp     [esp+10h+arg_14], 0
.text:00425F16                 jz      short loc_425F72
.text:00425F18                 cmp     edi, 4
.text:00425F1B                 jnz     short loc_425F47
.text:00425F1D                 cmp     [esp+10h+arg_34], 0
.text:00425F22                 jnz     short loc_425F2C
.text:00425F24                 test    ebp, ebp
.text:00425F26                 jz      loc_425D00
.text:00425F2C
.text:00425F2C loc_425F2C:                             ; CODE XREF: sub_425B60+3C2j
.text:00425F2C                 cmp     ebp, 1
.text:00425F2F                 jz      loc_425CAD
.text:00425F35                 cmp     ebp, eax
.text:00425F37                 jnz     loc_425CFC
.text:00425F3D
.text:00425F3D loc_425F3D:                             ; CODE XREF: sub_425B60+267j
.text:00425F3D                                         ; sub_425B60+4BFj ...
.text:00425F3D                 pop     edi
.text:00425F3E                 pop     esi
.text:00425F3F                 pop     ebp
.text:00425F40                 mov     eax, 3
.text:00425F45                 pop     ebx
.text:00425F46                 retn
.text:00425F47 ; ---------------------------------------------------------------------------
.text:00425F47
.text:00425F47 loc_425F47:                             ; CODE XREF: sub_425B60+3BBj
.text:00425F47                 cmp     edi, 5
.text:00425F4A                 jnz     loc_425FEF
.text:00425F50                 cmp     [esp+10h+arg_34], 0
.text:00425F55                 jz      short loc_425F5C
.text:00425F57                 lea     eax, [edi-4]
.text:00425F5A                 jmp     short loc_425F60
.text:00425F5C ; ---------------------------------------------------------------------------
.text:00425F5C
.text:00425F5C loc_425F5C:                             ; CODE XREF: sub_425B60+3F5j
.text:00425F5C                 mov     eax, [esp+10h+arg_24]
.text:00425F60
.text:00425F60 loc_425F60:                             ; CODE XREF: sub_425B60+3FAj
.text:00425F60                 test    ebp, ebp
.text:00425F62                 jz      loc_425D00
.text:00425F68                 pop     edi
.text:00425F69                 pop     esi
.text:00425F6A                 pop     ebp
.text:00425F6B                 mov     eax, 1
.text:00425F70                 pop     ebx
.text:00425F71                 retn
.text:00425F72 ; ---------------------------------------------------------------------------
.text:00425F72
.text:00425F72 loc_425F72:                             ; CODE XREF: sub_425B60+3B6j
.text:00425F72                 cmp     edi, 4
.text:00425F75                 jnz     short loc_425F92
.text:00425F77                 cmp     [esp+10h+arg_34], 0
.text:00425F7C                 jnz     loc_425CFC
.text:00425F82                 test    ebp, ebp
.text:00425F84                 jnz     loc_425CFC
.text:00425F8A                 lea     eax, [edi+1]
.text:00425F8D                 pop     edi
.text:00425F8E                 pop     esi
.text:00425F8F                 pop     ebp
.text:00425F90                 pop     ebx
.text:00425F91                 retn
.text:00425F92 ; ---------------------------------------------------------------------------
.text:00425F92
.text:00425F92 loc_425F92:                             ; CODE XREF: sub_425B60+415j
.text:00425F92                 cmp     edi, 5
.text:00425F95                 jnz     short loc_425FEF
.text:00425F97                 cmp     [esp+10h+arg_34], 0
.text:00425F9C                 jnz     short loc_425FA2
.text:00425F9E                 mov     eax, [esp+10h+arg_24]
.text:00425FA2
.text:00425FA2 loc_425FA2:                             ; CODE XREF: sub_425B60+43Cj
.text:00425FA2                 cmp     ebp, 2
.text:00425FA5                 jz      loc_425C3D
.text:00425FAB                 cmp     ebp, 1
.text:00425FAE                 jnz     loc_425D00
.text:00425FB4                 pop     edi
.text:00425FB5                 pop     esi
.text:00425FB6                 mov     eax, ebp
.text:00425FB8                 pop     ebp
.text:00425FB9                 pop     ebx
.text:00425FBA                 retn
.text:00425FBB ; ---------------------------------------------------------------------------
.text:00425FBB
.text:00425FBB loc_425FBB:                             ; CODE XREF: sub_425B60+3ABj
.text:00425FBB                 mov     ecx, [esp+10h+arg_14]
.text:00425FBF                 cmp     ecx, eax
.text:00425FC1                 jnz     short loc_426000
.text:00425FC3                 cmp     edi, 5
.text:00425FC6                 jnz     short loc_425FEF
.text:00425FC8                 cmp     [esp+10h+arg_34], 0
.text:00425FCD                 lea     eax, [edi+2]
.text:00425FD0                 jnz     short loc_425FD6
.text:00425FD2                 mov     eax, [esp+10h+arg_24]
.text:00425FD6
.text:00425FD6 loc_425FD6:                             ; CODE XREF: sub_425B60+470j
.text:00425FD6                 cmp     ebp, 1
.text:00425FD9                 jz      loc_425C4F
.text:00425FDF                 cmp     ebp, 2
.text:00425FE2                 jnz     loc_425D00
.text:00425FE8                 pop     edi
.text:00425FE9                 pop     esi
.text:00425FEA                 mov     eax, ebp
.text:00425FEC                 pop     ebp
.text:00425FED                 pop     ebx
.text:00425FEE                 retn
.text:00425FEF ; ---------------------------------------------------------------------------
.text:00425FEF
.text:00425FEF loc_425FEF:                             ; CODE XREF: sub_425B60+3EAj
.text:00425FEF                                         ; sub_425B60+435j ...
.text:00425FEF                 cmp     edi, 6
.text:00425FF2                 jnz     loc_425CFC
.text:00425FF8                 lea     eax, [edi-5]
.text:00425FFB                 pop     edi
.text:00425FFC                 pop     esi
.text:00425FFD                 pop     ebp
.text:00425FFE                 pop     ebx
.text:00425FFF                 retn
.text:00426000 ; ---------------------------------------------------------------------------
.text:00426000
.text:00426000 loc_426000:                             ; CODE XREF: sub_425B60+461j
.text:00426000                 cmp     ecx, 1
.text:00426003                 jnz     loc_425CFC
.text:00426009                 cmp     edi, 5
.text:0042600C                 jnz     short loc_426036
.text:0042600E                 cmp     [esp+10h+arg_34], 0
.text:00426013                 lea     eax, [ecx+8]
.text:00426016                 jnz     short loc_42601C
.text:00426018                 mov     eax, [esp+10h+arg_24]
.text:0042601C
.text:0042601C loc_42601C:                             ; CODE XREF: sub_425B60+4B6j
.text:0042601C                 cmp     ebp, 2
.text:0042601F                 jz      loc_425F3D
.text:00426025                 cmp     ebp, 1
.text:00426028                 jnz     loc_425D00
.text:0042602E                 pop     edi
.text:0042602F                 pop     esi
.text:00426030                 lea     eax, [ebp+1]
.text:00426033                 pop     ebp
.text:00426034                 pop     ebx
.text:00426035                 retn
.text:00426036 ; ---------------------------------------------------------------------------
.text:00426036
.text:00426036 loc_426036:                             ; CODE XREF: sub_425B60+4ACj
.text:00426036                 cmp     edi, 6
.text:00426039                 jnz     loc_425CFC
.text:0042603F                 cmp     [esp+10h+arg_34], 0
.text:00426044                 lea     eax, [edi-5]
.text:00426047                 jz      loc_425D00
.text:0042604D                 lea     eax, [edi-4]
.text:00426050                 test    ebp, ebp
.text:00426052                 jz      loc_425D00
.text:00426058                 lea     eax, [edi-2]
.text:0042605B                 pop     edi
.text:0042605C                 pop     esi
.text:0042605D                 pop     ebp
.text:0042605E                 pop     ebx
.text:0042605F                 retn
.text:00426060 ; ---------------------------------------------------------------------------
.text:00426060
.text:00426060 loc_426060:                             ; CODE XREF: sub_425B60+3A3j
.text:00426060                 cmp     ecx, 7
.text:00426063                 jl      loc_425CFC
.text:00426069                 lea     ecx, [esi+4]
.text:0042606C                 cmp     edx, ecx
.text:0042606E                 mov     eax, 9
.text:00426073                 jg      short loc_426080
.text:00426075                 mov     eax, [esp+10h+arg_24]
.text:00426079                 jnz     short loc_426080
.text:0042607B                 mov     eax, 7
.text:00426080
.text:00426080 loc_426080:                             ; CODE XREF: sub_425B60+513j
.text:00426080                                         ; sub_425B60+519j
.text:00426080                 lea     ecx, [esi+3]
.text:00426083                 cmp     edx, ecx
.text:00426085                 jnz     short loc_42608C
.text:00426087                 mov     eax, 4
.text:0042608C
.text:0042608C loc_42608C:                             ; CODE XREF: sub_425B60+525j
.text:0042608C                 add     esi, 2
.text:0042608F                 cmp     edx, esi
.text:00426091                 jnz     short loc_426098
.text:00426093                 mov     eax, 2
.text:00426098
.text:00426098 loc_426098:                             ; CODE XREF: sub_425B60+531j
.text:00426098                 jge     loc_425D00
.text:0042609E                 pop     edi
.text:0042609F                 pop     esi
.text:004260A0                 pop     ebp
.text:004260A1                 mov     eax, 1
.text:004260A6                 pop     ebx
.text:004260A7                 retn
.text:004260A8 ; ---------------------------------------------------------------------------
.text:004260A8
.text:004260A8 loc_4260A8:                             ; CODE XREF: sub_425B60+74j
.text:004260A8                 mov     esi, 1
.text:004260AD                 cmp     [esp+10h+arg_0], esi
.text:004260B1                 jnz     loc_425CFC
.text:004260B7                 cmp     edi, esi
.text:004260B9                 jnz     short loc_4260F9
.text:004260BB                 cmp     ecx, esi
.text:004260BD                 jz      loc_425F3D
.text:004260C3                 cmp     ecx, 2
.text:004260C6                 jnz     loc_425CFC
.text:004260CC                 cmp     [esp+10h+arg_4], ecx
.text:004260D0                 jnz     short loc_4260E1
.text:004260D2                 xor     eax, eax
.text:004260D4                 cmp     [esp+10h+arg_1C], eax
.text:004260D8                 setnz   al
.text:004260DB                 lea     eax, [eax+eax+3]
.text:004260DF                 jmp     short loc_4260E5
.text:004260E1 ; ---------------------------------------------------------------------------
.text:004260E1
.text:004260E1 loc_4260E1:                             ; CODE XREF: sub_425B60+570j
.text:004260E1                 mov     eax, [esp+10h+arg_24]
.text:004260E5
.text:004260E5 loc_4260E5:                             ; CODE XREF: sub_425B60+57Fj
.text:004260E5                 cmp     [esp+10h+arg_14], esi
.text:004260E9                 jnz     loc_425D00
.text:004260EF                 pop     edi
.text:004260F0                 pop     esi
.text:004260F1                 pop     ebp
.text:004260F2                 mov     eax, 7
.text:004260F7                 pop     ebx
.text:004260F8                 retn
.text:004260F9 ; ---------------------------------------------------------------------------
.text:004260F9
.text:004260F9 loc_4260F9:                             ; CODE XREF: sub_425B60+559j
.text:004260F9                 cmp     edi, 2
.text:004260FC                 jnz     short loc_426135
.text:004260FE                 cmp     ebp, esi
.text:00426100                 jnz     short loc_42611C
.text:00426102                 cmp     ecx, edi
.text:00426104                 jnz     loc_425CFC
.text:0042610A                 cmp     [esp+10h+arg_14], esi
.text:0042610E                 jnz     loc_425CFC
.text:00426114                 lea     eax, [edi+6]
.text:00426117                 pop     edi
.text:00426118                 pop     esi
.text:00426119                 pop     ebp
.text:0042611A                 pop     ebx
.text:0042611B                 retn
.text:0042611C ; ---------------------------------------------------------------------------
.text:0042611C
.text:0042611C loc_42611C:                             ; CODE XREF: sub_425B60+5A0j
.text:0042611C                 test    ebp, ebp
.text:0042611E                 jnz     loc_425CFC
.text:00426124                 cmp     ecx, 2
.text:00426127                 jnz     loc_425CFC
.text:0042612D                 pop     edi
.text:0042612E                 pop     esi
.text:0042612F                 lea     eax, [ebp+4]
.text:00426132                 pop     ebp
.text:00426133                 pop     ebx
.text:00426134                 retn
.text:00426135 ; ---------------------------------------------------------------------------
.text:00426135
.text:00426135 loc_426135:                             ; CODE XREF: sub_425B60+59Cj
.text:00426135                 cmp     edi, 3
.text:00426138                 jl      short loc_42615C
.text:0042613A                 mov     edx, [esp+10h+arg_30]
.text:0042613E                 test    edx, edx
.text:00426140                 jle     short loc_42614B
.text:00426142                 mov     eax, 3
.text:00426147                 cmp     ecx, edi
.text:00426149                 jz      short loc_42614F
.text:0042614B
.text:0042614B loc_42614B:                             ; CODE XREF: sub_425B60+5E0j
.text:0042614B                 mov     eax, [esp+10h+arg_24]
.text:0042614F
.text:0042614F loc_42614F:                             ; CODE XREF: sub_425B60+5E9j
.text:0042614F                 test    edx, edx
.text:00426151                 jnz     short loc_426160
.text:00426153                 cmp     ecx, edi
.text:00426155                 jnz     short loc_426160
.text:00426157                 lea     eax, [edx+5]
.text:0042615A                 jmp     short loc_426160
.text:0042615C ; ---------------------------------------------------------------------------
.text:0042615C
.text:0042615C loc_42615C:                             ; CODE XREF: sub_425B60+5D8j
.text:0042615C                 mov     eax, [esp+10h+arg_24]
.text:00426160
.text:00426160 loc_426160:                             ; CODE XREF: sub_425B60+5F1j
.text:00426160                                         ; sub_425B60+5F5j ...
.text:00426160                 cmp     edi, 4
.text:00426163                 jnz     loc_425D00
.text:00426169                 cmp     [esp+10h+arg_34], esi
.text:0042616D                 jnz     loc_425D00
.text:00426173                 cmp     ecx, edi
.text:00426175                 jnz     loc_425D00
.text:0042617B                 lea     eax, [edi+3]
.text:0042617E                 pop     edi
.text:0042617F                 pop     esi
.text:00426180                 pop     ebp
.text:00426181                 pop     ebx
.text:00426182                 retn
.text:00426182 sub_425B60      endp
Houdini w32 1_CPU
build 2010-05-15
by Robert Houdart

Code: Select all

.text:00427B30 ; =============== S U B R O U T I N E =======================================
.text:00427B30
.text:00427B30
.text:00427B30 sub_427B30      proc near               ; CODE XREF: sub_428340:loc_428611p
.text:00427B30
.text:00427B30 arg_0           = dword ptr  4
.text:00427B30 arg_4           = dword ptr  8
.text:00427B30 arg_8           = dword ptr  0Ch
.text:00427B30 arg_C           = dword ptr  10h
.text:00427B30 arg_10          = dword ptr  14h
.text:00427B30 arg_14          = dword ptr  18h
.text:00427B30 arg_18          = dword ptr  1Ch
.text:00427B30 arg_1C          = dword ptr  20h
.text:00427B30 arg_20          = dword ptr  24h
.text:00427B30 arg_24          = dword ptr  28h
.text:00427B30 arg_28          = dword ptr  2Ch
.text:00427B30 arg_2C          = dword ptr  30h
.text:00427B30 arg_30          = dword ptr  34h
.text:00427B30 arg_34          = dword ptr  38h
.text:00427B30
.text:00427B30                 mov     eax, [esp+arg_14]
.text:00427B34                 mov     edx, [esp+arg_8]
.text:00427B38                 push    ebx
.text:00427B39                 mov     ebx, [esp+4+arg_18]
.text:00427B3D                 lea     ecx, [eax+ebx*2]
.text:00427B40                 mov     eax, [esp+4+arg_4]
.text:00427B44                 lea     ecx, [eax+ecx*2]
.text:00427B47                 push    ebp
.text:00427B48                 mov     ebp, [esp+8+arg_30]
.text:00427B4C                 push    esi
.text:00427B4D                 mov     esi, [esp+0Ch+arg_34]
.text:00427B51                 push    edi
.text:00427B52                 mov     edi, [esp+10h+arg_20]
.text:00427B56                 add     edi, [esp+10h+arg_24]
.text:00427B5A                 lea     eax, [ebp+esi*2+0]
.text:00427B5E                 mov     [esp+10h+arg_30], edi
.text:00427B62                 lea     edi, [edi+eax*2]
.text:00427B65                 mov     eax, [esp+10h+arg_4]
.text:00427B69                 lea     eax, [eax+ebx*2]
.text:00427B6C                 add     eax, ebx
.text:00427B6E                 add     eax, edx
.text:00427B70                 add     ecx, edx
.text:00427B72                 lea     edx, [eax+eax*2]
.text:00427B75                 mov     eax, [esp+10h+arg_14]
.text:00427B79                 lea     eax, [eax+eax*4]
.text:00427B7C                 add     edx, eax
.text:00427B7E                 mov     eax, [esp+10h+arg_20]
.text:00427B82                 lea     eax, [eax+esi*2]
.text:00427B85                 add     eax, esi
.text:00427B87                 add     eax, [esp+10h+arg_24]
.text:00427B8B                 mov     [esp+10h+arg_24], 0Ah
.text:00427B93                 lea     esi, [eax+eax*2]
.text:00427B96                 lea     eax, [ebp+ebp*4+0]
.text:00427B9A                 add     esi, eax
.text:00427B9C                 cmp     [esp+10h+arg_0], 0
.text:00427BA1                 jnz     loc_42806C
.text:00427BA7                 cmp     ecx, 1
.text:00427BAA                 jnz     short loc_427BB3
.text:00427BAC                 pop     edi
.text:00427BAD                 pop     esi
.text:00427BAE                 pop     ebp
.text:00427BAF                 xor     eax, eax
.text:00427BB1                 pop     ebx
.text:00427BB2                 retn
.text:00427BB3 ; ---------------------------------------------------------------------------
.text:00427BB3
.text:00427BB3 loc_427BB3:                             ; CODE XREF: sub_427B30+7Aj
.text:00427BB3                 mov     eax, 2
.text:00427BB8                 cmp     ecx, eax
.text:00427BBA                 jnz     short loc_427C1F
.text:00427BBC                 test    edi, edi
.text:00427BBE                 jnz     short loc_427BD9
.text:00427BC0                 cmp     [esp+10h+arg_4], eax
.text:00427BC4                 jnz     loc_427CC2
.text:00427BCA                 pop     edi
.text:00427BCB                 xor     eax, eax
.text:00427BCD                 cmp     [esp+0Ch+arg_1C], 1
.text:00427BD2                 pop     esi
.text:00427BD3                 pop     ebp
.text:00427BD4                 setnl   al
.text:00427BD7                 pop     ebx
.text:00427BD8                 retn
.text:00427BD9 ; ---------------------------------------------------------------------------
.text:00427BD9
.text:00427BD9 loc_427BD9:                             ; CODE XREF: sub_427B30+8Ej
.text:00427BD9                 cmp     edi, 1
.text:00427BDC                 jnz     short loc_427C0D
.text:00427BDE                 cmp     [esp+10h+arg_8], 2
.text:00427BE3                 mov     ecx, edi
.text:00427BE5                 mov     eax, ecx
.text:00427BE7                 jnz     short loc_427BF2
.text:00427BE9                 cmp     [esp+10h+arg_20], ecx
.text:00427BED                 jnz     short loc_427BF2
.text:00427BEF                 lea     eax, [edi+7]
.text:00427BF2
.text:00427BF2 loc_427BF2:                             ; CODE XREF: sub_427B30+B7j
.text:00427BF2                                         ; sub_427B30+BDj
.text:00427BF2                 cmp     [esp+10h+arg_14], ecx
.text:00427BF6                 jnz     loc_427CC6
.text:00427BFC                 cmp     [esp+10h+arg_20], ecx
.text:00427C00                 jnz     loc_427CC6
.text:00427C06                 pop     edi
.text:00427C07                 pop     esi
.text:00427C08                 pop     ebp
.text:00427C09                 mov     eax, ecx
.text:00427C0B                 pop     ebx
.text:00427C0C                 retn
.text:00427C0D ; ---------------------------------------------------------------------------
.text:00427C0D
.text:00427C0D loc_427C0D:                             ; CODE XREF: sub_427B30+ACj
.text:00427C0D                 cmp     edi, eax
.text:00427C0F                 jnz     loc_427CC2
.text:00427C15
.text:00427C15 loc_427C15:                             ; CODE XREF: sub_427B30+46Dj
.text:00427C15                 pop     edi
.text:00427C16                 pop     esi
.text:00427C17                 pop     ebp
.text:00427C18                 mov     eax, 1
.text:00427C1D                 pop     ebx
.text:00427C1E                 retn
.text:00427C1F ; ---------------------------------------------------------------------------
.text:00427C1F
.text:00427C1F loc_427C1F:                             ; CODE XREF: sub_427B30+8Aj
.text:00427C1F                 cmp     ecx, 3
.text:00427C22                 jnz     loc_427D0B
.text:00427C28                 mov     ecx, [esp+10h+arg_14]
.text:00427C2C                 cmp     ecx, 1
.text:00427C2F                 jnz     loc_427CCB
.text:00427C35                 cmp     edi, eax
.text:00427C37                 jnz     loc_427CBD
.text:00427C3D                 cmp     ebp, ecx
.text:00427C3F                 jnz     short loc_427C5E
.text:00427C41                 mov     eax, ecx
.text:00427C43                 cmp     [esp+10h+arg_4], ecx
.text:00427C47                 jz      short loc_427C4D
.text:00427C49                 mov     eax, [esp+10h+arg_24]
.text:00427C4D
.text:00427C4D loc_427C4D:                             ; CODE XREF: sub_427B30+117j
.text:00427C4D                 cmp     [esp+10h+arg_8], 1
.text:00427C52                 jnz     short loc_427CC6
.text:00427C54                 pop     edi
.text:00427C55                 pop     esi
.text:00427C56                 pop     ebp
.text:00427C57                 mov     eax, 1
.text:00427C5C                 pop     ebx
.text:00427C5D                 retn
.text:00427C5E ; ---------------------------------------------------------------------------
.text:00427C5E
.text:00427C5E loc_427C5E:                             ; CODE XREF: sub_427B30+10Fj
.text:00427C5E                 test    ebp, ebp
.text:00427C60                 jnz     short loc_427CC2
.text:00427C62                 mov     edx, 1
.text:00427C67                 cmp     [esp+10h+arg_8], edx
.text:00427C6B                 jnz     short loc_427C7D
.text:00427C6D                 cmp     [esp+10h+arg_20], eax
.text:00427C71                 jnz     short loc_427C7D
.text:00427C73
.text:00427C73 loc_427C73:                             ; CODE XREF: sub_427B30+3C3j
.text:00427C73                 pop     edi
.text:00427C74                 pop     esi
.text:00427C75                 pop     ebp
.text:00427C76                 mov     eax, 6
.text:00427C7B                 pop     ebx
.text:00427C7C                 retn
.text:00427C7D ; ---------------------------------------------------------------------------
.text:00427C7D
.text:00427C7D loc_427C7D:                             ; CODE XREF: sub_427B30+13Bj
.text:00427C7D                                         ; sub_427B30+141j
.text:00427C7D                 cmp     [esp+10h+arg_20], edx
.text:00427C81                 jnz     short loc_427CC6
.text:00427C83                 mov     ecx, [esp+10h+arg_C]
.text:00427C87                 cmp     ecx, edx
.text:00427C89                 jnz     short loc_427C91
.text:00427C8B                 cmp     [esp+10h+arg_28], edx
.text:00427C8F                 jz      short loc_427C9D
.text:00427C91
.text:00427C91 loc_427C91:                             ; CODE XREF: sub_427B30+159j
.text:00427C91                 cmp     [esp+10h+arg_10], edx
.text:00427C95                 jnz     short loc_427CA9
.text:00427C97                 cmp     [esp+10h+arg_2C], edx
.text:00427C9B                 jnz     short loc_427CA3
.text:00427C9D
.text:00427C9D loc_427C9D:                             ; CODE XREF: sub_427B30+15Fj
.text:00427C9D                 cmp     [esp+10h+arg_10], edx
.text:00427CA1                 jnz     short loc_427CA9
.text:00427CA3
.text:00427CA3 loc_427CA3:                             ; CODE XREF: sub_427B30+16Bj
.text:00427CA3                 cmp     [esp+10h+arg_28], edx
.text:00427CA7                 jz      short loc_427CB3
.text:00427CA9
.text:00427CA9 loc_427CA9:                             ; CODE XREF: sub_427B30+165j
.text:00427CA9                                         ; sub_427B30+171j
.text:00427CA9                 cmp     ecx, edx
.text:00427CAB                 jnz     short loc_427CC6
.text:00427CAD                 cmp     [esp+10h+arg_2C], edx
.text:00427CB1                 jnz     short loc_427CC6
.text:00427CB3
.text:00427CB3 loc_427CB3:                             ; CODE XREF: sub_427B30+177j
.text:00427CB3                 pop     edi
.text:00427CB4                 pop     esi
.text:00427CB5                 pop     ebp
.text:00427CB6                 mov     eax, 7
.text:00427CBB                 pop     ebx
.text:00427CBC                 retn
.text:00427CBD ; ---------------------------------------------------------------------------
.text:00427CBD
.text:00427CBD loc_427CBD:                             ; CODE XREF: sub_427B30+107j
.text:00427CBD                                         ; sub_427B30+1A1j
.text:00427CBD                 cmp     edi, 3
.text:00427CC0                 jz      short loc_427CC6
.text:00427CC2
.text:00427CC2 loc_427CC2:                             ; CODE XREF: sub_427B30+94j
.text:00427CC2                                         ; sub_427B30+DFj ...
.text:00427CC2                 mov     eax, [esp+10h+arg_24]
.text:00427CC6
.text:00427CC6 loc_427CC6:                             ; CODE XREF: sub_427B30+C6j
.text:00427CC6                                         ; sub_427B30+D0j ...
.text:00427CC6                 pop     edi
.text:00427CC7                 pop     esi
.text:00427CC8                 pop     ebp
.text:00427CC9                 pop     ebx
.text:00427CCA                 retn
.text:00427CCB ; ---------------------------------------------------------------------------
.text:00427CCB
.text:00427CCB loc_427CCB:                             ; CODE XREF: sub_427B30+FFj
.text:00427CCB                 test    ecx, ecx
.text:00427CCD                 jnz     short loc_427CC2
.text:00427CCF                 cmp     edi, eax
.text:00427CD1                 jnz     short loc_427CBD
.text:00427CD3                 cmp     ebp, 1
.text:00427CD6                 jnz     short loc_427CF3
.text:00427CD8                 cmp     [esp+10h+arg_4], eax
.text:00427CDC                 jz      short loc_427CE2
.text:00427CDE                 mov     eax, [esp+10h+arg_24]
.text:00427CE2
.text:00427CE2 loc_427CE2:                             ; CODE XREF: sub_427B30+1ACj
.text:00427CE2                 cmp     [esp+10h+arg_8], 2
.text:00427CE7                 jnz     short loc_427CC6
.text:00427CE9                 pop     edi
.text:00427CEA                 pop     esi
.text:00427CEB                 pop     ebp
.text:00427CEC                 mov     eax, 7
.text:00427CF1                 pop     ebx
.text:00427CF2                 retn
.text:00427CF3 ; ---------------------------------------------------------------------------
.text:00427CF3
.text:00427CF3 loc_427CF3:                             ; CODE XREF: sub_427B30+1A6j
.text:00427CF3                 test    ebp, ebp
.text:00427CF5                 jnz     short loc_427CC2
.text:00427CF7                 cmp     [esp+10h+arg_8], eax
.text:00427CFB                 jnz     short loc_427CC6
.text:00427CFD                 cmp     [esp+10h+arg_20], eax
.text:00427D01                 jnz     short loc_427CC6
.text:00427D03                 pop     edi
.text:00427D04                 pop     esi
.text:00427D05                 lea     eax, [ebp+4]
.text:00427D08                 pop     ebp
.text:00427D09                 pop     ebx
.text:00427D0A                 retn
.text:00427D0B ; ---------------------------------------------------------------------------
.text:00427D0B
.text:00427D0B loc_427D0B:                             ; CODE XREF: sub_427B30+F2j
.text:00427D0B                 cmp     ecx, 4
.text:00427D0E                 jnz     loc_427DEE
.text:00427D14                 test    ebx, ebx
.text:00427D16                 jz      short loc_427D46
.text:00427D18                 cmp     edi, eax
.text:00427D1A                 jnz     short loc_427D37
.text:00427D1C                 mov     ecx, [esp+10h+arg_20]
.text:00427D20                 cmp     ecx, eax
.text:00427D22                 jz      short loc_427D4A
.text:00427D24                 cmp     ecx, 1
.text:00427D27                 jnz     short loc_427D2E
.text:00427D29                 lea     eax, [ecx+7]
.text:00427D2C                 jmp     short loc_427D4A
.text:00427D2E ; ---------------------------------------------------------------------------
.text:00427D2E
.text:00427D2E loc_427D2E:                             ; CODE XREF: sub_427B30+1F7j
.text:00427D2E                 test    ecx, ecx
.text:00427D30                 jnz     short loc_427D46
.text:00427D32                 lea     eax, [ecx+7]
.text:00427D35                 jmp     short loc_427D4A
.text:00427D37 ; ---------------------------------------------------------------------------
.text:00427D37
.text:00427D37 loc_427D37:                             ; CODE XREF: sub_427B30+1EAj
.text:00427D37                 mov     eax, 1
.text:00427D3C                 cmp     edi, 3
.text:00427D3F                 jz      short loc_427D4A
.text:00427D41                 cmp     edi, 4
.text:00427D44                 jz      short loc_427D4A
.text:00427D46
.text:00427D46 loc_427D46:                             ; CODE XREF: sub_427B30+1E6j
.text:00427D46                                         ; sub_427B30+200j
.text:00427D46                 mov     eax, [esp+10h+arg_24]
.text:00427D4A
.text:00427D4A loc_427D4A:                             ; CODE XREF: sub_427B30+1F2j
.text:00427D4A                                         ; sub_427B30+1FCj ...
.text:00427D4A                 mov     ecx, [esp+10h+arg_14]
.text:00427D4E                 cmp     ecx, 2
.text:00427D51                 jnz     short loc_427D7D
.text:00427D53                 cmp     edi, ecx
.text:00427D55                 jnz     short loc_427D67
.text:00427D57                 test    ebp, ebp
.text:00427D59                 jnz     loc_427CC6
.text:00427D5F                 pop     edi
.text:00427D60                 pop     esi
.text:00427D61                 pop     ebp
.text:00427D62                 lea     eax, [ecx+5]
.text:00427D65                 pop     ebx
.text:00427D66                 retn
.text:00427D67 ; ---------------------------------------------------------------------------
.text:00427D67
.text:00427D67 loc_427D67:                             ; CODE XREF: sub_427B30+225j
.text:00427D67                 cmp     edi, 3
.text:00427D6A                 jz      short loc_427D97
.text:00427D6C                 cmp     edi, 4
.text:00427D6F                 jnz     loc_427CC6
.text:00427D75                 lea     eax, [edi-3]
.text:00427D78                 pop     edi
.text:00427D79                 pop     esi
.text:00427D7A                 pop     ebp
.text:00427D7B                 pop     ebx
.text:00427D7C                 retn
.text:00427D7D ; ---------------------------------------------------------------------------
.text:00427D7D
.text:00427D7D loc_427D7D:                             ; CODE XREF: sub_427B30+221j
.text:00427D7D                 cmp     ecx, 1
.text:00427D80                 jnz     short loc_427DB2
.text:00427D82                 cmp     edi, 3
.text:00427D85                 jnz     short loc_427DA1
.text:00427D87                 cmp     ebp, ecx
.text:00427D89                 jz      loc_427F01
.text:00427D8F
.text:00427D8F loc_427D8F:                             ; CODE XREF: sub_427B30+29Aj
.text:00427D8F                 test    ebp, ebp
.text:00427D91                 jnz     loc_427CC6
.text:00427D97
.text:00427D97 loc_427D97:                             ; CODE XREF: sub_427B30+23Aj
.text:00427D97                                         ; sub_427B30+439j
.text:00427D97                 pop     edi
.text:00427D98                 pop     esi
.text:00427D99                 pop     ebp
.text:00427D9A                 mov     eax, 2
.text:00427D9F                 pop     ebx
.text:00427DA0                 retn
.text:00427DA1 ; ---------------------------------------------------------------------------
.text:00427DA1
.text:00427DA1 loc_427DA1:                             ; CODE XREF: sub_427B30+255j
.text:00427DA1                 cmp     edi, 4
.text:00427DA4                 jnz     loc_427CC6
.text:00427DAA                 lea     eax, [edi-2]
.text:00427DAD                 pop     edi
.text:00427DAE                 pop     esi
.text:00427DAF                 pop     ebp
.text:00427DB0                 pop     ebx
.text:00427DB1                 retn
.text:00427DB2 ; ---------------------------------------------------------------------------
.text:00427DB2
.text:00427DB2 loc_427DB2:                             ; CODE XREF: sub_427B30+250j
.text:00427DB2                 test    ecx, ecx
.text:00427DB4                 jnz     loc_427CC6
.text:00427DBA                 test    ebx, ebx
.text:00427DBC                 jnz     loc_427CC6
.text:00427DC2                 cmp     edi, 3
.text:00427DC5                 jnz     short loc_427DD4
.text:00427DC7                 cmp     ebp, 1
.text:00427DCA                 jnz     short loc_427D8F
.text:00427DCC                 pop     edi
.text:00427DCD                 pop     esi
.text:00427DCE                 pop     ebp
.text:00427DCF                 lea     eax, [ecx+4]
.text:00427DD2                 pop     ebx
.text:00427DD3                 retn
.text:00427DD4 ; ---------------------------------------------------------------------------
.text:00427DD4
.text:00427DD4 loc_427DD4:                             ; CODE XREF: sub_427B30+295j
.text:00427DD4                 cmp     edi, 4
.text:00427DD7                 jnz     loc_427CC6
.text:00427DDD                 mov     eax, [esp+10h+arg_34]
.text:00427DE1                 neg     eax
.text:00427DE3                 pop     edi
.text:00427DE4                 sbb     eax, eax
.text:00427DE6                 pop     esi
.text:00427DE7                 and     eax, 7
.text:00427DEA                 pop     ebp
.text:00427DEB                 inc     eax
.text:00427DEC                 pop     ebx
.text:00427DED                 retn
.text:00427DEE ; ---------------------------------------------------------------------------
.text:00427DEE
.text:00427DEE loc_427DEE:                             ; CODE XREF: sub_427B30+1DEj
.text:00427DEE                 cmp     ecx, 5
.text:00427DF1                 jnz     loc_427EC4
.text:00427DF7                 test    ebx, ebx
.text:00427DF9                 jz      short loc_427E04
.text:00427DFB                 cmp     edi, 4
.text:00427DFE                 jz      short loc_427E2F
.text:00427E00                 cmp     edi, ecx
.text:00427E02                 jz      short loc_427E4D
.text:00427E04
.text:00427E04 loc_427E04:                             ; CODE XREF: sub_427B30+2C9j
.text:00427E04                 mov     eax, [esp+10h+arg_24]
.text:00427E08
.text:00427E08 loc_427E08:                             ; CODE XREF: sub_427B30+301j
.text:00427E08                                         ; sub_427B30+314j ...
.text:00427E08                 mov     ecx, [esp+10h+arg_14]
.text:00427E0C                 mov     edx, 1
.text:00427E11                 cmp     ecx, edx
.text:00427E13                 jnz     short loc_427E85
.text:00427E15                 cmp     edi, 4
.text:00427E18                 jnz     short loc_427E74
.text:00427E1A                 mov     ecx, [esp+10h+arg_34]
.text:00427E1E                 test    ecx, ecx
.text:00427E20                 jz      short loc_427E25
.text:00427E22                 lea     eax, [edx+8]
.text:00427E25
.text:00427E25 loc_427E25:                             ; CODE XREF: sub_427B30+2F0j
.text:00427E25                 cmp     ebp, 2
.text:00427E28                 jnz     short loc_427E54
.text:00427E2A                 lea     eax, [ebp+5]
.text:00427E2D                 jmp     short loc_427E5D
.text:00427E2F ; ---------------------------------------------------------------------------
.text:00427E2F
.text:00427E2F loc_427E2F:                             ; CODE XREF: sub_427B30+2CEj
.text:00427E2F                 cmp     ebp, eax
.text:00427E31                 jnz     short loc_427E08
.text:00427E33                 cmp     [esp+10h+arg_4], 0
.text:00427E38                 jz      short loc_427E3F
.text:00427E3A                 mov     eax, 3
.text:00427E3F
.text:00427E3F loc_427E3F:                             ; CODE XREF: sub_427B30+308j
.text:00427E3F                 cmp     [esp+10h+arg_8], 0
.text:00427E44                 jz      short loc_427E08
.text:00427E46                 mov     eax, 7
.text:00427E4B                 jmp     short loc_427E08
.text:00427E4D ; ---------------------------------------------------------------------------
.text:00427E4D
.text:00427E4D loc_427E4D:                             ; CODE XREF: sub_427B30+2D2j
.text:00427E4D                 mov     eax, 1
.text:00427E52                 jmp     short loc_427E08
.text:00427E54 ; ---------------------------------------------------------------------------
.text:00427E54
.text:00427E54 loc_427E54:                             ; CODE XREF: sub_427B30+2F8j
.text:00427E54                 cmp     ebp, edx
.text:00427E56                 jnz     short loc_427E5D
.text:00427E58
.text:00427E58 loc_427E58:                             ; CODE XREF: sub_427B30+382j
.text:00427E58                 mov     eax, 3
.text:00427E5D
.text:00427E5D loc_427E5D:                             ; CODE XREF: sub_427B30+2FDj
.text:00427E5D                                         ; sub_427B30+326j ...
.text:00427E5D                 test    ecx, ecx
.text:00427E5F                 jnz     loc_427CC6
.text:00427E65                 test    ebp, ebp
.text:00427E67
.text:00427E67 loc_427E67:                             ; CODE XREF: sub_427B30+392j
.text:00427E67                 jnz     loc_427CC6
.text:00427E6D                 pop     edi
.text:00427E6E                 pop     esi
.text:00427E6F                 pop     ebp
.text:00427E70                 mov     eax, edx
.text:00427E72                 pop     ebx
.text:00427E73                 retn
.text:00427E74 ; ---------------------------------------------------------------------------
.text:00427E74
.text:00427E74 loc_427E74:                             ; CODE XREF: sub_427B30+2E8j
.text:00427E74                 cmp     edi, 5
.text:00427E77                 jnz     loc_427CC6
.text:00427E7D                 lea     eax, [edi-3]
.text:00427E80                 pop     edi
.text:00427E81                 pop     esi
.text:00427E82                 pop     ebp
.text:00427E83                 pop     ebx
.text:00427E84                 retn
.text:00427E85 ; ---------------------------------------------------------------------------
.text:00427E85
.text:00427E85 loc_427E85:                             ; CODE XREF: sub_427B30+2E3j
.text:00427E85                 cmp     ecx, 2
.text:00427E88                 jnz     loc_427CC6
.text:00427E8E                 cmp     edi, 4
.text:00427E91                 jnz     short loc_427EBF
.text:00427E93                 mov     ecx, [esp+10h+arg_34]
.text:00427E97                 test    ecx, ecx
.text:00427E99                 jz      short loc_427EAF
.text:00427E9B                 cmp     [esp+10h+arg_8], edx
.text:00427E9F                 jnz     short loc_427EA4
.text:00427EA1                 lea     eax, [edi+4]
.text:00427EA4
.text:00427EA4 loc_427EA4:                             ; CODE XREF: sub_427B30+36Fj
.text:00427EA4                 cmp     [esp+10h+arg_4], edx
.text:00427EA8                 jnz     short loc_427EAF
.text:00427EAA                 mov     eax, 7
.text:00427EAF
.text:00427EAF loc_427EAF:                             ; CODE XREF: sub_427B30+369j
.text:00427EAF                                         ; sub_427B30+378j
.text:00427EAF                 cmp     ebp, 2
.text:00427EB2                 jz      short loc_427E58
.text:00427EB4                 cmp     ebp, edx
.text:00427EB6                 jnz     short loc_427E5D
.text:00427EB8                 mov     eax, 2
.text:00427EBD                 jmp     short loc_427E5D
.text:00427EBF ; ---------------------------------------------------------------------------
.text:00427EBF
.text:00427EBF loc_427EBF:                             ; CODE XREF: sub_427B30+361j
.text:00427EBF                 cmp     edi, 5
.text:00427EC2                 jmp     short loc_427E67
.text:00427EC4 ; ---------------------------------------------------------------------------
.text:00427EC4
.text:00427EC4 loc_427EC4:                             ; CODE XREF: sub_427B30+2C1j
.text:00427EC4                 cmp     ecx, 6
.text:00427EC7                 jnz     loc_428024
.text:00427ECD                 test    ebx, ebx
.text:00427ECF                 jz      loc_427F7F
.text:00427ED5                 cmp     [esp+10h+arg_14], 0
.text:00427EDA                 jz      short loc_427F36
.text:00427EDC                 cmp     edi, 4
.text:00427EDF                 jnz     short loc_427F0B
.text:00427EE1                 cmp     [esp+10h+arg_34], 0
.text:00427EE6                 jnz     short loc_427EF0
.text:00427EE8                 test    ebp, ebp
.text:00427EEA                 jz      loc_427CC6
.text:00427EF0
.text:00427EF0 loc_427EF0:                             ; CODE XREF: sub_427B30+3B6j
.text:00427EF0                 cmp     ebp, 1
.text:00427EF3                 jz      loc_427C73
.text:00427EF9                 cmp     ebp, eax
.text:00427EFB                 jnz     loc_427CC2
.text:00427F01
.text:00427F01 loc_427F01:                             ; CODE XREF: sub_427B30+259j
.text:00427F01                                         ; sub_427B30+4B3j ...
.text:00427F01                 pop     edi
.text:00427F02                 pop     esi
.text:00427F03                 pop     ebp
.text:00427F04                 mov     eax, 3
.text:00427F09                 pop     ebx
.text:00427F0A                 retn
.text:00427F0B ; ---------------------------------------------------------------------------
.text:00427F0B
.text:00427F0B loc_427F0B:                             ; CODE XREF: sub_427B30+3AFj
.text:00427F0B                 cmp     edi, 5
.text:00427F0E                 jnz     loc_427FB3
.text:00427F14                 cmp     [esp+10h+arg_34], 0
.text:00427F19                 jz      short loc_427F20
.text:00427F1B                 lea     eax, [edi-4]
.text:00427F1E                 jmp     short loc_427F24
.text:00427F20 ; ---------------------------------------------------------------------------
.text:00427F20
.text:00427F20 loc_427F20:                             ; CODE XREF: sub_427B30+3E9j
.text:00427F20                 mov     eax, [esp+10h+arg_24]
.text:00427F24
.text:00427F24 loc_427F24:                             ; CODE XREF: sub_427B30+3EEj
.text:00427F24                 test    ebp, ebp
.text:00427F26                 jz      loc_427CC6
.text:00427F2C                 pop     edi
.text:00427F2D                 pop     esi
.text:00427F2E                 pop     ebp
.text:00427F2F                 mov     eax, 1
.text:00427F34                 pop     ebx
.text:00427F35                 retn
.text:00427F36 ; ---------------------------------------------------------------------------
.text:00427F36
.text:00427F36 loc_427F36:                             ; CODE XREF: sub_427B30+3AAj
.text:00427F36                 cmp     edi, 4
.text:00427F39                 jnz     short loc_427F56
.text:00427F3B                 cmp     [esp+10h+arg_34], 0
.text:00427F40                 jnz     loc_427CC2
.text:00427F46                 test    ebp, ebp
.text:00427F48                 jnz     loc_427CC2
.text:00427F4E                 lea     eax, [edi+1]
.text:00427F51                 pop     edi
.text:00427F52                 pop     esi
.text:00427F53                 pop     ebp
.text:00427F54                 pop     ebx
.text:00427F55                 retn
.text:00427F56 ; ---------------------------------------------------------------------------
.text:00427F56
.text:00427F56 loc_427F56:                             ; CODE XREF: sub_427B30+409j
.text:00427F56                 cmp     edi, 5
.text:00427F59                 jnz     short loc_427FB3
.text:00427F5B                 cmp     [esp+10h+arg_34], 0
.text:00427F60                 jnz     short loc_427F66
.text:00427F62                 mov     eax, [esp+10h+arg_24]
.text:00427F66
.text:00427F66 loc_427F66:                             ; CODE XREF: sub_427B30+430j
.text:00427F66                 cmp     ebp, 2
.text:00427F69                 jz      loc_427D97
.text:00427F6F                 cmp     ebp, 1
.text:00427F72                 jnz     loc_427CC6
.text:00427F78                 pop     edi
.text:00427F79                 pop     esi
.text:00427F7A                 mov     eax, ebp
.text:00427F7C                 pop     ebp
.text:00427F7D                 pop     ebx
.text:00427F7E                 retn
.text:00427F7F ; ---------------------------------------------------------------------------
.text:00427F7F
.text:00427F7F loc_427F7F:                             ; CODE XREF: sub_427B30+39Fj
.text:00427F7F                 mov     ecx, [esp+10h+arg_14]
.text:00427F83                 cmp     ecx, eax
.text:00427F85                 jnz     short loc_427FC4
.text:00427F87                 cmp     edi, 5
.text:00427F8A                 jnz     short loc_427FB3
.text:00427F8C                 cmp     [esp+10h+arg_34], 0
.text:00427F91                 lea     eax, [edi+2]
.text:00427F94                 jnz     short loc_427F9A
.text:00427F96                 mov     eax, [esp+10h+arg_24]
.text:00427F9A
.text:00427F9A loc_427F9A:                             ; CODE XREF: sub_427B30+464j
.text:00427F9A                 cmp     ebp, 1
.text:00427F9D                 jz      loc_427C15
.text:00427FA3                 cmp     ebp, 2
.text:00427FA6                 jnz     loc_427CC6
.text:00427FAC                 pop     edi
.text:00427FAD                 pop     esi
.text:00427FAE                 mov     eax, ebp
.text:00427FB0                 pop     ebp
.text:00427FB1                 pop     ebx
.text:00427FB2                 retn
.text:00427FB3 ; ---------------------------------------------------------------------------
.text:00427FB3
.text:00427FB3 loc_427FB3:                             ; CODE XREF: sub_427B30+3DEj
.text:00427FB3                                         ; sub_427B30+429j ...
.text:00427FB3                 cmp     edi, 6
.text:00427FB6                 jnz     loc_427CC2
.text:00427FBC                 lea     eax, [edi-5]
.text:00427FBF                 pop     edi
.text:00427FC0                 pop     esi
.text:00427FC1                 pop     ebp
.text:00427FC2                 pop     ebx
.text:00427FC3                 retn
.text:00427FC4 ; ---------------------------------------------------------------------------
.text:00427FC4
.text:00427FC4 loc_427FC4:                             ; CODE XREF: sub_427B30+455j
.text:00427FC4                 cmp     ecx, 1
.text:00427FC7                 jnz     loc_427CC2
.text:00427FCD                 cmp     edi, 5
.text:00427FD0                 jnz     short loc_427FFA
.text:00427FD2                 cmp     [esp+10h+arg_34], 0
.text:00427FD7                 lea     eax, [ecx+8]
.text:00427FDA                 jnz     short loc_427FE0
.text:00427FDC                 mov     eax, [esp+10h+arg_24]
.text:00427FE0
.text:00427FE0 loc_427FE0:                             ; CODE XREF: sub_427B30+4AAj
.text:00427FE0                 cmp     ebp, 2
.text:00427FE3                 jz      loc_427F01
.text:00427FE9                 cmp     ebp, 1
.text:00427FEC                 jnz     loc_427CC6
.text:00427FF2                 pop     edi
.text:00427FF3                 pop     esi
.text:00427FF4                 lea     eax, [ebp+1]
.text:00427FF7                 pop     ebp
.text:00427FF8                 pop     ebx
.text:00427FF9                 retn
.text:00427FFA ; ---------------------------------------------------------------------------
.text:00427FFA
.text:00427FFA loc_427FFA:                             ; CODE XREF: sub_427B30+4A0j
.text:00427FFA                 cmp     edi, 6
.text:00427FFD                 jnz     loc_427CC2
.text:00428003                 cmp     [esp+10h+arg_34], 0
.text:00428008                 lea     eax, [edi-5]
.text:0042800B                 jz      loc_427CC6
.text:00428011                 lea     eax, [edi-4]
.text:00428014                 test    ebp, ebp
.text:00428016                 jz      loc_427CC6
.text:0042801C                 lea     eax, [edi-2]
.text:0042801F                 pop     edi
.text:00428020                 pop     esi
.text:00428021                 pop     ebp
.text:00428022                 pop     ebx
.text:00428023                 retn
.text:00428024 ; ---------------------------------------------------------------------------
.text:00428024
.text:00428024 loc_428024:                             ; CODE XREF: sub_427B30+397j
.text:00428024                 cmp     ecx, 7
.text:00428027                 jl      loc_427CC2
.text:0042802D                 lea     ecx, [esi+4]
.text:00428030                 mov     eax, 9
.text:00428035                 cmp     edx, ecx
.text:00428037                 jg      short loc_428044
.text:00428039                 mov     eax, [esp+10h+arg_24]
.text:0042803D                 jnz     short loc_428044
.text:0042803F                 mov     eax, 7
.text:00428044
.text:00428044 loc_428044:                             ; CODE XREF: sub_427B30+507j
.text:00428044                                         ; sub_427B30+50Dj
.text:00428044                 lea     ecx, [esi+3]
.text:00428047                 cmp     edx, ecx
.text:00428049                 jnz     short loc_428050
.text:0042804B                 mov     eax, 4
.text:00428050
.text:00428050 loc_428050:                             ; CODE XREF: sub_427B30+519j
.text:00428050                 add     esi, 2
.text:00428053                 cmp     edx, esi
.text:00428055                 jnz     short loc_42805C
.text:00428057                 mov     eax, 2
.text:0042805C
.text:0042805C loc_42805C:                             ; CODE XREF: sub_427B30+525j
.text:0042805C                 jge     loc_427CC6
.text:00428062                 pop     edi
.text:00428063                 pop     esi
.text:00428064                 pop     ebp
.text:00428065                 mov     eax, 1
.text:0042806A                 pop     ebx
.text:0042806B                 retn
.text:0042806C ; ---------------------------------------------------------------------------
.text:0042806C
.text:0042806C loc_42806C:                             ; CODE XREF: sub_427B30+71j
.text:0042806C                 mov     esi, 1
.text:00428071                 cmp     [esp+10h+arg_0], esi
.text:00428075                 jnz     loc_427CC2
.text:0042807B                 cmp     edi, esi
.text:0042807D                 jnz     short loc_4280BD
.text:0042807F                 cmp     ecx, esi
.text:00428081                 jz      loc_427F01
.text:00428087                 cmp     ecx, 2
.text:0042808A                 jnz     loc_427CC2
.text:00428090                 cmp     [esp+10h+arg_4], ecx
.text:00428094                 jnz     short loc_4280A5
.text:00428096                 xor     eax, eax
.text:00428098                 cmp     [esp+10h+arg_1C], eax
.text:0042809C                 setnz   al
.text:0042809F                 lea     eax, [eax+eax+3]
.text:004280A3                 jmp     short loc_4280A9
.text:004280A5 ; ---------------------------------------------------------------------------
.text:004280A5
.text:004280A5 loc_4280A5:                             ; CODE XREF: sub_427B30+564j
.text:004280A5                 mov     eax, [esp+10h+arg_24]
.text:004280A9
.text:004280A9 loc_4280A9:                             ; CODE XREF: sub_427B30+573j
.text:004280A9                 cmp     [esp+10h+arg_14], esi
.text:004280AD                 jnz     loc_427CC6
.text:004280B3                 pop     edi
.text:004280B4                 pop     esi
.text:004280B5                 pop     ebp
.text:004280B6                 mov     eax, 7
.text:004280BB                 pop     ebx
.text:004280BC                 retn
.text:004280BD ; ---------------------------------------------------------------------------
.text:004280BD
.text:004280BD loc_4280BD:                             ; CODE XREF: sub_427B30+54Dj
.text:004280BD                 cmp     edi, 2
.text:004280C0                 jnz     short loc_4280F9
.text:004280C2                 cmp     ebp, esi
.text:004280C4                 jnz     short loc_4280E0
.text:004280C6                 cmp     ecx, edi
.text:004280C8                 jnz     loc_427CC2
.text:004280CE                 cmp     [esp+10h+arg_14], esi
.text:004280D2                 jnz     loc_427CC2
.text:004280D8                 lea     eax, [edi+6]
.text:004280DB                 pop     edi
.text:004280DC                 pop     esi
.text:004280DD                 pop     ebp
.text:004280DE                 pop     ebx
.text:004280DF                 retn
.text:004280E0 ; ---------------------------------------------------------------------------
.text:004280E0
.text:004280E0 loc_4280E0:                             ; CODE XREF: sub_427B30+594j
.text:004280E0                 test    ebp, ebp
.text:004280E2                 jnz     loc_427CC2
.text:004280E8                 cmp     ecx, 2
.text:004280EB                 jnz     loc_427CC2
.text:004280F1                 pop     edi
.text:004280F2                 pop     esi
.text:004280F3                 lea     eax, [ebp+4]
.text:004280F6                 pop     ebp
.text:004280F7                 pop     ebx
.text:004280F8                 retn
.text:004280F9 ; ---------------------------------------------------------------------------
.text:004280F9
.text:004280F9 loc_4280F9:                             ; CODE XREF: sub_427B30+590j
.text:004280F9                 cmp     edi, 3
.text:004280FC                 jl      short loc_428120
.text:004280FE                 mov     edx, [esp+10h+arg_30]
.text:00428102                 test    edx, edx
.text:00428104                 jle     short loc_42810F
.text:00428106                 mov     eax, 3
.text:0042810B                 cmp     ecx, edi
.text:0042810D                 jz      short loc_428113
.text:0042810F
.text:0042810F loc_42810F:                             ; CODE XREF: sub_427B30+5D4j
.text:0042810F                 mov     eax, [esp+10h+arg_24]
.text:00428113
.text:00428113 loc_428113:                             ; CODE XREF: sub_427B30+5DDj
.text:00428113                 test    edx, edx
.text:00428115                 jnz     short loc_428124
.text:00428117                 cmp     ecx, edi
.text:00428119                 jnz     short loc_428124
.text:0042811B                 lea     eax, [edx+5]
.text:0042811E                 jmp     short loc_428124
.text:00428120 ; ---------------------------------------------------------------------------
.text:00428120
.text:00428120 loc_428120:                             ; CODE XREF: sub_427B30+5CCj
.text:00428120                 mov     eax, [esp+10h+arg_24]
.text:00428124
.text:00428124 loc_428124:                             ; CODE XREF: sub_427B30+5E5j
.text:00428124                                         ; sub_427B30+5E9j ...
.text:00428124                 cmp     edi, 4
.text:00428127                 jnz     loc_427CC6
.text:0042812D                 cmp     [esp+10h+arg_34], esi
.text:00428131                 jnz     loc_427CC6
.text:00428137                 cmp     ecx, edi
.text:00428139                 jnz     loc_427CC6
.text:0042813F                 lea     eax, [edi+3]
.text:00428142                 pop     edi
.text:00428143                 pop     esi
.text:00428144                 pop     ebp
.text:00428145                 pop     ebx
.text:00428146                 retn
.text:00428146 sub_427B30      endp
RobboLito 009 Source Code values.c

Code: Select all

    static int load_white(int white_pawn, int white_knight, int white_bishop, int white_light, int white_dark,
       int white_rook, int white_queen, int black_pawn, int black_knight, int black_bishop, int black_light,
       int black_dark, int black_rook, int black_queen)
    {
       int white_minor, black_minor, white_phase, black_phase, white_load, white_value, black_value;
       white_minor = white_bishop + white_knight;
       black_minor = black_bishop + black_knight;
       white_phase = white_minor + 2 * white_rook + 4 * white_queen;
       black_phase = black_minor + 2 * black_rook + 4 * black_queen;
       white_value = 3 * (white_bishop + white_knight) + 5 * white_rook + 9 * white_queen;
       black_value = 3 * (black_bishop + black_knight) + 5 * black_rook + 9 * black_queen;
       white_load = 10;

       if (!white_pawn)
       {
          if (white_phase == 1)
             white_load = 0;

          if (white_phase == 2)
          {
             if (black_phase == 0)
             {
                if (white_knight == 2)
                {
                   if (black_pawn >= 1)
                      white_load = 3;
                   else
                      white_load = 0;
                }
             }

             if (black_phase == 1)
             {
                white_load = 1;

                if (white_bishop == 2 && black_knight == 1)
                   white_load = 8;

                if (white_rook == 1 && black_knight == 1)
                   white_load = 2;
             }

             if (black_phase == 2)
                white_load = 1;
          }

          if (white_phase == 3 && white_rook == 1)
          {
             if (black_phase == 2 && black_rook == 1)
             {
                if (white_knight == 1)
                   white_load = 1;

                if (white_bishop == 1)
                   white_load = 1;
             }

             if (black_phase == 2 && black_rook == 0)
             {
                white_load = 2;

                if (white_bishop == 1 && black_knight == 2)
                   white_load = 6;

                if (black_knight == 1
                   && ((white_light == 1 && black_light == 1) || (white_dark == 1 && black_dark == 1)))
                   white_load = 2;

                if (black_knight == 1
                   && ((white_dark == 1 && black_light == 1) || (white_light == 1 && black_dark == 1)))
                   white_load = 7;
             }

             if (black_phase == 3)
                white_load = 2;
          }

          if (white_phase == 3 && white_rook == 0)
          {
             if (black_phase == 2 && black_rook == 1)
             {
                if (white_knight == 2)
                   white_load = 2;

                if (white_bishop == 2)
                   white_load = 7;
             }

             if (black_phase == 2 && black_rook == 0)
             {
                white_load = 2;

                if (white_bishop == 2 && black_knight == 2)
                   white_load = 4;
             }

             if (black_phase == 3)
                white_load = 2;
          }

          if (white_phase == 4 && white_queen)
          {
             if (black_phase == 2 && black_knight == 2)
                white_load = 2;

             if (black_phase == 2 && black_knight == 1)
                white_load = 8;

             if (black_phase == 2 && black_knight == 0)
                white_load = 7;

             if (black_phase == 3)
                white_load = 1;

             if (black_phase == 4)
                white_load = 1;
          }

          if (white_phase == 4 && white_rook == 2)
          {
             if (black_phase == 2 && black_rook == 0)
                white_load = 7;

             if (black_phase == 3)
                white_load = 2;

             if (black_phase == 4)
                white_load = 1;
          }

          if (white_phase == 4 && white_rook == 1)
          {
             if (black_phase == 3 && black_rook == 1)
                white_load = 3;

             if (black_phase == 3 && black_rook == 0)
                white_load = 2;

             if (black_phase == 4)
                white_load = 2;
          }

          if (white_phase == 4 && white_rook == 0 && white_queen == 0)
          {
             if (black_phase == 3 && black_rook == 1)
                white_load = 4;

             if (black_phase == 3 && black_rook == 0)
                white_load = 2;

             if (black_phase == 4 && black_queen)
                white_load = 8;

             if (black_phase == 4 && black_queen == 0)
                white_load = 1;
          }

          if (white_phase == 5 && white_queen)
          {
             if (black_phase == 4)
                white_load = 2;

             if (black_phase == 5)
                white_load = 1;

             if (black_phase == 4 && black_rook == 2)
             {
                if (white_knight)
                   white_load = 3;

                if (white_bishop)
                   white_load = 7;
             }

             if (black_phase == 5)
                white_load = 1;
          }

          if (white_phase == 5 && white_rook == 1)
          {
             if (black_phase == 4 && black_queen)
                white_load = 9;

             if (black_phase == 4 && black_rook == 2)
                white_load = 7;

             if (black_phase == 4 && black_rook == 1)
                white_load = 3;

             if (black_phase == 4 && black_queen == 0 && black_rook == 0)
                white_load = 1;

             if (black_phase == 5)
                white_load = 2;
          }

          if (white_phase == 5 && white_rook == 2)
          {
             if (black_phase == 4 && black_queen && white_bishop == 1)
                white_load = 8;

             if (black_phase == 4 && black_queen && white_knight == 1)
                white_load = 7;

             if (black_phase == 4 && black_rook == 2)
                white_load = 3;

             if (black_phase == 4 && black_rook == 1)
                white_load = 2;

             if (black_phase == 4 && black_queen == 0 && black_rook == 0)
                white_load = 1;

             if (black_phase == 5)
                white_load = 1;
          }

          if (white_phase == 6 && white_queen && white_rook)
          {
             if (black_phase == 4 && black_queen == 0 && black_rook == 0)
                white_load = 2;

             if (black_phase == 5 && black_queen)
                white_load = 1;

             if (black_phase == 4 && black_rook == 1)
                white_load = 6;

             if (black_phase == 4 && black_rook == 2)
                white_load = 3;

             if (black_phase == 5 && black_rook)
                white_load = 1;

             if (black_phase == 6)
                white_load = 1;
          }

          if (white_phase == 6 && white_queen && white_rook == 0)
          {
             if (black_phase == 4 && black_queen == 0 && black_rook == 0)
                white_load = 5;

             if (black_phase == 5 && black_queen)
                white_load = 2;

             if (black_phase == 5 && black_rook == 2)
                white_load = 2;

             if (black_phase == 5 && black_rook == 1)
                white_load = 1;

             if (black_phase == 6)
                white_load = 1;
          }

          if (white_phase == 6 && white_queen == 0 && white_rook == 2)
          {
             if (black_phase == 5 && black_queen)
                white_load = 7;

             if (black_phase == 5 && black_rook == 1)
                white_load = 1;

             if (black_phase == 5 && black_rook == 2)
                white_load = 2;

             if (black_phase == 6)
                white_load = 1;
          }

          if (white_phase == 6 && white_queen == 0 && white_rook == 1)
          {
             if (black_phase == 5 && black_queen)
                white_load = 9;

             if (black_phase == 5 && black_rook == 2)
                white_load = 3;

             if (black_phase == 5 && black_rook == 1)
                white_load = 2;

             if (black_phase == 6)
                white_load = 1;

             if (black_phase == 6 && black_queen)
                white_load = 2;

             if (black_phase == 6 && black_queen && black_rook)
                white_load = 4;
          }

          if (white_phase >= 7)
          {
             if (white_value > black_value + 4)
                white_load = 9;

             if (white_value == black_value + 4)
                white_load = 7;

             if (white_value == black_value + 3)
                white_load = 4;

             if (white_value == black_value + 2)
                white_load = 2;

             if (white_value < black_value + 2)
                white_load = 1;
          }
       }

       if (white_pawn == 1)
       {
          if (black_phase == 1)
          {
             if (white_phase == 1)
                white_load = 3;

             if (white_phase == 2 && white_knight == 2)
             {
                if (black_pawn == 0)
                   white_load = 3;
                else
                   white_load = 5;
             }

             if (white_phase == 2 && white_rook == 1)
                white_load = 7;
          }

          if (black_phase == 2 && black_rook == 1 && white_phase == 2 && white_rook == 1)
             white_load = 8;

          if (black_phase == 2 && black_rook == 0 && white_phase == 2)
             white_load = 4;

          if (black_phase >= 3 && black_minor > 0 && white_phase == black_phase)
             white_load = 3;

          if (black_phase >= 3 && black_minor == 0 && white_phase == black_phase)
             white_load = 5;

          if (black_phase == 4 && black_queen == 1 && white_phase == black_phase)
             white_load = 7;
       }
       return white_load;
    }
RobboLito 0.09 w32
Aug 4 2010 19:40:41
basic windows version by kranium, improved by sentinel

Code: Select all

.text:004269A0 ; =============== S U B R O U T I N E =======================================
.text:004269A0
.text:004269A0
.text:004269A0 sub_4269A0      proc near               ; CODE XREF: _main+76p
.text:004269A0
.text:004269A0 var_3C          = dword ptr -3Ch
.text:004269A0 var_38          = dword ptr -38h
.text:004269A0 var_34          = dword ptr -34h
.text:004269A0 var_30          = dword ptr -30h
.text:004269A0 var_2C          = dword ptr -2Ch
.text:004269A0 var_28          = dword ptr -28h
.text:004269A0 var_24          = dword ptr -24h
.text:004269A0 var_20          = dword ptr -20h
.text:004269A0 var_1C          = dword ptr -1Ch
.text:004269A0 var_18          = dword ptr -18h
.text:004269A0 var_14          = dword ptr -14h
.text:004269A0 var_10          = dword ptr -10h
.text:004269A0 var_C           = dword ptr -0Ch
.text:004269A0 var_8           = dword ptr -8
.text:004269A0 var_4           = dword ptr -4
.text:004269A0 arg_0           = dword ptr  4
.text:004269A0
.text:004269A0                 mov     eax, [esp+arg_0]
.text:004269A4                 sub     esp, 40h
.text:004269A7                 push    ebx
.text:004269A8                 push    ebp
.text:004269A9                 mov     ebx, eax
.text:004269AB                 and     ebx, 80000001h
.text:004269B1                 push    esi
.text:004269B2                 push    edi
.text:004269B3                 jns     short loc_4269BA
.text:004269B5                 dec     ebx
.text:004269B6                 or      ebx, 0FFFFFFFEh
.text:004269B9                 inc     ebx
.text:004269BA
.text:004269BA loc_4269BA:                             ; CODE XREF: sub_4269A0+13j
.text:004269BA                 cdq
.text:004269BB                 sub     eax, edx
.text:004269BD                 sar     eax, 1
.text:004269BF                 mov     esi, eax
.text:004269C1                 and     esi, 80000001h
.text:004269C7                 jns     short loc_4269CE
.text:004269C9                 dec     esi
.text:004269CA                 or      esi, 0FFFFFFFEh
.text:004269CD                 inc     esi
.text:004269CE
.text:004269CE loc_4269CE:                             ; CODE XREF: sub_4269A0+27j
.text:004269CE                 cdq
.text:004269CF                 sub     eax, edx
.text:004269D1                 mov     ecx, eax
.text:004269D3                 sar     ecx, 1
.text:004269D5                 mov     eax, 55555556h
.text:004269DA                 imul    ecx
.text:004269DC                 mov     eax, edx
.text:004269DE                 shr     eax, 1Fh
.text:004269E1                 add     eax, edx
.text:004269E3                 lea     edx, [eax+eax*2]
.text:004269E6                 sub     ecx, edx
.text:004269E8                 mov     [esp+50h+var_38], ecx
.text:004269EC                 mov     ecx, eax
.text:004269EE                 mov     eax, 55555556h
.text:004269F3                 imul    ecx
.text:004269F5                 mov     eax, edx
.text:004269F7                 shr     eax, 1Fh
.text:004269FA                 add     eax, edx
.text:004269FC                 lea     edx, [eax+eax*2]
.text:004269FF                 sub     ecx, edx
.text:00426A01                 mov     ebp, eax
.text:00426A03                 and     ebp, 80000001h
.text:00426A09                 mov     [esp+50h+var_3C], ecx
.text:00426A0D                 jns     short loc_426A14
.text:00426A0F                 dec     ebp
.text:00426A10                 or      ebp, 0FFFFFFFEh
.text:00426A13                 inc     ebp
.text:00426A14
.text:00426A14 loc_426A14:                             ; CODE XREF: sub_4269A0+6Dj
.text:00426A14                 cdq
.text:00426A15                 sub     eax, edx
.text:00426A17                 sar     eax, 1
.text:00426A19                 mov     ecx, eax
.text:00426A1B                 and     ecx, 80000001h
.text:00426A21                 jns     short loc_426A28
.text:00426A23                 dec     ecx
.text:00426A24                 or      ecx, 0FFFFFFFEh
.text:00426A27                 inc     ecx
.text:00426A28
.text:00426A28 loc_426A28:                             ; CODE XREF: sub_4269A0+81j
.text:00426A28                 cdq
.text:00426A29                 sub     eax, edx
.text:00426A2B                 sar     eax, 1
.text:00426A2D                 mov     [esp+50h+var_18], ecx
.text:00426A31                 mov     ecx, eax
.text:00426A33                 and     ecx, 80000001h
.text:00426A39                 jns     short loc_426A40
.text:00426A3B                 dec     ecx
.text:00426A3C                 or      ecx, 0FFFFFFFEh
.text:00426A3F                 inc     ecx
.text:00426A40
.text:00426A40 loc_426A40:                             ; CODE XREF: sub_4269A0+99j
.text:00426A40                 cdq
.text:00426A41                 sub     eax, edx
.text:00426A43                 sar     eax, 1
.text:00426A45                 mov     [esp+50h+var_24], ecx
.text:00426A49                 mov     ecx, eax
.text:00426A4B                 and     ecx, 80000001h
.text:00426A51                 jns     short loc_426A58
.text:00426A53                 dec     ecx
.text:00426A54                 or      ecx, 0FFFFFFFEh
.text:00426A57                 inc     ecx
.text:00426A58
.text:00426A58 loc_426A58:                             ; CODE XREF: sub_4269A0+B1j
.text:00426A58                 cdq
.text:00426A59                 sub     eax, edx
.text:00426A5B                 mov     [esp+50h+var_28], ecx
.text:00426A5F                 mov     ecx, eax
.text:00426A61                 sar     ecx, 1
.text:00426A63                 mov     eax, 55555556h
.text:00426A68                 imul    ecx
.text:00426A6A                 mov     eax, edx
.text:00426A6C                 shr     eax, 1Fh
.text:00426A6F                 add     eax, edx
.text:00426A71                 lea     edx, [eax+eax*2]
.text:00426A74                 mov     edi, eax
.text:00426A76                 sub     ecx, edx
.text:00426A78                 mov     eax, 55555556h
.text:00426A7D                 imul    edi
.text:00426A7F                 mov     [esp+50h+var_30], ecx
.text:00426A83                 mov     ecx, edx
.text:00426A85                 shr     ecx, 1Fh
.text:00426A88                 add     ecx, edx
.text:00426A8A                 lea     eax, [ecx+ecx*2]
.text:00426A8D                 sub     edi, eax
.text:00426A8F                 mov     eax, 38E38E39h
.text:00426A94                 imul    ecx
.text:00426A96                 sar     edx, 1
.text:00426A98                 mov     [esp+50h+var_34], edi
.text:00426A9C                 mov     edi, edx
.text:00426A9E                 shr     edi, 1Fh
.text:00426AA1                 add     edi, edx
.text:00426AA3                 lea     edx, [edi+edi*8]
.text:00426AA6                 sub     ecx, edx
.text:00426AA8                 mov     eax, 38E38E39h
.text:00426AAD                 imul    edi
.text:00426AAF                 sar     edx, 1
.text:00426AB1                 mov     eax, edx
.text:00426AB3                 shr     eax, 1Fh
.text:00426AB6                 add     eax, edx
.text:00426AB8                 mov     edx, [esp+50h+var_18]
.text:00426ABC                 lea     eax, [eax+eax*8]
.text:00426ABF                 sub     edi, eax
.text:00426AC1                 mov     eax, [esp+50h+var_28]
.text:00426AC5                 push    esi
.text:00426AC6                 mov     [esp+54h+var_1C], edi
.text:00426ACA                 lea     edi, [edx+ebp]
.text:00426ACD                 mov     edx, [esp+54h+var_24]
.text:00426AD1                 add     eax, edx
.text:00426AD3                 mov     edx, [esp+54h+var_3C]
.text:00426AD7                 push    edx
.text:00426AD8                 mov     edx, [esp+58h+var_1C]
.text:00426ADC                 push    eax
.text:00426ADD                 mov     [esp+5Ch+var_20], eax
.text:00426AE1                 mov     eax, [esp+5Ch+var_34]
.text:00426AE5                 push    eax
.text:00426AE6                 mov     eax, [esp+60h+var_38]
.text:00426AEA                 push    edx
.text:00426AEB                 mov     edx, [esp+64h+var_30]
.text:00426AEF                 push    ebx
.text:00426AF0                 push    eax
.text:00426AF1                 push    edi
.text:00426AF2                 push    edx
.text:00426AF3                 push    ecx
.text:00426AF4                 mov     [esp+78h+var_14], ecx
.text:00426AF8                 call    sub_4267A0
.text:00426AFD                 mov     ecx, [esp+78h+var_3C]
.text:00426B01                 mov     [esp+78h+var_8], eax
.text:00426B05                 lea     eax, [esi+ebx]
.text:00426B08                 lea     eax, [ecx+eax*2]
.text:00426B0B                 add     eax, [esp+78h+var_38]
.text:00426B0F                 mov     ecx, [esp+78h+var_20]
.text:00426B13                 lea     ecx, [ecx+eax*2]
.text:00426B16                 add     ecx, eax
.text:00426B18                 add     ecx, edi
.text:00426B1A                 mov     edi, [esp+78h+var_8]
.text:00426B1E                 add     ecx, [esp+78h+var_34]
.text:00426B22                 mov     eax, edi
.text:00426B24                 add     ecx, [esp+78h+var_30]
.text:00426B28                 and     eax, 0FFFFh
.text:00426B2D                 add     esp, 28h
.text:00426B30                 mov     [esp+50h+var_4], edx
.text:00426B34                 mov     [esp+50h+var_C], 0
.text:00426B3C                 cmp     eax, 8000h
.text:00426B41                 mov     [esp+50h+var_10], 1
.text:00426B49                 jg      short loc_426B53
.text:00426B4B                 mov     [esp+50h+var_10], 0
.text:00426B53
.text:00426B53 loc_426B53:                             ; CODE XREF: sub_4269A0+1A9j
.text:00426B53                 shrd    edi, edx, 10h
.text:00426B57                 shr     edx, 10h
.text:00426B5A                 mov     [esp+50h+var_2C], edx
.text:00426B5E                 mov     edx, edi
.text:00426B60                 mov     edi, [esp+50h+var_2C]
.text:00426B64                 and     edx, 0FFFFh
.text:00426B6A                 add     edx, [esp+50h+var_10]
.text:00426B6E                 cwde
.text:00426B6F                 cmp     edx, 8000h
.text:00426B75                 mov     [esp+50h+var_2C], eax
.text:00426B79                 jle     short loc_426B8A
.text:00426B7B                 mov     edi, 1
.text:00426B80                 mov     [esp+50h+var_C], 0
.text:00426B88                 jmp     short loc_426B90
.text:00426B8A ; ---------------------------------------------------------------------------
.text:00426B8A
.text:00426B8A loc_426B8A:                             ; CODE XREF: sub_4269A0+1D9j
.text:00426B8A                 xor     edi, edi
.text:00426B8C                 mov     [esp+50h+var_C], edi
.text:00426B90
.text:00426B90 loc_426B90:                             ; CODE XREF: sub_4269A0+1E8j
.text:00426B90                 mov     eax, [esp+50h+var_4]
.text:00426B94                 and     eax, 0FFFFh
.text:00426B99                 add     eax, edi
.text:00426B9B                 cmp     eax, 8000h
.text:00426BA0                 movsx   edi, dx
.text:00426BA3                 mov     [esp+50h+var_C], 0
.text:00426BAB                 mov     [esp+50h+var_10], 1
.text:00426BB3                 jg      short loc_426BBD
.text:00426BB5                 mov     [esp+50h+var_10], 0
.text:00426BBD
.text:00426BBD loc_426BBD:                             ; CODE XREF: sub_4269A0+213j
.text:00426BBD                 cmp     ecx, 8
.text:00426BC0                 movsx   edx, ax
.text:00426BC3                 jge     short loc_426BF0
.text:00426BC5                 mov     eax, [esp+50h+var_4]
.text:00426BC9                 imul    edx, ecx
.text:00426BCC                 shr     eax, 10h
.text:00426BCF                 add     ax, word ptr [esp+50h+var_10]
.text:00426BD4                 mov     edi, 8
.text:00426BD9                 cwde
.text:00426BDA                 sub     edi, ecx
.text:00426BDC                 imul    eax, edi
.text:00426BDF                 add     eax, edx
.text:00426BE1                 cdq
.text:00426BE2                 and     edx, 7
.text:00426BE5                 add     eax, edx
.text:00426BE7                 sar     eax, 3
.text:00426BEA                 mov     [esp+50h+var_2C], eax
.text:00426BEE                 jmp     short loc_426C33
.text:00426BF0 ; ---------------------------------------------------------------------------
.text:00426BF0
.text:00426BF0 loc_426BF0:                             ; CODE XREF: sub_4269A0+223j
.text:00426BF0                 cmp     ecx, 18h
.text:00426BF3                 jge     short loc_426C12
.text:00426BF5                 mov     eax, 18h
.text:00426BFA                 sub     eax, ecx
.text:00426BFC                 imul    eax, edx
.text:00426BFF                 add     ecx, 0FFFFFFF8h
.text:00426C02                 imul    ecx, edi
.text:00426C05                 add     eax, ecx
.text:00426C07                 cdq
.text:00426C08                 and     edx, 0Fh
.text:00426C0B                 add     eax, edx
.text:00426C0D                 sar     eax, 4
.text:00426C10                 jmp     short loc_426C2F
.text:00426C12 ; ---------------------------------------------------------------------------
.text:00426C12
.text:00426C12 loc_426C12:                             ; CODE XREF: sub_4269A0+253j
.text:00426C12                 mov     eax, 20h
.text:00426C17                 sub     eax, ecx
.text:00426C19                 imul    eax, edi
.text:00426C1C                 add     ecx, 0FFFFFFE8h
.text:00426C1F                 imul    ecx, [esp+50h+var_2C]
.text:00426C24                 add     eax, ecx
.text:00426C26                 cdq
.text:00426C27                 and     edx, 7
.text:00426C2A                 add     eax, edx
.text:00426C2C                 sar     eax, 3
.text:00426C2F
.text:00426C2F loc_426C2F:                             ; CODE XREF: sub_4269A0+270j
.text:00426C2F                 mov     [esp+50h+var_2C], eax
.text:00426C33
.text:00426C33 loc_426C33:                             ; CODE XREF: sub_4269A0+24Ej
.text:00426C33                 mov     ecx, [esp+50h+var_3C]
.text:00426C37                 mov     edx, [esp+50h+var_28]
.text:00426C3B                 mov     edi, [esp+50h+var_18]
.text:00426C3F                 push    esi
.text:00426C40                 push    ecx
.text:00426C41                 mov     ecx, [esp+58h+var_20]
.text:00426C45                 push    edx
.text:00426C46                 mov     edx, [esp+5Ch+var_34]
.text:00426C4A                 test    eax, eax
.text:00426C4C                 mov     eax, [esp+5Ch+var_24]
.text:00426C50                 push    eax
.text:00426C51                 mov     eax, [esp+60h+var_1C]
.text:00426C55                 push    ecx
.text:00426C56                 mov     ecx, [esp+64h+var_38]
.text:00426C5A                 push    edx
.text:00426C5B                 mov     edx, [esp+68h+var_30]
.text:00426C5F                 push    eax
.text:00426C60                 mov     eax, [esp+6Ch+var_14]
.text:00426C64                 push    ebx
.text:00426C65                 push    ecx
.text:00426C66                 push    edi
.text:00426C67                 push    ebp
.text:00426C68                 jle     short loc_426C79
.text:00426C6A                 add     edi, ebp
.text:00426C6C                 push    edi
.text:00426C6D                 push    edx
.text:00426C6E                 push    eax
.text:00426C6F                 call    sub_425B60
.text:00426C74                 add     esp, 38h
.text:00426C77                 jmp     short loc_426C87
.text:00426C79 ; ---------------------------------------------------------------------------
.text:00426C79
.text:00426C79 loc_426C79:                             ; CODE XREF: sub_4269A0+2C8j
.text:00426C79                 push    edx
.text:00426C7A                 add     edi, ebp
.text:00426C7C                 push    eax
.text:00426C7D                 mov     edx, edi
.text:00426C7F                 call    sub_426190
.text:00426C84                 add     esp, 34h
.text:00426C87
.text:00426C87 loc_426C87:                             ; CODE XREF: sub_4269A0+2D7j
.text:00426C87                 imul    eax, [esp+50h+var_2C]
.text:00426C8C                 mov     ecx, eax
.text:00426C8E                 mov     eax, 66666667h
.text:00426C93                 imul    ecx
.text:00426C95                 mov     eax, [esp+50h+var_3C]
.text:00426C99                 sar     edx, 2
.text:00426C9C                 mov     ecx, edx
.text:00426C9E                 shr     ecx, 1Fh
.text:00426CA1                 add     ecx, edx
.text:00426CA3                 mov     edx, [esp+50h+arg_0]
.text:00426CA7                 push    esi
.text:00426CA8                 push    eax
.text:00426CA9                 mov     eax, [esp+58h+var_20]
.text:00426CAD                 mov     word_45BEC0[edx*4], cx
.text:00426CB5                 mov     ecx, [esp+58h+var_28]
.text:00426CB9                 mov     edx, [esp+58h+var_24]
.text:00426CBD                 push    ecx
.text:00426CBE                 mov     ecx, [esp+5Ch+var_1C]
.text:00426CC2                 push    edx
.text:00426CC3                 mov     edx, [esp+60h+var_38]
.text:00426CC7                 push    eax
.text:00426CC8                 mov     eax, [esp+64h+var_18]
.text:00426CCC                 push    ecx
.text:00426CCD                 mov     ecx, [esp+68h+var_14]
.text:00426CD1                 push    ebx
.text:00426CD2                 push    edx
.text:00426CD3                 mov     edx, [esp+70h+var_34]
.text:00426CD7                 push    eax
.text:00426CD8                 push    ebp
.text:00426CD9                 push    ecx
.text:00426CDA                 mov     ecx, [esp+7Ch+var_30]
.text:00426CDE                 call    sub_425950
.text:00426CE3                 mov     edx, [esp+7Ch+arg_0]
.text:00426CEA                 mov     ecx, [esp+7Ch+var_28]
.text:00426CEE                 add     esp, 2Ch
.text:00426CF1                 push    esi
.text:00426CF2                 mov     esi, [esp+54h+var_30]
.text:00426CF6                 mov     byte_45BEC2[edx*4], al
.text:00426CFD                 mov     eax, [esp+54h+var_3C]
.text:00426D01                 mov     edx, [esp+54h+var_24]
.text:00426D05                 push    eax
.text:00426D06                 mov     eax, [esp+58h+var_20]
.text:00426D0A                 push    ecx
.text:00426D0B                 mov     ecx, [esp+5Ch+var_1C]
.text:00426D0F                 push    edx
.text:00426D10                 mov     edx, [esp+60h+var_38]
.text:00426D14                 push    eax
.text:00426D15                 mov     eax, [esp+64h+var_18]
.text:00426D19                 push    ecx
.text:00426D1A                 mov     ecx, [esp+68h+var_14]
.text:00426D1E                 push    edx
.text:00426D1F                 push    eax
.text:00426D20                 push    ebp
.text:00426D21                 push    edi
.text:00426D22                 mov     edi, [esp+78h+var_34]
.text:00426D26                 push    ecx
.text:00426D27                 mov     edx, ebx
.text:00426D29                 call    sub_425670
.text:00426D2E                 mov     edx, [esp+7Ch+arg_0]
.text:00426D35                 add     esp, 2Ch
.text:00426D38                 pop     edi
.text:00426D39                 pop     esi
.text:00426D3A                 pop     ebp
.text:00426D3B                 mov     byte_45BEC3[edx*4], al
.text:00426D42                 pop     ebx
.text:00426D43                 add     esp, 40h
.text:00426D46                 retn
.text:00426D46 sub_4269A0      endp
Houdini w32 1_CPU
build 2010-05-15
by Robert Houdart*

Code: Select all

.text:00428340 ; =============== S U B R O U T I N E =======================================
.text:00428340
.text:00428340
.text:00428340 sub_428340      proc near               ; CODE XREF: sub_40FF90+CAp
.text:00428340
.text:00428340 var_48          = dword ptr -48h
.text:00428340 var_44          = dword ptr -44h
.text:00428340 var_40          = dword ptr -40h
.text:00428340 var_3C          = dword ptr -3Ch
.text:00428340 var_38          = dword ptr -38h
.text:00428340 var_34          = dword ptr -34h
.text:00428340 var_30          = dword ptr -30h
.text:00428340 var_2C          = dword ptr -2Ch
.text:00428340 var_28          = dword ptr -28h
.text:00428340 var_24          = dword ptr -24h
.text:00428340 var_20          = dword ptr -20h
.text:00428340 var_1C          = dword ptr -1Ch
.text:00428340 var_18          = dword ptr -18h
.text:00428340 var_14          = dword ptr -14h
.text:00428340 var_10          = dword ptr -10h
.text:00428340 var_C           = dword ptr -0Ch
.text:00428340 var_8           = dword ptr -8
.text:00428340 var_4           = dword ptr -4
.text:00428340
.text:00428340                 push    ebp
.text:00428341                 mov     ebp, esp
.text:00428343                 and     esp, 0FFFFFFF8h
.text:00428346                 sub     esp, 48h
.text:00428349                 push    ebx
.text:0042834A                 push    ebp
.text:0042834B                 push    esi
.text:0042834C                 xor     eax, eax
.text:0042834E                 push    edi
.text:0042834F                 mov     [esp+58h+var_1C], eax
.text:00428353                 mov     [esp+58h+var_18], offset word_5C14FC
.text:0042835B                 jmp     short loc_428364
.text:0042835B ; ---------------------------------------------------------------------------
.text:0042835D                 align 10h
.text:00428360
.text:00428360 loc_428360:                             ; CODE XREF: sub_428340+399j
.text:00428360                 mov     eax, [esp+58h+var_1C]
.text:00428364
.text:00428364 loc_428364:                             ; CODE XREF: sub_428340+1Bj
.text:00428364                 mov     ebp, eax
.text:00428366                 and     ebp, 80000001h
.text:0042836C                 jns     short loc_428373
.text:0042836E                 dec     ebp
.text:0042836F                 or      ebp, 0FFFFFFFEh
.text:00428372                 inc     ebp
.text:00428373
.text:00428373 loc_428373:                             ; CODE XREF: sub_428340+2Cj
.text:00428373                 cdq
.text:00428374                 sub     eax, edx
.text:00428376                 sar     eax, 1
.text:00428378                 mov     ebx, eax
.text:0042837A                 and     ebx, 80000001h
.text:00428380                 jns     short loc_428387
.text:00428382                 dec     ebx
.text:00428383                 or      ebx, 0FFFFFFFEh
.text:00428386                 inc     ebx
.text:00428387
.text:00428387 loc_428387:                             ; CODE XREF: sub_428340+40j
.text:00428387                 cdq
.text:00428388                 sub     eax, edx
.text:0042838A                 mov     ecx, eax
.text:0042838C                 sar     ecx, 1
.text:0042838E                 mov     eax, 55555556h
.text:00428393                 imul    ecx
.text:00428395                 mov     eax, edx
.text:00428397                 shr     eax, 1Fh
.text:0042839A                 add     eax, edx
.text:0042839C                 lea     edx, [eax+eax*2]
.text:0042839F                 sub     ecx, edx
.text:004283A1                 mov     [esp+58h+var_40], ecx
.text:004283A5                 mov     ecx, eax
.text:004283A7                 mov     eax, 55555556h
.text:004283AC                 imul    ecx
.text:004283AE                 mov     eax, edx
.text:004283B0                 shr     eax, 1Fh
.text:004283B3                 add     eax, edx
.text:004283B5                 lea     edx, [eax+eax*2]
.text:004283B8                 sub     ecx, edx
.text:004283BA                 mov     edi, eax
.text:004283BC                 and     edi, 80000001h
.text:004283C2                 mov     [esp+58h+var_48], ecx
.text:004283C6                 jns     short loc_4283CD
.text:004283C8                 dec     edi
.text:004283C9                 or      edi, 0FFFFFFFEh
.text:004283CC                 inc     edi
.text:004283CD
.text:004283CD loc_4283CD:                             ; CODE XREF: sub_428340+86j
.text:004283CD                 cdq
.text:004283CE                 sub     eax, edx
.text:004283D0                 sar     eax, 1
.text:004283D2                 mov     ecx, eax
.text:004283D4                 and     ecx, 80000001h
.text:004283DA                 mov     [esp+58h+var_10], edi
.text:004283DE                 jns     short loc_4283E5
.text:004283E0                 dec     ecx
.text:004283E1                 or      ecx, 0FFFFFFFEh
.text:004283E4                 inc     ecx
.text:004283E5
.text:004283E5 loc_4283E5:                             ; CODE XREF: sub_428340+9Ej
.text:004283E5                 cdq
.text:004283E6                 sub     eax, edx
.text:004283E8                 sar     eax, 1
.text:004283EA                 mov     [esp+58h+var_24], ecx
.text:004283EE                 mov     ecx, eax
.text:004283F0                 and     ecx, 80000001h
.text:004283F6                 jns     short loc_4283FD
.text:004283F8                 dec     ecx
.text:004283F9                 or      ecx, 0FFFFFFFEh
.text:004283FC                 inc     ecx
.text:004283FD
.text:004283FD loc_4283FD:                             ; CODE XREF: sub_428340+B6j
.text:004283FD                 cdq
.text:004283FE                 sub     eax, edx
.text:00428400                 sar     eax, 1
.text:00428402                 mov     [esp+58h+var_30], ecx
.text:00428406                 mov     ecx, eax
.text:00428408                 and     ecx, 80000001h
.text:0042840E                 jns     short loc_428415
.text:00428410                 dec     ecx
.text:00428411                 or      ecx, 0FFFFFFFEh
.text:00428414                 inc     ecx
.text:00428415
.text:00428415 loc_428415:                             ; CODE XREF: sub_428340+CEj
.text:00428415                 cdq
.text:00428416                 sub     eax, edx
.text:00428418                 mov     [esp+58h+var_34], ecx
.text:0042841C                 mov     ecx, eax
.text:0042841E                 sar     ecx, 1
.text:00428420                 mov     eax, 55555556h
.text:00428425                 imul    ecx
.text:00428427                 mov     eax, edx
.text:00428429                 shr     eax, 1Fh
.text:0042842C                 add     eax, edx
.text:0042842E                 lea     edx, [eax+eax*2]
.text:00428431                 mov     esi, eax
.text:00428433                 sub     ecx, edx
.text:00428435                 mov     eax, 55555556h
.text:0042843A                 imul    esi
.text:0042843C                 mov     [esp+58h+var_3C], ecx
.text:00428440                 mov     ecx, edx
.text:00428442                 shr     ecx, 1Fh
.text:00428445                 add     ecx, edx
.text:00428447                 lea     eax, [ecx+ecx*2]
.text:0042844A                 sub     esi, eax
.text:0042844C                 mov     eax, 38E38E39h
.text:00428451                 imul    ecx
.text:00428453                 sar     edx, 1
.text:00428455                 mov     [esp+58h+var_44], esi
.text:00428459                 mov     esi, edx
.text:0042845B                 shr     esi, 1Fh
.text:0042845E                 add     esi, edx
.text:00428460                 lea     edx, [esi+esi*8]
.text:00428463                 sub     ecx, edx
.text:00428465                 mov     eax, 38E38E39h
.text:0042846A                 imul    esi
.text:0042846C                 sar     edx, 1
.text:0042846E                 mov     eax, edx
.text:00428470                 shr     eax, 1Fh
.text:00428473                 add     eax, edx
.text:00428475                 mov     edx, [esp+58h+var_48]
.text:00428479                 lea     eax, [eax+eax*8]
.text:0042847C                 sub     esi, eax
.text:0042847E                 mov     eax, [esp+58h+var_34]
.text:00428482                 add     eax, [esp+58h+var_30]
.text:00428486                 push    ebx
.text:00428487                 push    edx
.text:00428488                 push    eax
.text:00428489                 mov     [esp+64h+var_2C], eax
.text:0042848D                 mov     eax, [esp+64h+var_44]
.text:00428491                 push    eax
.text:00428492                 mov     eax, [esp+68h+var_40]
.text:00428496                 mov     [esp+68h+var_28], esi
.text:0042849A                 mov     edx, [esp+68h+var_28]
.text:0042849E                 mov     esi, [esp+68h+var_24]
.text:004284A2                 push    edx
.text:004284A3                 mov     edx, [esp+6Ch+var_3C]
.text:004284A7                 push    ebp
.text:004284A8                 push    eax
.text:004284A9                 add     esi, edi
.text:004284AB                 push    esi
.text:004284AC                 push    edx
.text:004284AD                 push    ecx
.text:004284AE                 mov     [esp+80h+var_20], ecx
.text:004284B2                 call    sub_428150
.text:004284B7                 mov     ecx, [esp+80h+var_48]
.text:004284BB                 mov     [esp+80h+var_8], eax
.text:004284BF                 mov     [esp+80h+var_4], edx
.text:004284C3                 mov     edx, [esp+80h+var_2C]
.text:004284C7                 lea     eax, [ebx+ebp]
.text:004284CA                 lea     eax, [ecx+eax*2]
.text:004284CD                 add     eax, [esp+80h+var_40]
.text:004284D1                 add     esp, 28h
.text:004284D4                 lea     ecx, [edx+eax*2]
.text:004284D7                 add     ecx, eax
.text:004284D9                 mov     eax, [esp+58h+var_8]
.text:004284DD                 movsx   edx, ax
.text:004284E0                 mov     [esp+58h+var_14], edx
.text:004284E4                 mov     edx, [esp+58h+var_4]
.text:004284E8                 add     ecx, esi
.text:004284EA                 add     ecx, [esp+58h+var_44]
.text:004284EE                 shrd    eax, edx, 10h
.text:004284F2                 add     ecx, [esp+58h+var_3C]
.text:004284F6                 shr     edx, 10h
.text:004284F9                 cwde
.text:004284FA                 xor     edx, edx
.text:004284FC                 cmp     [esp+58h+var_14], edx
.text:00428500                 setl    dl
.text:00428503                 add     eax, edx
.text:00428505                 movsx   edx, word ptr [esp+58h+var_4]
.text:0042850A                 mov     [esp+58h+var_38], eax
.text:0042850E                 mov     eax, 0
.text:00428513                 sets    al
.text:00428516                 add     edx, eax
.text:00428518                 mov     [esp+58h+var_C], edx
.text:0042851C                 cmp     ecx, 8
.text:0042851F                 jg      short loc_428558
.text:00428521                 mov     eax, [esp+58h+var_4]
.text:00428525                 mov     edi, [esp+58h+var_C]
.text:00428529                 shr     eax, 10h
.text:0042852C                 xor     edx, edx
.text:0042852E                 test    edi, edi
.text:00428530                 sets    dl
.text:00428533                 imul    edi, ecx
.text:00428536                 cwde
.text:00428537                 add     eax, edx
.text:00428539                 mov     edx, 8
.text:0042853E                 sub     edx, ecx
.text:00428540                 imul    eax, edx
.text:00428543                 add     eax, edi
.text:00428545                 mov     edi, [esp+58h+var_10]
.text:00428549                 cdq
.text:0042854A                 and     edx, 7
.text:0042854D                 add     eax, edx
.text:0042854F                 sar     eax, 3
.text:00428552                 mov     [esp+58h+var_38], eax
.text:00428556                 jmp     short loc_42859F
.text:00428558 ; ---------------------------------------------------------------------------
.text:00428558
.text:00428558 loc_428558:                             ; CODE XREF: sub_428340+1DFj
.text:00428558                 cmp     ecx, 18h
.text:0042855B                 jg      short loc_42857C
.text:0042855D                 mov     eax, 18h
.text:00428562                 sub     eax, ecx
.text:00428564                 imul    eax, edx
.text:00428567                 add     ecx, 0FFFFFFF8h
.text:0042856A                 imul    ecx, [esp+58h+var_38]
.text:0042856F                 add     eax, ecx
.text:00428571                 cdq
.text:00428572                 and     edx, 0Fh
.text:00428575                 add     eax, edx
.text:00428577                 sar     eax, 4
.text:0042857A                 jmp     short loc_42859B
.text:0042857C ; ---------------------------------------------------------------------------
.text:0042857C
.text:0042857C loc_42857C:                             ; CODE XREF: sub_428340+21Bj
.text:0042857C                 mov     eax, 20h
.text:00428581                 sub     eax, ecx
.text:00428583                 imul    eax, [esp+58h+var_38]
.text:00428588                 add     ecx, 0FFFFFFE8h
.text:0042858B                 imul    ecx, [esp+58h+var_14]
.text:00428590                 add     eax, ecx
.text:00428592                 cdq
.text:00428593                 and     edx, 7
.text:00428596                 add     eax, edx
.text:00428598                 sar     eax, 3
.text:0042859B
.text:0042859B loc_42859B:                             ; CODE XREF: sub_428340+23Aj
.text:0042859B                 mov     [esp+58h+var_38], eax
.text:0042859F
.text:0042859F loc_42859F:                             ; CODE XREF: sub_428340+216j
.text:0042859F                 test    eax, eax
.text:004285A1                 jle     short loc_4285DB
.text:004285A3                 mov     eax, [esp+58h+var_48]
.text:004285A7                 mov     ecx, [esp+58h+var_34]
.text:004285AB                 mov     edx, [esp+58h+var_30]
.text:004285AF                 push    ebx
.text:004285B0                 push    eax
.text:004285B1                 mov     eax, [esp+60h+var_2C]
.text:004285B5                 push    ecx
.text:004285B6                 mov     ecx, [esp+64h+var_44]
.text:004285BA                 push    edx
.text:004285BB                 mov     edx, [esp+68h+var_28]
.text:004285BF                 push    eax
.text:004285C0                 mov     eax, [esp+6Ch+var_40]
.text:004285C4                 push    ecx
.text:004285C5                 mov     ecx, [esp+70h+var_24]
.text:004285C9                 push    edx
.text:004285CA                 mov     edx, [esp+74h+var_3C]
.text:004285CE                 push    ebp
.text:004285CF                 push    eax
.text:004285D0                 mov     eax, [esp+7Ch+var_20]
.text:004285D4                 push    ecx
.text:004285D5                 push    edi
.text:004285D6                 push    esi
.text:004285D7                 push    edx
.text:004285D8                 push    eax
.text:004285D9                 jmp     short loc_428611
.text:004285DB ; ---------------------------------------------------------------------------
.text:004285DB
.text:004285DB loc_4285DB:                             ; CODE XREF: sub_428340+261j
.text:004285DB                 mov     ecx, [esp+58h+var_40]
.text:004285DF                 mov     edx, [esp+58h+var_24]
.text:004285E3                 mov     eax, [esp+58h+var_3C]
.text:004285E7                 push    ebp
.text:004285E8                 push    ecx
.text:004285E9                 mov     ecx, [esp+60h+var_20]
.text:004285ED                 push    edx
.text:004285EE                 mov     edx, [esp+64h+var_48]
.text:004285F2                 push    edi
.text:004285F3                 push    esi
.text:004285F4                 push    eax
.text:004285F5                 mov     eax, [esp+70h+var_34]
.text:004285F9                 push    ecx
.text:004285FA                 mov     ecx, [esp+74h+var_30]
.text:004285FE                 push    ebx
.text:004285FF                 push    edx
.text:00428600                 mov     edx, [esp+7Ch+var_2C]
.text:00428604                 push    eax
.text:00428605                 mov     eax, [esp+80h+var_44]
.text:00428609                 push    ecx
.text:0042860A                 mov     ecx, [esp+84h+var_28]
.text:0042860E                 push    edx
.text:0042860F                 push    eax
.text:00428610                 push    ecx
.text:00428611
.text:00428611 loc_428611:                             ; CODE XREF: sub_428340+299j
.text:00428611                 call    sub_427B30
.text:00428616                 imul    eax, [esp+90h+var_38]
.text:0042861B                 mov     ecx, eax
.text:0042861D                 mov     eax, 66666667h
.text:00428622                 imul    ecx
.text:00428624                 mov     ecx, [esp+90h+var_18]
.text:00428628                 add     esp, 38h
.text:0042862B                 sar     edx, 2
.text:0042862E                 push    ebx
.text:0042862F                 mov     eax, edx
.text:00428631                 shr     eax, 1Fh
.text:00428634                 add     eax, edx
.text:00428636                 mov     edx, [esp+5Ch+var_48]
.text:0042863A                 push    edx
.text:0042863B                 mov     edx, [esp+60h+var_2C]
.text:0042863F                 mov     [ecx-4], ax
.text:00428643                 mov     eax, [esp+60h+var_34]
.text:00428647                 mov     ecx, [esp+60h+var_30]
.text:0042864B                 push    eax
.text:0042864C                 mov     eax, [esp+64h+var_44]
.text:00428650                 push    ecx
.text:00428651                 mov     ecx, [esp+68h+var_40]
.text:00428655                 push    edx
.text:00428656                 mov     edx, [esp+6Ch+var_24]
.text:0042865A                 push    eax
.text:0042865B                 mov     eax, [esp+70h+var_3C]
.text:0042865F                 push    ebp
.text:00428660                 push    ecx
.text:00428661                 mov     ecx, [esp+78h+var_20]
.text:00428665                 push    edx
.text:00428666                 push    edi
.text:00428667                 mov     edi, [esp+80h+var_28]
.text:0042866B                 push    esi
.text:0042866C                 push    eax
.text:0042866D                 push    ecx
.text:0042866E                 call    sub_4279E0
.text:00428673                 mov     edi, [esp+8Ch+var_18]
.text:00428677                 mov     ecx, [esp+8Ch+var_34]
.text:0042867B                 add     esp, 34h
.text:0042867E                 push    ebx
.text:0042867F                 mov     [edi-2], al
.text:00428682                 mov     eax, [esp+5Ch+var_48]
.text:00428686                 push    eax
.text:00428687                 mov     eax, [esp+60h+var_2C]
.text:0042868B                 push    ecx
.text:0042868C                 mov     ecx, [esp+64h+var_44]
.text:00428690                 xor     edx, edx
.text:00428692                 mov     [edi], dx
.text:00428695                 mov     edx, [esp+64h+var_30]
.text:00428699                 push    edx
.text:0042869A                 mov     edx, [esp+68h+var_28]
.text:0042869E                 push    eax
.text:0042869F                 mov     eax, [esp+6Ch+var_40]
.text:004286A3                 push    ecx
.text:004286A4                 mov     ecx, [esp+70h+var_24]
.text:004286A8                 push    edx
.text:004286A9                 mov     edx, [esp+74h+var_10]
.text:004286AD                 push    ebp
.text:004286AE                 push    eax
.text:004286AF                 mov     eax, [esp+7Ch+var_3C]
.text:004286B3                 push    ecx
.text:004286B4                 mov     ecx, [esp+80h+var_20]
.text:004286B8                 push    edx
.text:004286B9                 push    esi
.text:004286BA                 push    eax
.text:004286BB                 push    ecx
.text:004286BC                 push    edi
.text:004286BD                 call    sub_427640
.text:004286C2                 inc     [esp+94h+var_1C]
.text:004286C6                 mov     [edi-1], al
.text:004286C9                 add     edi, 6
.text:004286CC                 add     esp, 3Ch
.text:004286CF                 mov     [esp+58h+var_18], edi
.text:004286D3                 cmp     edi, offset dword_82867C
.text:004286D9                 jl      loc_428360
.text:004286DF                 pop     edi
.text:004286E0                 pop     esi
.text:004286E1                 pop     ebp
.text:004286E2                 pop     ebx
.text:004286E3                 mov     esp, ebp
.text:004286E5                 pop     ebp
.text:004286E6                 retn
.text:004286E6 sub_428340      endp
RobboLito 009 Source Code values.c

Code: Select all

    static void Material_calculation(int c)
    {
       int white_queen, black_queen, white_rook, black_rook, white_light, black_light, 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_light = n % 2;
       n /= 2;
       white_dark = n % 2;
       n /= 2;
       black_light = 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_light + white_dark;
       black_bishop = black_light + black_dark;
       va =
          value_value(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen,
             black_pawn, black_knight, black_bishop, black_light, 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);
       va1 = va & 0xffff;
       va2 = ((va >> 16) & 0xffff) + (va1 > 0x8000);
       va1 = (sint16)va1;
       va3 = ((va >> 32) & 0xffff) + (va2 > 0x8000);
       va2 = (sint16)va2;
       va4 = ((va >> 48) & 0xffff) + (va3 > 0x8000);
       va3 = (sint16)va3;
       va4 = (sint16)va4;

       if (phase < 8)
       {
          va4 *= 8 - phase;
          va3 *= phase;
          va = va3 + va4;
          value = ((int)va) / 8;
       }
       else if (phase < 24)
       {
          va3 *= 24 - phase;
          va2 *= phase - 8;
          va = va2 + va3;
          value = ((int)va) / 16;
       }
       else
       {
          va2 *= 32 - phase;
          va1 *= phase - 24;
          va = va1 + va2;
          value = ((int)va) / 8;
       }
       white_load =
          load_white(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen, black_pawn,
             black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
       black_load =
          load_black(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen, black_pawn,
             black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);

       if (value > 0)
          ca = white_load;
       else
          ca = black_load;
       value *= ca;
       value /= 10;
       MATERIAL[c].value = value;
       MATERIAL[c].sign =
          sign_initialization(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen,
             black_pawn, black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
       MATERIAL[c].flags =
          flags_initialization(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen,
             black_pawn, black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
    }
*Modified
All that being said I would be more than happy to donate funds so Robert can continue his excellant work. This engine should be enjoyed more & criticized less.

Thank you

Dr. Ivannik

slobo
Posts: 36
Joined: Sun Jun 13, 2010 2:09 am

Re: Why Is Houdini Not Entered In The WCCC??

Post by slobo » Mon Aug 09, 2010 11:59 pm

kingliveson wrote:It is a shame really that it had come to this point. When Houdini was initially released, Robert was asked a direct question whether or not it was an Ippolit derivative. His reply left me a little disappointed because prior to asking that question, the binary had been scanned with a disassembler. Houdini, like RobboLito does not support mpv and outputs similar pv in many positions; there was a post on CCC demonstrating it.

Houdini is a modified and improved RobboLito. Robert's improvement is overshadowed by his lack of honesty. When we have a case of verbatim code -- global function structure, search, eval, values, uci, etc, and yet the continuous insistence of only "taking ideas" is quite immodest. I cannot understand what sort of ego drives one to such a point of no return. The debate is over for me. Below are a couple examples of what you will see throughout Houdini's binary:
I apreciate very much KLO´s ethical aproach of the problem. We should always point out what engines authors are doing, what is correct and what is wrong, but all these should not be an obstacle for us to use Houdini, for example, and enjoy the engine itself.

SL

User avatar
Uly
Posts: 838
Joined: Thu Jun 10, 2010 5:33 am

Re: Why Is Houdini Not Entered In The WCCC??

Post by Uly » Tue Aug 10, 2010 12:07 am

Dr. Ivannik wrote:All that being said I would be more than happy to donate funds so Robert can continue his excellant work.
Isn't that like saying that people wanting to program an engine should base it on RobboLito instead of starting from scratch?

User avatar
Robert Houdart
Posts: 180
Joined: Thu Jun 10, 2010 4:55 pm
Contact:

Re: Why Is Houdini Not Entered In The WCCC??

Post by Robert Houdart » Tue Aug 10, 2010 12:37 am

It is funny that you managed to present exactly the same code snippet as Lance Perkins did 2 months ago at TalkChess.

Let me *again* repeat what I already stated at TalkChess in the very first thread about Houdini, 15 days before Lance Perkins' topic, and about 80 days before your current post:
Robert Houdart wrote:The basic positional values (piece values on squares) are not very different from the Ippo* family. Looking at Ippo's source code, I was - and still am - amazed at how such simple functions can produce such an extremely strong engine. So if you find relatively similar positional evaluations in some quiet positions, I will not be surprised.
You show a code snippet from the exact same material table initialization routine as Lance Perkins, and then, in exactly the same way as Lance Perkins, you proceed to a gross and unsupported generalization.

To return to the WCCC topic at hand, let me repeat what I wrote above: the day that Houdini enters the WCCC (hopefully next time it gets organized in Europe), I will duly submit the Houdini source code to the WCCC tournament director, and he or she will have all the liberty and time to compare the source code to Ippolit, Stockfish, Crafty, Robbolito, Ivanhoe etc.

Robert
Last edited by Robert Houdart on Tue Aug 10, 2010 12:39 am, edited 1 time in total.

LucenaTheLucid
Posts: 160
Joined: Thu Jun 10, 2010 2:14 am
Real Name: Luis Smith

Re: Why Is Houdini Not Entered In The WCCC??

Post by LucenaTheLucid » Tue Aug 10, 2010 1:40 am

Hi Robert,

While I love your fantastic engine, the way you phrase yourself leads me to believe it was indeed copied code to begin with. Not to say that by the time you enter a WCCC it won't be your own code through major modifications. You sound a bit cryptic here. I hope it is not offensive to you for me to phrase it this way.

I think if you had reversed this process, and started with Ippo source code and entered a WCCC with your own heavily modified source code then there would be much less controversy surrounding your engine.

Either way thanks for the hard work and the and quick bug fixes. THE BEST "Customer Support" of computer chess engines on the web...

LucenaTheLucid
Posts: 160
Joined: Thu Jun 10, 2010 2:14 am
Real Name: Luis Smith

Re: Why Is Houdini Not Entered In The WCCC??

Post by LucenaTheLucid » Tue Aug 10, 2010 2:10 am

LucenaTheLucid wrote:Hi Robert,

While I love your fantastic engine, the way you phrase yourself leads me to believe it was indeed copied code to begin with. Not to say that by the time you enter a WCCC it won't be your own code through major modifications. You sound a bit cryptic here. I hope it is not offensive to you for me to phrase it this way.

I think if you had reversed this process, and started with Ippo source code and entered a WCCC with your own heavily modified source code then there would be much less controversy surrounding your engine.

Either way thanks for the hard work and the and quick bug fixes. THE BEST "Customer Support" of computer chess engines on the web...
Sorry, let me clarify, if you had FIRST competed in a WCCC and THEN released Houdini.

User avatar
Robert Houdart
Posts: 180
Joined: Thu Jun 10, 2010 4:55 pm
Contact:

Re: Why Is Houdini Not Entered In The WCCC??

Post by Robert Houdart » Tue Aug 10, 2010 2:43 am

LucenaTheLucid wrote:You sound a bit cryptic here.
I'm sorry if my words are cryptic, that is certainly not the intent (on the contrary).

I can only point at the following anomaly.
- Person 1 (Lance P) claimed 2 months ago that engine Houdini is largely copied from another engine and showed a code snippet.
- Person 2 (kingliveson) now likewise claims that engine Houdini is largely copied from another engine and shows the same code snippet.
If Houdini was largely copied from Robbo or Ippo with "just a tweak or two" (as some claim :)), isn't it disctinctly odd that both persons would need to resort to exactly the same code snippet (significantly less than 1% of the binary) to prove their case? This strongly suggests that the snippet that is shown is the exception rather than the rule.

But I now understand that this is a battle that apparently cannot be won. There is actually very little I can prove without publishing the source code.
Since I end up repeating myself over and over again, it's probably better that I pull the plug here and now 8-) .

Cheers,
Robert

tomgdrums
Posts: 42
Joined: Thu Aug 05, 2010 12:23 am

Re: Why Is Houdini Not Entered In The WCCC??

Post by tomgdrums » Tue Aug 10, 2010 3:00 am

What I don't understand is why so many on this forum are now hunting Robert Houdart.

And yet Norman Schmidt is treated as royalty and given the benefit of the doubt.

It seems that some on this forum are now Ippolit "fan boys" and are acting like many of the Rybka "fan boys".

It seems to me that computer chess is completely fractured right now.

No one knows for sure about the ippos, Vas won't fix bugs, now everyone is after Houdini even though Robert does great customer service and yet he doesn't charge for the engine.

And for the record I don't use any of the Ippo family or Houdini because I am just not sure. But I also don't like to see how some of the people who wanted "freedom" are now witch hunting Houdini and it's creator.

Man I hope Hiarcs and Shredder never go out of business....or I won't know what to do!

Post Reply