Why Is Houdini Not Entered In The WCCC??

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

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

Post by BTO7 » Tue Aug 10, 2010 8:42 pm

kingliveson wrote:I need to be more careful with what is posted. If you really want to do better analysis, use the initial release of Houdini. I have attached the binary, including RobboLito and source. More modified code below:

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

Code: Select all

.text:00424010 ; =============== S U B R O U T I N E =======================================
.text:00424010
.text:00424010 ; Attributes: bp-based frame
.text:00424010
.text:00424010 sub_424010      proc near               ; CODE XREF: sub_417AC0+5C2p
.text:00424010                                         ; sub_4254F0+E9p
.text:00424010
.text:00424010 var_10          = qword ptr -10h
.text:00424010 var_8           = dword ptr -8
.text:00424010 var_4           = dword ptr -4
.text:00424010
.text:00424010                 push    ebp
.text:00424011                 mov     ebp, esp
.text:00424013                 sub     esp, 10h
.text:00424016                 xor     eax, eax
.text:00424018                 push    esi
.text:00424019                 mov     dword ptr qword_780E60, eax
.text:0042401E                 mov     dword ptr qword_780E60+4, eax
.text:00424023                 push    edi
.text:00424024                 mov     byte_5F7500, al
.text:00424029                 mov     ecx, 1Eh
.text:0042402E                 mov     esi, offset qword_780E60
.text:00424033                 mov     edi, offset qword_780E68
.text:00424038                 rep movsd
.text:0042403A                 mov     esi, dword_73E940
.text:00424040                 mov     [esi+8], eax
.text:00424043                 mov     [esi+0Ch], eax
.text:00424046                 mov     [esi], eax
.text:00424048                 mov     [esi+4], eax
.text:0042404B                 mov     [esi+10h], eax
.text:0042404E                 mov     [esi+14h], eax
.text:00424051                 mov     eax, 1
.text:00424056                 sub     eax, offset byte_780E20
.text:0042405B                 mov     [ebp+var_4], eax
.text:0042405E                 mov     eax, 2
.text:00424063                 sub     eax, offset byte_780E20
.text:00424068                 mov     [ebp+var_8], eax
.text:0042406B                 mov     eax, 3
.text:00424070                 xor     edi, edi
.text:00424072                 sub     eax, offset byte_780E20
.text:00424077                 mov     dword ptr [ebp+var_10+4], eax
.text:0042407A                 push    ebx
.text:0042407B                 jmp     short loc_424080
.text:0042407B ; ---------------------------------------------------------------------------
.text:0042407D                 align 10h
.text:00424080
.text:00424080 loc_424080:                             ; CODE XREF: sub_424010+6Bj
.text:00424080                                         ; sub_424010+25Bj
.text:00424080                 movzx   ebx, byte_780E20[edi]
.text:00424087                 test    ebx, ebx
.text:00424089                 jz      short loc_4240F3
.text:0042408B                 mov     eax, ebx
.text:0042408D                 shl     eax, 6
.text:00424090                 add     eax, edi
.text:00424092                 mov     ecx, dword_77FE20[eax*4]
.text:00424099                 add     [esi+14h], ecx
.text:0042409C                 mov     edx, dword_719A80[eax*8]
.text:004240A3                 xor     [esi], edx
.text:004240A5                 mov     ecx, dword_719A84[eax*8]
.text:004240AC                 xor     [esi+4], ecx
.text:004240AF                 cmp     ebx, 1
.text:004240B2                 jz      short loc_4240B9
.text:004240B4                 cmp     ebx, 9
.text:004240B7                 jnz     short loc_4240CD
.text:004240B9
.text:004240B9 loc_4240B9:                             ; CODE XREF: sub_424010+A2j
.text:004240B9                 mov     edx, dword_719A80[eax*8]
.text:004240C0                 xor     [esi+8], edx
.text:004240C3                 mov     eax, dword_719A84[eax*8]
.text:004240CA                 xor     [esi+0Ch], eax
.text:004240CD
.text:004240CD loc_4240CD:                             ; CODE XREF: sub_424010+A7j
.text:004240CD                 mov     ecx, ds:dword_436BC0[ebx*4]
.text:004240D4                 add     [esi+10h], ecx
.text:004240D7                 mov     eax, 1
.text:004240DC                 xor     edx, edx
.text:004240DE                 mov     ecx, edi
.text:004240E0                 call    __allshl
.text:004240E5                 or      dword ptr qword_780E60[ebx*8], eax
.text:004240EC                 or      dword ptr qword_780E60+4[ebx*8], edx
.text:004240F3
.text:004240F3 loc_4240F3:                             ; CODE XREF: sub_424010+79j
.text:004240F3                 movzx   ebx, byte_780E21[edi]
.text:004240FA                 test    ebx, ebx
.text:004240FC                 jz      short loc_42416F
.text:004240FE                 mov     edx, ebx
.text:00424100                 shl     edx, 6
.text:00424103                 lea     eax, [edx+edi]
.text:00424106                 mov     ecx, dword_77FE24[eax*4]
.text:0042410D                 add     [esi+14h], ecx
.text:00424110                 mov     edx, dword_719A88[eax*8]
.text:00424117                 xor     [esi], edx
.text:00424119                 mov     ecx, dword_719A8C[eax*8]
.text:00424120                 xor     [esi+4], ecx
.text:00424123                 cmp     ebx, 1
.text:00424126                 jz      short loc_42412D
.text:00424128                 cmp     ebx, 9
.text:0042412B                 jnz     short loc_424141
.text:0042412D
.text:0042412D loc_42412D:                             ; CODE XREF: sub_424010+116j
.text:0042412D                 mov     edx, dword_719A88[eax*8]
.text:00424134                 xor     [esi+8], edx
.text:00424137                 mov     eax, dword_719A8C[eax*8]
.text:0042413E                 xor     [esi+0Ch], eax
.text:00424141
.text:00424141 loc_424141:                             ; CODE XREF: sub_424010+11Bj
.text:00424141                 mov     ecx, ds:dword_436BC0[ebx*4]
.text:00424148                 mov     edx, [ebp+var_4]
.text:0042414B                 add     [esi+10h], ecx
.text:0042414E                 lea     ecx, byte_780E20[edi+edx]
.text:00424155                 mov     eax, 1
.text:0042415A                 xor     edx, edx
.text:0042415C                 call    __allshl
.text:00424161                 or      dword ptr qword_780E60[ebx*8], eax
.text:00424168                 or      dword ptr qword_780E60+4[ebx*8], edx
.text:0042416F
.text:0042416F loc_42416F:                             ; CODE XREF: sub_424010+ECj
.text:0042416F                 movzx   ebx, byte_780E22[edi]
.text:00424176                 test    ebx, ebx
.text:00424178                 jz      short loc_4241EA
.text:0042417A                 mov     eax, ebx
.text:0042417C                 shl     eax, 6
.text:0042417F                 add     eax, edi
.text:00424181                 mov     ecx, dword_77FE28[eax*4]
.text:00424188                 add     [esi+14h], ecx
.text:0042418B                 mov     edx, dword_719A90[eax*8]
.text:00424192                 xor     [esi], edx
.text:00424194                 mov     ecx, dword_719A94[eax*8]
.text:0042419B                 xor     [esi+4], ecx
.text:0042419E                 cmp     ebx, 1
.text:004241A1                 jz      short loc_4241A8
.text:004241A3                 cmp     ebx, 9
.text:004241A6                 jnz     short loc_4241BC
.text:004241A8
.text:004241A8 loc_4241A8:                             ; CODE XREF: sub_424010+191j
.text:004241A8                 mov     edx, dword_719A90[eax*8]
.text:004241AF                 xor     [esi+8], edx
.text:004241B2                 mov     eax, dword_719A94[eax*8]
.text:004241B9                 xor     [esi+0Ch], eax
.text:004241BC
.text:004241BC loc_4241BC:                             ; CODE XREF: sub_424010+196j
.text:004241BC                 mov     ecx, ds:dword_436BC0[ebx*4]
.text:004241C3                 mov     edx, [ebp+var_8]
.text:004241C6                 add     [esi+10h], ecx
.text:004241C9                 lea     ecx, byte_780E20[edi+edx]
.text:004241D0                 mov     eax, 1
.text:004241D5                 xor     edx, edx
.text:004241D7                 call    __allshl
.text:004241DC                 or      dword ptr qword_780E60[ebx*8], eax
.text:004241E3                 or      dword ptr qword_780E60+4[ebx*8], edx
.text:004241EA
.text:004241EA loc_4241EA:                             ; CODE XREF: sub_424010+168j
.text:004241EA                 movzx   ebx, byte_780E23[edi]
.text:004241F1                 test    ebx, ebx
.text:004241F3                 jz      short loc_424265
.text:004241F5                 mov     eax, ebx
.text:004241F7                 shl     eax, 6
.text:004241FA                 add     eax, edi
.text:004241FC                 mov     ecx, dword_77FE2C[eax*4]
.text:00424203                 add     [esi+14h], ecx
.text:00424206                 mov     edx, dword_719A98[eax*8]
.text:0042420D                 xor     [esi], edx
.text:0042420F                 mov     ecx, dword_719A9C[eax*8]
.text:00424216                 xor     [esi+4], ecx
.text:00424219                 cmp     ebx, 1
.text:0042421C                 jz      short loc_424223
.text:0042421E                 cmp     ebx, 9
.text:00424221                 jnz     short loc_424237
.text:00424223
.text:00424223 loc_424223:                             ; CODE XREF: sub_424010+20Cj
.text:00424223                 mov     edx, dword_719A98[eax*8]
.text:0042422A                 xor     [esi+8], edx
.text:0042422D                 mov     eax, dword_719A9C[eax*8]
.text:00424234                 xor     [esi+0Ch], eax
.text:00424237
.text:00424237 loc_424237:                             ; CODE XREF: sub_424010+211j
.text:00424237                 mov     ecx, ds:dword_436BC0[ebx*4]
.text:0042423E                 mov     edx, dword ptr [ebp+var_10+4]
.text:00424241                 add     [esi+10h], ecx
.text:00424244                 lea     ecx, byte_780E20[edi+edx]
.text:0042424B                 mov     eax, 1
.text:00424250                 xor     edx, edx
.text:00424252                 call    __allshl
.text:00424257                 or      dword ptr qword_780E60[ebx*8], eax
.text:0042425E                 or      dword ptr qword_780E60+4[ebx*8], edx
.text:00424265
.text:00424265 loc_424265:                             ; CODE XREF: sub_424010+1E3j
.text:00424265                 add     edi, 4
.text:00424268                 cmp     edi, 3Fh
.text:0042426B                 jle     loc_424080
.text:00424271                 mov     eax, dword ptr qword_780E68
.text:00424276                 or      eax, dword ptr qword_780E70
.text:0042427C                 mov     edi, dword ptr qword_780E78
.text:00424282                 or      eax, dword ptr qword_780E88
.text:00424288                 mov     ecx, dword ptr qword_780EA8+4
.text:0042428E                 or      eax, dword ptr qword_780E80
.text:00424294                 or      ecx, dword ptr qword_780EB0+4
.text:0042429A                 or      eax, dword ptr qword_780E90
.text:004242A0                 or      ecx, dword ptr qword_780EC8+4
.text:004242A6                 or      eax, dword ptr qword_780E98
.text:004242AC                 or      ecx, dword ptr qword_780EC0+4
.text:004242B2                 mov     edx, dword ptr qword_780E68+4
.text:004242B8                 or      edx, dword ptr qword_780E70+4
.text:004242BE                 or      ecx, dword ptr qword_780ED0+4
.text:004242C4                 or      edx, dword ptr qword_780E88+4
.text:004242CA                 or      eax, edi
.text:004242CC                 or      edx, dword ptr qword_780E80+4
.text:004242D2                 or      ecx, dword ptr qword_780ED8+4
.text:004242D8                 or      edx, dword ptr qword_780E90+4
.text:004242DE                 mov     dword ptr qword_780E60, eax
.text:004242E3                 mov     eax, dword ptr qword_780EA8
.text:004242E8                 or      eax, dword ptr qword_780EB0
.text:004242EE                 or      edx, dword ptr qword_780E98+4
.text:004242F4                 or      eax, dword ptr qword_780EC8
.text:004242FA                 or      ecx, dword ptr qword_780EB8+4
.text:00424300                 or      eax, dword ptr qword_780EC0
.text:00424306                 mov     ebx, dword ptr qword_780E78+4
.text:0042430C                 or      eax, dword ptr qword_780ED0
.text:00424312                 or      edx, ebx
.text:00424314                 or      eax, dword ptr qword_780ED8
.text:0042431A                 mov     dword ptr qword_780EA0+4, ecx
.text:00424320                 or      eax, dword ptr qword_780EB8
.text:00424326                 or      ecx, edx
.text:00424328                 mov     dword ptr qword_780EA0, eax
.text:0042432D                 or      eax, dword ptr qword_780E60
.text:00424333                 mov     dword ptr qword_780EE0+4, ecx
.text:00424339                 mov     dword ptr qword_780EE0, eax
.text:0042433E                 mov     dword ptr [ebp+var_10], eax
.text:00424341                 mov     eax, dword ptr qword_780E98
.text:00424346                 mov     dword ptr [ebp+var_10+4], ecx
.text:00424349                 mov     ecx, eax
.text:0042434B                 shr     ecx, 1
.text:0042434D                 and     ecx, 55555555h
.text:00424353                 sub     eax, ecx
.text:00424355                 mov     ecx, eax
.text:00424357                 mov     dword ptr qword_780E60+4, edx
.text:0042435D                 xor     edx, edx
.text:0042435F                 and     eax, 33333333h
.text:00424364                 mov     dword ptr qword_780EF8, edx
.text:0042436A                 mov     dword ptr qword_780EF8+4, edx
.text:00424370                 mov     dword ptr qword_780EF0, edx
.text:00424376                 mov     dword ptr qword_780EF0+4, edx
.text:0042437C                 mov     dword ptr qword_780EE8, edx
.text:00424382                 mov     dword ptr qword_780EE8+4, edx
.text:00424388                 shr     ecx, 2
.text:0042438B                 and     ecx, 33333333h
.text:00424391                 add     ecx, eax
.text:00424393                 mov     eax, dword ptr qword_780E98+4
.text:00424398                 mov     edx, eax
.text:0042439A                 shr     edx, 1
.text:0042439C                 and     edx, 55555555h
.text:004243A2                 sub     eax, edx
.text:004243A4                 mov     edx, eax
.text:004243A6                 shr     edx, 2
.text:004243A9                 and     eax, 33333333h
.text:004243AE                 and     edx, 33333333h
.text:004243B4                 add     edx, eax
.text:004243B6                 mov     eax, edx
.text:004243B8                 shr     eax, 4
.text:004243BB                 add     eax, edx
.text:004243BD                 mov     edx, ecx
.text:004243BF                 shr     edx, 4
.text:004243C2                 add     edx, ecx
.text:004243C4                 and     eax, 0F0F0F0Fh
.text:004243C9                 and     edx, 0F0F0F0Fh
.text:004243CF                 imul    eax, 1010101h
.text:004243D5                 imul    edx, 1010101h
.text:004243DB                 shr     eax, 18h
.text:004243DE                 shr     edx, 18h
.text:004243E1                 add     eax, edx
.text:004243E3                 cmp     eax, 1
.text:004243E6                 jg      loc_424602
.text:004243EC                 mov     eax, dword ptr qword_780ED8
.text:004243F1                 mov     ecx, eax
.text:004243F3                 shr     ecx, 1
.text:004243F5                 and     ecx, 55555555h
.text:004243FB                 sub     eax, ecx
.text:004243FD                 mov     ecx, eax
.text:004243FF                 and     eax, 33333333h
.text:00424404                 shr     ecx, 2
.text:00424407                 and     ecx, 33333333h
.text:0042440D                 add     ecx, eax
.text:0042440F                 mov     eax, dword ptr qword_780ED8+4
.text:00424414                 mov     edx, eax
.text:00424416                 shr     edx, 1
.text:00424418                 and     edx, 55555555h
.text:0042441E                 sub     eax, edx
.text:00424420                 mov     edx, eax
.text:00424422                 shr     edx, 2
.text:00424425                 and     eax, 33333333h
.text:0042442A                 and     edx, 33333333h
.text:00424430                 add     edx, eax
.text:00424432                 mov     eax, edx
.text:00424434                 shr     eax, 4
.text:00424437                 add     eax, edx
.text:00424439                 mov     edx, ecx
.text:0042443B                 shr     edx, 4
.text:0042443E                 add     edx, ecx
.text:00424440                 and     eax, 0F0F0F0Fh
.text:00424445                 and     edx, 0F0F0F0Fh
.text:0042444B                 imul    eax, 1010101h
.text:00424451                 imul    edx, 1010101h
.text:00424457                 shr     eax, 18h
.text:0042445A                 shr     edx, 18h
.text:0042445D                 add     eax, edx
.text:0042445F                 cmp     eax, 1
.text:00424462                 jg      loc_424602
.text:00424468                 mov     eax, dword ptr qword_780E90
.text:0042446D                 mov     ecx, eax
.text:0042446F                 shr     ecx, 1
.text:00424471                 and     ecx, 55555555h
.text:00424477                 sub     eax, ecx
.text:00424479                 mov     ecx, eax
.text:0042447B                 and     eax, 33333333h
.text:00424480                 shr     ecx, 2
.text:00424483                 and     ecx, 33333333h
.text:00424489                 add     ecx, eax
.text:0042448B                 mov     eax, dword ptr qword_780E90+4
.text:00424490                 mov     edx, eax
.text:00424492                 shr     edx, 1
.text:00424494                 and     edx, 55555555h
.text:0042449A                 sub     eax, edx
.text:0042449C                 mov     edx, eax
.text:0042449E                 shr     edx, 2
.text:004244A1                 and     eax, 33333333h
.text:004244A6                 and     edx, 33333333h
.text:004244AC                 add     edx, eax
.text:004244AE                 mov     eax, edx
.text:004244B0                 shr     eax, 4
.text:004244B3                 add     eax, edx
.text:004244B5                 mov     edx, ecx
.text:004244B7                 shr     edx, 4
.text:004244BA                 add     edx, ecx
.text:004244BC                 and     eax, 0F0F0F0Fh
.text:004244C1                 and     edx, 0F0F0F0Fh
.text:004244C7                 imul    eax, 1010101h
.text:004244CD                 imul    edx, 1010101h
.text:004244D3                 shr     eax, 18h
.text:004244D6                 shr     edx, 18h
.text:004244D9                 add     eax, edx
.text:004244DB                 cmp     eax, 2
.text:004244DE                 jg      loc_424602
.text:004244E4                 mov     eax, dword ptr qword_780ED0
.text:004244E9                 mov     ecx, eax
.text:004244EB                 shr     ecx, 1
.text:004244ED                 and     ecx, 55555555h
.text:004244F3                 sub     eax, ecx
.text:004244F5                 mov     ecx, eax
.text:004244F7                 and     eax, 33333333h
.text:004244FC                 shr     ecx, 2
.text:004244FF                 and     ecx, 33333333h
.text:00424505                 add     ecx, eax
.text:00424507                 mov     eax, dword ptr qword_780ED0+4
.text:0042450C                 mov     edx, eax
.text:0042450E                 shr     edx, 1
.text:00424510                 and     edx, 55555555h
.text:00424516                 sub     eax, edx
.text:00424518                 mov     edx, eax
.text:0042451A                 shr     edx, 2
.text:0042451D                 and     eax, 33333333h
.text:00424522                 and     edx, 33333333h
.text:00424528                 add     edx, eax
.text:0042452A                 mov     eax, edx
.text:0042452C                 shr     eax, 4
.text:0042452F                 add     eax, edx
.text:00424531                 mov     edx, ecx
.text:00424533                 shr     edx, 4
.text:00424536                 add     edx, ecx
.text:00424538                 and     eax, 0F0F0F0Fh
.text:0042453D                 and     edx, 0F0F0F0Fh
.text:00424543                 imul    eax, 1010101h
.text:00424549                 imul    edx, 1010101h
.text:0042454F                 shr     eax, 18h
.text:00424552                 shr     edx, 18h
.text:00424555                 add     eax, edx
.text:00424557                 cmp     eax, 2
.text:0042455A                 jg      loc_424602
.text:00424560                 mov     eax, dword ptr qword_780E80+4
.text:00424565                 mov     ecx, dword ptr qword_780E80
.text:0042456B                 push    eax
.text:0042456C                 push    ecx
.text:0042456D                 call    sub_401000
.text:00424572                 add     esp, 8
.text:00424575                 cmp     eax, 1
.text:00424578                 jg      loc_424602
.text:0042457E                 mov     edx, dword ptr qword_780EC0+4
.text:00424584                 mov     eax, dword ptr qword_780EC0
.text:00424589                 push    edx
.text:0042458A                 push    eax
.text:0042458B                 call    sub_401000
.text:00424590                 add     esp, 8
.text:00424593                 cmp     eax, 1
.text:00424596                 jg      short loc_424602
.text:00424598                 mov     ecx, dword ptr qword_780E70+4
.text:0042459E                 mov     edx, dword ptr qword_780E70
.text:004245A4                 push    ecx
.text:004245A5                 push    edx
.text:004245A6                 call    sub_401000
.text:004245AB                 add     esp, 8
.text:004245AE                 cmp     eax, 2
.text:004245B1                 jg      short loc_424602
.text:004245B3                 mov     eax, dword ptr qword_780EB0+4
.text:004245B8                 mov     ecx, dword ptr qword_780EB0
.text:004245BE                 push    eax
.text:004245BF                 push    ecx
.text:004245C0                 call    sub_401000
.text:004245C5                 add     esp, 8
.text:004245C8                 cmp     eax, 2
.text:004245CB                 jg      short loc_424602
.text:004245CD                 mov     edx, dword ptr qword_780E88+4
.text:004245D3                 mov     eax, dword ptr qword_780E88
.text:004245D8                 push    edx
.text:004245D9                 push    eax
.text:004245DA                 call    sub_401000
.text:004245DF                 add     esp, 8
.text:004245E2                 cmp     eax, 1
.text:004245E5                 jg      short loc_424602
.text:004245E7                 mov     ecx, dword ptr qword_780EC8+4
.text:004245ED                 mov     edx, dword ptr qword_780EC8
.text:004245F3                 push    ecx
.text:004245F4                 push    edx
.text:004245F5                 call    sub_401000
.text:004245FA                 add     esp, 8
.text:004245FD                 cmp     eax, 1
.text:00424600                 jle     short loc_424609
.text:00424602
.text:00424602 loc_424602:                             ; CODE XREF: sub_424010+3D6j
.text:00424602                                         ; sub_424010+452j ...
.text:00424602                 or      dword ptr [esi+10h], 80000000h
.text:00424609
.text:00424609 loc_424609:                             ; CODE XREF: sub_424010+5F0j
.text:00424609                 mov     eax, edi
.text:0042460B                 mov     ecx, eax
.text:0042460D                 shr     ecx, 1
.text:0042460F                 and     ecx, 55555555h
.text:00424615                 sub     eax, ecx
.text:00424617                 mov     ecx, eax
.text:00424619                 and     eax, 33333333h
.text:0042461E                 shr     ecx, 2
.text:00424621                 and     ecx, 33333333h
.text:00424627                 add     ecx, eax
.text:00424629                 mov     eax, ebx
.text:0042462B                 mov     edx, eax
.text:0042462D                 shr     edx, 1
.text:0042462F                 and     edx, 55555555h
.text:00424635                 sub     eax, edx
.text:00424637                 mov     edx, eax
.text:00424639                 shr     edx, 2
.text:0042463C                 and     eax, 33333333h
.text:00424641                 and     edx, 33333333h
.text:00424647                 add     edx, eax
.text:00424649                 mov     eax, edx
.text:0042464B                 shr     eax, 4
.text:0042464E                 add     eax, edx
.text:00424650                 mov     edx, ecx
.text:00424652                 shr     edx, 4
.text:00424655                 add     edx, ecx
.text:00424657                 and     eax, 0F0F0F0Fh
.text:0042465C                 and     edx, 0F0F0F0Fh
.text:00424662                 imul    eax, 1010101h
.text:00424668                 imul    edx, 1010101h
.text:0042466E                 shr     eax, 18h
.text:00424671                 shr     edx, 18h
.text:00424674                 add     eax, edx
.text:00424676                 cmp     eax, 1
.text:00424679                 jz      short loc_42469B
.text:0042467B                 push    offset aKingWhite1 ; "king white != 1"
.text:00424680                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424685                 call    sub_427298
.text:0042468A                 call    sub_426EFD
.text:0042468F                 add     eax, 20h
.text:00424692                 push    eax             ; FILE *
.text:00424693                 call    _fflush
.text:00424698                 add     esp, 0Ch
.text:0042469B
.text:0042469B loc_42469B:                             ; CODE XREF: sub_424010+669j
.text:0042469B                 mov     eax, dword ptr qword_780EB8
.text:004246A0                 mov     ecx, eax
.text:004246A2                 shr     ecx, 1
.text:004246A4                 and     ecx, 55555555h
.text:004246AA                 sub     eax, ecx
.text:004246AC                 mov     ecx, eax
.text:004246AE                 and     eax, 33333333h
.text:004246B3                 shr     ecx, 2
.text:004246B6                 and     ecx, 33333333h
.text:004246BC                 add     ecx, eax
.text:004246BE                 mov     eax, dword ptr qword_780EB8+4
.text:004246C3                 mov     edx, eax
.text:004246C5                 shr     edx, 1
.text:004246C7                 and     edx, 55555555h
.text:004246CD                 sub     eax, edx
.text:004246CF                 mov     edx, eax
.text:004246D1                 shr     edx, 2
.text:004246D4                 and     eax, 33333333h
.text:004246D9                 and     edx, 33333333h
.text:004246DF                 add     edx, eax
.text:004246E1                 mov     eax, edx
.text:004246E3                 shr     eax, 4
.text:004246E6                 add     eax, edx
.text:004246E8                 mov     edx, ecx
.text:004246EA                 shr     edx, 4
.text:004246ED                 add     edx, ecx
.text:004246EF                 and     eax, 0F0F0F0Fh
.text:004246F4                 and     edx, 0F0F0F0Fh
.text:004246FA                 imul    eax, 1010101h
.text:00424700                 imul    edx, 1010101h
.text:00424706                 shr     eax, 18h
.text:00424709                 shr     edx, 18h
.text:0042470C                 add     eax, edx
.text:0042470E                 cmp     eax, 1
.text:00424711                 jz      short loc_424733
.text:00424713                 push    offset aKingBlack1 ; "king black != 1"
.text:00424718                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:0042471D                 call    sub_427298
.text:00424722                 call    sub_426EFD
.text:00424727                 add     eax, 20h
.text:0042472A                 push    eax             ; FILE *
.text:0042472B                 call    _fflush
.text:00424730                 add     esp, 0Ch
.text:00424733
.text:00424733 loc_424733:                             ; CODE XREF: sub_424010+701j
.text:00424733                 mov     eax, dword ptr qword_780E98
.text:00424738                 mov     ecx, eax
.text:0042473A                 shr     ecx, 1
.text:0042473C                 and     ecx, 55555555h
.text:00424742                 sub     eax, ecx
.text:00424744                 mov     ecx, eax
.text:00424746                 and     eax, 33333333h
.text:0042474B                 shr     ecx, 2
.text:0042474E                 and     ecx, 33333333h
.text:00424754                 add     ecx, eax
.text:00424756                 mov     eax, dword ptr qword_780E98+4
.text:0042475B                 mov     edx, eax
.text:0042475D                 shr     edx, 1
.text:0042475F                 and     edx, 55555555h
.text:00424765                 sub     eax, edx
.text:00424767                 mov     edx, eax
.text:00424769                 shr     edx, 2
.text:0042476C                 and     eax, 33333333h
.text:00424771                 and     edx, 33333333h
.text:00424777                 add     edx, eax
.text:00424779                 mov     eax, edx
.text:0042477B                 shr     eax, 4
.text:0042477E                 add     eax, edx
.text:00424780                 mov     edx, ecx
.text:00424782                 shr     edx, 4
.text:00424785                 add     edx, ecx
.text:00424787                 and     eax, 0F0F0F0Fh
.text:0042478C                 and     edx, 0F0F0F0Fh
.text:00424792                 imul    eax, 1010101h
.text:00424798                 imul    edx, 1010101h
.text:0042479E                 shr     eax, 18h
.text:004247A1                 shr     edx, 18h
.text:004247A4                 add     eax, edx
.text:004247A6                 cmp     eax, 9
.text:004247A9                 jle     short loc_4247CB
.text:004247AB                 push    offset aQueenWhite9 ; "queen white > 9"
.text:004247B0                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:004247B5                 call    sub_427298
.text:004247BA                 call    sub_426EFD
.text:004247BF                 add     eax, 20h
.text:004247C2                 push    eax             ; FILE *
.text:004247C3                 call    _fflush
.text:004247C8                 add     esp, 0Ch
.text:004247CB
.text:004247CB loc_4247CB:                             ; CODE XREF: sub_424010+799j
.text:004247CB                 mov     eax, dword ptr qword_780ED8
.text:004247D0                 mov     ecx, eax
.text:004247D2                 shr     ecx, 1
.text:004247D4                 and     ecx, 55555555h
.text:004247DA                 sub     eax, ecx
.text:004247DC                 mov     ecx, eax
.text:004247DE                 and     eax, 33333333h
.text:004247E3                 shr     ecx, 2
.text:004247E6                 and     ecx, 33333333h
.text:004247EC                 add     ecx, eax
.text:004247EE                 mov     eax, dword ptr qword_780ED8+4
.text:004247F3                 mov     edx, eax
.text:004247F5                 shr     edx, 1
.text:004247F7                 and     edx, 55555555h
.text:004247FD                 sub     eax, edx
.text:004247FF                 mov     edx, eax
.text:00424801                 shr     edx, 2
.text:00424804                 and     eax, 33333333h
.text:00424809                 and     edx, 33333333h
.text:0042480F                 add     edx, eax
.text:00424811                 mov     eax, edx
.text:00424813                 shr     eax, 4
.text:00424816                 add     eax, edx
.text:00424818                 mov     edx, ecx
.text:0042481A                 shr     edx, 4
.text:0042481D                 add     edx, ecx
.text:0042481F                 and     eax, 0F0F0F0Fh
.text:00424824                 and     edx, 0F0F0F0Fh
.text:0042482A                 imul    eax, 1010101h
.text:00424830                 imul    edx, 1010101h
.text:00424836                 shr     eax, 18h
.text:00424839                 shr     edx, 18h
.text:0042483C                 add     eax, edx
.text:0042483E                 cmp     eax, 9
.text:00424841                 jle     short loc_424863
.text:00424843                 push    offset aQueenBlack9 ; "queen black > 9"
.text:00424848                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:0042484D                 call    sub_427298
.text:00424852                 call    sub_426EFD
.text:00424857                 add     eax, 20h
.text:0042485A                 push    eax             ; FILE *
.text:0042485B                 call    _fflush
.text:00424860                 add     esp, 0Ch
.text:00424863
.text:00424863 loc_424863:                             ; CODE XREF: sub_424010+831j
.text:00424863                 mov     eax, dword ptr qword_780E90
.text:00424868                 mov     ecx, eax
.text:0042486A                 shr     ecx, 1
.text:0042486C                 and     ecx, 55555555h
.text:00424872                 sub     eax, ecx
.text:00424874                 mov     ecx, eax
.text:00424876                 and     eax, 33333333h
.text:0042487B                 shr     ecx, 2
.text:0042487E                 and     ecx, 33333333h
.text:00424884                 add     ecx, eax
.text:00424886                 mov     eax, dword ptr qword_780E90+4
.text:0042488B                 mov     edx, eax
.text:0042488D                 shr     edx, 1
.text:0042488F                 and     edx, 55555555h
.text:00424895                 sub     eax, edx
.text:00424897                 mov     edx, eax
.text:00424899                 shr     edx, 2
.text:0042489C                 and     eax, 33333333h
.text:004248A1                 and     edx, 33333333h
.text:004248A7                 add     edx, eax
.text:004248A9                 mov     eax, edx
.text:004248AB                 shr     eax, 4
.text:004248AE                 add     eax, edx
.text:004248B0                 mov     edx, ecx
.text:004248B2                 shr     edx, 4
.text:004248B5                 add     edx, ecx
.text:004248B7                 and     eax, 0F0F0F0Fh
.text:004248BC                 and     edx, 0F0F0F0Fh
.text:004248C2                 imul    eax, 1010101h
.text:004248C8                 imul    edx, 1010101h
.text:004248CE                 shr     eax, 18h
.text:004248D1                 shr     edx, 18h
.text:004248D4                 add     eax, edx
.text:004248D6                 cmp     eax, 0Ah
.text:004248D9                 jle     short loc_4248FB
.text:004248DB                 push    offset aRookWhite10 ; "rook white > 10"
.text:004248E0                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:004248E5                 call    sub_427298
.text:004248EA                 call    sub_426EFD
.text:004248EF                 add     eax, 20h
.text:004248F2                 push    eax             ; FILE *
.text:004248F3                 call    _fflush
.text:004248F8                 add     esp, 0Ch
.text:004248FB
.text:004248FB loc_4248FB:                             ; CODE XREF: sub_424010+8C9j
.text:004248FB                 mov     eax, dword ptr qword_780ED0
.text:00424900                 mov     ecx, eax
.text:00424902                 shr     ecx, 1
.text:00424904                 and     ecx, 55555555h
.text:0042490A                 sub     eax, ecx
.text:0042490C                 mov     ecx, eax
.text:0042490E                 and     eax, 33333333h
.text:00424913                 shr     ecx, 2
.text:00424916                 and     ecx, 33333333h
.text:0042491C                 add     ecx, eax
.text:0042491E                 mov     eax, dword ptr qword_780ED0+4
.text:00424923                 mov     edx, eax
.text:00424925                 shr     edx, 1
.text:00424927                 and     edx, 55555555h
.text:0042492D                 sub     eax, edx
.text:0042492F                 mov     edx, eax
.text:00424931                 shr     edx, 2
.text:00424934                 and     eax, 33333333h
.text:00424939                 and     edx, 33333333h
.text:0042493F                 add     edx, eax
.text:00424941                 mov     eax, edx
.text:00424943                 shr     eax, 4
.text:00424946                 add     eax, edx
.text:00424948                 mov     edx, ecx
.text:0042494A                 shr     edx, 4
.text:0042494D                 add     edx, ecx
.text:0042494F                 and     eax, 0F0F0F0Fh
.text:00424954                 and     edx, 0F0F0F0Fh
.text:0042495A                 imul    eax, 1010101h
.text:00424960                 imul    edx, 1010101h
.text:00424966                 shr     eax, 18h
.text:00424969                 shr     edx, 18h
.text:0042496C                 add     eax, edx
.text:0042496E                 cmp     eax, 0Ah
.text:00424971                 jle     short loc_424993
.text:00424973                 push    offset aRookBlack10 ; "rook black > 10"
.text:00424978                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:0042497D                 call    sub_427298
.text:00424982                 call    sub_426EFD
.text:00424987                 add     eax, 20h
.text:0042498A                 push    eax             ; FILE *
.text:0042498B                 call    _fflush
.text:00424990                 add     esp, 0Ch
.text:00424993
.text:00424993 loc_424993:                             ; CODE XREF: sub_424010+961j
.text:00424993                 mov     eax, dword ptr qword_780E80
.text:00424998                 mov     ecx, eax
.text:0042499A                 shr     ecx, 1
.text:0042499C                 and     ecx, 55555555h
.text:004249A2                 sub     eax, ecx
.text:004249A4                 mov     ecx, eax
.text:004249A6                 and     eax, 33333333h
.text:004249AB                 shr     ecx, 2
.text:004249AE                 and     ecx, 33333333h
.text:004249B4                 add     ecx, eax
.text:004249B6                 mov     eax, dword ptr qword_780E80+4
.text:004249BB                 mov     edx, eax
.text:004249BD                 shr     edx, 1
.text:004249BF                 and     edx, 55555555h
.text:004249C5                 sub     eax, edx
.text:004249C7                 mov     edx, eax
.text:004249C9                 shr     edx, 2
.text:004249CC                 and     eax, 33333333h
.text:004249D1                 and     edx, 33333333h
.text:004249D7                 add     edx, eax
.text:004249D9                 mov     eax, edx
.text:004249DB                 shr     eax, 4
.text:004249DE                 add     eax, edx
.text:004249E0                 mov     edx, ecx
.text:004249E2                 shr     edx, 4
.text:004249E5                 add     edx, ecx
.text:004249E7                 and     eax, 0F0F0F0Fh
.text:004249EC                 and     edx, 0F0F0F0Fh
.text:004249F2                 imul    eax, 1010101h
.text:004249F8                 imul    edx, 1010101h
.text:004249FE                 shr     eax, 18h
.text:00424A01                 shr     edx, 18h
.text:00424A04                 add     eax, edx
.text:00424A06                 cmp     eax, 9
.text:00424A09                 jle     short loc_424A2B
.text:00424A0B                 push    offset aChiaroWhite9 ; "chiaro white > 9"
.text:00424A10                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424A15                 call    sub_427298
.text:00424A1A                 call    sub_426EFD
.text:00424A1F                 add     eax, 20h
.text:00424A22                 push    eax             ; FILE *
.text:00424A23                 call    _fflush
.text:00424A28                 add     esp, 0Ch
.text:00424A2B
.text:00424A2B loc_424A2B:                             ; CODE XREF: sub_424010+9F9j
.text:00424A2B                 mov     eax, dword ptr qword_780EC0
.text:00424A30                 mov     ecx, eax
.text:00424A32                 shr     ecx, 1
.text:00424A34                 and     ecx, 55555555h
.text:00424A3A                 sub     eax, ecx
.text:00424A3C                 mov     ecx, eax
.text:00424A3E                 and     eax, 33333333h
.text:00424A43                 shr     ecx, 2
.text:00424A46                 and     ecx, 33333333h
.text:00424A4C                 add     ecx, eax
.text:00424A4E                 mov     eax, dword ptr qword_780EC0+4
.text:00424A53                 mov     edx, eax
.text:00424A55                 shr     edx, 1
.text:00424A57                 and     edx, 55555555h
.text:00424A5D                 sub     eax, edx
.text:00424A5F                 mov     edx, eax
.text:00424A61                 shr     edx, 2
.text:00424A64                 and     eax, 33333333h
.text:00424A69                 and     edx, 33333333h
.text:00424A6F                 add     edx, eax
.text:00424A71                 mov     eax, edx
.text:00424A73                 shr     eax, 4
.text:00424A76                 add     eax, edx
.text:00424A78                 mov     edx, ecx
.text:00424A7A                 shr     edx, 4
.text:00424A7D                 add     edx, ecx
.text:00424A7F                 and     eax, 0F0F0F0Fh
.text:00424A84                 and     edx, 0F0F0F0Fh
.text:00424A8A                 imul    eax, 1010101h
.text:00424A90                 imul    edx, 1010101h
.text:00424A96                 shr     eax, 18h
.text:00424A99                 shr     edx, 18h
.text:00424A9C                 add     eax, edx
.text:00424A9E                 cmp     eax, 9
.text:00424AA1                 jle     short loc_424AC3
.text:00424AA3                 push    offset aChiaroBlack9 ; "chiaro black > 9"
.text:00424AA8                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424AAD                 call    sub_427298
.text:00424AB2                 call    sub_426EFD
.text:00424AB7                 add     eax, 20h
.text:00424ABA                 push    eax             ; FILE *
.text:00424ABB                 call    _fflush
.text:00424AC0                 add     esp, 0Ch
.text:00424AC3
.text:00424AC3 loc_424AC3:                             ; CODE XREF: sub_424010+A91j
.text:00424AC3                 mov     eax, dword ptr qword_780E88
.text:00424AC8                 mov     ecx, eax
.text:00424ACA                 shr     ecx, 1
.text:00424ACC                 and     ecx, 55555555h
.text:00424AD2                 sub     eax, ecx
.text:00424AD4                 mov     ecx, eax
.text:00424AD6                 and     eax, 33333333h
.text:00424ADB                 shr     ecx, 2
.text:00424ADE                 and     ecx, 33333333h
.text:00424AE4                 add     ecx, eax
.text:00424AE6                 mov     eax, dword ptr qword_780E88+4
.text:00424AEB                 mov     edx, eax
.text:00424AED                 shr     edx, 1
.text:00424AEF                 and     edx, 55555555h
.text:00424AF5                 sub     eax, edx
.text:00424AF7                 mov     edx, eax
.text:00424AF9                 shr     edx, 2
.text:00424AFC                 and     eax, 33333333h
.text:00424B01                 and     edx, 33333333h
.text:00424B07                 add     edx, eax
.text:00424B09                 mov     eax, edx
.text:00424B0B                 shr     eax, 4
.text:00424B0E                 add     eax, edx
.text:00424B10                 mov     edx, ecx
.text:00424B12                 shr     edx, 4
.text:00424B15                 add     edx, ecx
.text:00424B17                 and     eax, 0F0F0F0Fh
.text:00424B1C                 and     edx, 0F0F0F0Fh
.text:00424B22                 imul    eax, 1010101h
.text:00424B28                 imul    edx, 1010101h
.text:00424B2E                 shr     eax, 18h
.text:00424B31                 shr     edx, 18h
.text:00424B34                 add     eax, edx
.text:00424B36                 cmp     eax, 9
.text:00424B39                 jle     short loc_424B5B
.text:00424B3B                 push    offset aDarkWhite9 ; "dark white > 9"
.text:00424B40                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424B45                 call    sub_427298
.text:00424B4A                 call    sub_426EFD
.text:00424B4F                 add     eax, 20h
.text:00424B52                 push    eax             ; FILE *
.text:00424B53                 call    _fflush
.text:00424B58                 add     esp, 0Ch
.text:00424B5B
.text:00424B5B loc_424B5B:                             ; CODE XREF: sub_424010+B29j
.text:00424B5B                 mov     eax, dword ptr qword_780EC8
.text:00424B60                 mov     ecx, eax
.text:00424B62                 shr     ecx, 1
.text:00424B64                 and     ecx, 55555555h
.text:00424B6A                 sub     eax, ecx
.text:00424B6C                 mov     ecx, eax
.text:00424B6E                 and     eax, 33333333h
.text:00424B73                 shr     ecx, 2
.text:00424B76                 and     ecx, 33333333h
.text:00424B7C                 add     ecx, eax
.text:00424B7E                 mov     eax, dword ptr qword_780EC8+4
.text:00424B83                 mov     edx, eax
.text:00424B85                 shr     edx, 1
.text:00424B87                 and     edx, 55555555h
.text:00424B8D                 sub     eax, edx
.text:00424B8F                 mov     edx, eax
.text:00424B91                 shr     edx, 2
.text:00424B94                 and     eax, 33333333h
.text:00424B99                 and     edx, 33333333h
.text:00424B9F                 add     edx, eax
.text:00424BA1                 mov     eax, edx
.text:00424BA3                 shr     eax, 4
.text:00424BA6                 add     eax, edx
.text:00424BA8                 mov     edx, ecx
.text:00424BAA                 shr     edx, 4
.text:00424BAD                 add     edx, ecx
.text:00424BAF                 and     eax, 0F0F0F0Fh
.text:00424BB4                 and     edx, 0F0F0F0Fh
.text:00424BBA                 imul    eax, 1010101h
.text:00424BC0                 imul    edx, 1010101h
.text:00424BC6                 shr     eax, 18h
.text:00424BC9                 shr     edx, 18h
.text:00424BCC                 add     eax, edx
.text:00424BCE                 cmp     eax, 9
.text:00424BD1                 jle     short loc_424BF3
.text:00424BD3                 push    offset aDarkBlack9 ; "dark black > 9"
.text:00424BD8                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424BDD                 call    sub_427298
.text:00424BE2                 call    sub_426EFD
.text:00424BE7                 add     eax, 20h
.text:00424BEA                 push    eax             ; FILE *
.text:00424BEB                 call    _fflush
.text:00424BF0                 add     esp, 0Ch
.text:00424BF3
.text:00424BF3 loc_424BF3:                             ; CODE XREF: sub_424010+BC1j
.text:00424BF3                 mov     eax, dword ptr qword_780E88
.text:00424BF8                 or      eax, dword ptr qword_780E80
.text:00424BFE                 mov     ecx, dword ptr qword_780E88+4
.text:00424C04                 or      ecx, dword ptr qword_780E80+4
.text:00424C0A                 mov     edx, eax
.text:00424C0C                 shr     edx, 1
.text:00424C0E                 and     edx, 55555555h
.text:00424C14                 sub     eax, edx
.text:00424C16                 mov     edx, eax
.text:00424C18                 and     edx, 33333333h
.text:00424C1E                 shr     eax, 2
.text:00424C21                 and     eax, 33333333h
.text:00424C26                 add     eax, edx
.text:00424C28                 mov     edx, ecx
.text:00424C2A                 shr     edx, 1
.text:00424C2C                 and     edx, 55555555h
.text:00424C32                 sub     ecx, edx
.text:00424C34                 mov     edx, ecx
.text:00424C36                 shr     edx, 2
.text:00424C39                 and     ecx, 33333333h
.text:00424C3F                 and     edx, 33333333h
.text:00424C45                 add     edx, ecx
.text:00424C47                 mov     ecx, edx
.text:00424C49                 shr     ecx, 4
.text:00424C4C                 add     ecx, edx
.text:00424C4E                 mov     edx, eax
.text:00424C50                 shr     edx, 4
.text:00424C53                 add     edx, eax
.text:00424C55                 and     ecx, 0F0F0F0Fh
.text:00424C5B                 and     edx, 0F0F0F0Fh
.text:00424C61                 imul    ecx, 1010101h
.text:00424C67                 imul    edx, 1010101h
.text:00424C6D                 shr     ecx, 18h
.text:00424C70                 shr     edx, 18h
.text:00424C73                 add     ecx, edx
.text:00424C75                 cmp     ecx, 0Ah
.text:00424C78                 jle     short loc_424C9A
.text:00424C7A                 push    offset aBishopWhite10 ; "bishop white > 10"
.text:00424C7F                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424C84                 call    sub_427298
.text:00424C89                 call    sub_426EFD
.text:00424C8E                 add     eax, 20h
.text:00424C91                 push    eax             ; FILE *
.text:00424C92                 call    _fflush
.text:00424C97                 add     esp, 0Ch
.text:00424C9A
.text:00424C9A loc_424C9A:                             ; CODE XREF: sub_424010+C68j
.text:00424C9A                 mov     eax, dword ptr qword_780EC8
.text:00424C9F                 or      eax, dword ptr qword_780EC0
.text:00424CA5                 mov     ecx, dword ptr qword_780EC8+4
.text:00424CAB                 or      ecx, dword ptr qword_780EC0+4
.text:00424CB1                 mov     edx, eax
.text:00424CB3                 shr     edx, 1
.text:00424CB5                 and     edx, 55555555h
.text:00424CBB                 sub     eax, edx
.text:00424CBD                 mov     edx, eax
.text:00424CBF                 and     edx, 33333333h
.text:00424CC5                 shr     eax, 2
.text:00424CC8                 and     eax, 33333333h
.text:00424CCD                 add     eax, edx
.text:00424CCF                 mov     edx, ecx
.text:00424CD1                 shr     edx, 1
.text:00424CD3                 and     edx, 55555555h
.text:00424CD9                 sub     ecx, edx
.text:00424CDB                 mov     edx, ecx
.text:00424CDD                 shr     edx, 2
.text:00424CE0                 and     ecx, 33333333h
.text:00424CE6                 and     edx, 33333333h
.text:00424CEC                 add     edx, ecx
.text:00424CEE                 mov     ecx, edx
.text:00424CF0                 shr     ecx, 4
.text:00424CF3                 add     ecx, edx
.text:00424CF5                 mov     edx, eax
.text:00424CF7                 shr     edx, 4
.text:00424CFA                 add     edx, eax
.text:00424CFC                 and     ecx, 0F0F0F0Fh
.text:00424D02                 and     edx, 0F0F0F0Fh
.text:00424D08                 imul    ecx, 1010101h
.text:00424D0E                 imul    edx, 1010101h
.text:00424D14                 shr     ecx, 18h
.text:00424D17                 shr     edx, 18h
.text:00424D1A                 add     ecx, edx
.text:00424D1C                 cmp     ecx, 0Ah
.text:00424D1F                 jle     short loc_424D41
.text:00424D21                 push    offset aBishopBlack10 ; "bishop black > 10"
.text:00424D26                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424D2B                 call    sub_427298
.text:00424D30                 call    sub_426EFD
.text:00424D35                 add     eax, 20h
.text:00424D38                 push    eax             ; FILE *
.text:00424D39                 call    _fflush
.text:00424D3E                 add     esp, 0Ch
.text:00424D41
.text:00424D41 loc_424D41:                             ; CODE XREF: sub_424010+D0Fj
.text:00424D41                 mov     eax, dword ptr qword_780E70
.text:00424D46                 mov     ecx, eax
.text:00424D48                 shr     ecx, 1
.text:00424D4A                 and     ecx, 55555555h
.text:00424D50                 sub     eax, ecx
.text:00424D52                 mov     ecx, eax
.text:00424D54                 and     eax, 33333333h
.text:00424D59                 shr     ecx, 2
.text:00424D5C                 and     ecx, 33333333h
.text:00424D62                 add     ecx, eax
.text:00424D64                 mov     eax, dword ptr qword_780E70+4
.text:00424D69                 mov     edx, eax
.text:00424D6B                 shr     edx, 1
.text:00424D6D                 and     edx, 55555555h
.text:00424D73                 sub     eax, edx
.text:00424D75                 mov     edx, eax
.text:00424D77                 shr     edx, 2
.text:00424D7A                 and     eax, 33333333h
.text:00424D7F                 and     edx, 33333333h
.text:00424D85                 add     edx, eax
.text:00424D87                 mov     eax, edx
.text:00424D89                 shr     eax, 4
.text:00424D8C                 add     eax, edx
.text:00424D8E                 mov     edx, ecx
.text:00424D90                 shr     edx, 4
.text:00424D93                 add     edx, ecx
.text:00424D95                 and     eax, 0F0F0F0Fh
.text:00424D9A                 and     edx, 0F0F0F0Fh
.text:00424DA0                 imul    eax, 1010101h
.text:00424DA6                 imul    edx, 1010101h
.text:00424DAC                 shr     eax, 18h
.text:00424DAF                 shr     edx, 18h
.text:00424DB2                 add     eax, edx
.text:00424DB4                 cmp     eax, 0Ah
.text:00424DB7                 jle     short loc_424DD9
.text:00424DB9                 push    offset aKnightWhite10 ; "knight white > 10"
.text:00424DBE                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424DC3                 call    sub_427298
.text:00424DC8                 call    sub_426EFD
.text:00424DCD                 add     eax, 20h
.text:00424DD0                 push    eax             ; FILE *
.text:00424DD1                 call    _fflush
.text:00424DD6                 add     esp, 0Ch
.text:00424DD9
.text:00424DD9 loc_424DD9:                             ; CODE XREF: sub_424010+DA7j
.text:00424DD9                 mov     eax, dword ptr qword_780EB0
.text:00424DDE                 mov     ecx, eax
.text:00424DE0                 shr     ecx, 1
.text:00424DE2                 and     ecx, 55555555h
.text:00424DE8                 sub     eax, ecx
.text:00424DEA                 mov     ecx, eax
.text:00424DEC                 and     eax, 33333333h
.text:00424DF1                 shr     ecx, 2
.text:00424DF4                 and     ecx, 33333333h
.text:00424DFA                 add     ecx, eax
.text:00424DFC                 mov     eax, dword ptr qword_780EB0+4
.text:00424E01                 mov     edx, eax
.text:00424E03                 shr     edx, 1
.text:00424E05                 and     edx, 55555555h
.text:00424E0B                 sub     eax, edx
.text:00424E0D                 mov     edx, eax
.text:00424E0F                 shr     edx, 2
.text:00424E12                 and     eax, 33333333h
.text:00424E17                 and     edx, 33333333h
.text:00424E1D                 add     edx, eax
.text:00424E1F                 mov     eax, edx
.text:00424E21                 shr     eax, 4
.text:00424E24                 add     eax, edx
.text:00424E26                 mov     edx, ecx
.text:00424E28                 shr     edx, 4
.text:00424E2B                 add     edx, ecx
.text:00424E2D                 and     eax, 0F0F0F0Fh
.text:00424E32                 and     edx, 0F0F0F0Fh
.text:00424E38                 imul    eax, 1010101h
.text:00424E3E                 imul    edx, 1010101h
.text:00424E44                 shr     eax, 18h
.text:00424E47                 shr     edx, 18h
.text:00424E4A                 add     eax, edx
.text:00424E4C                 cmp     eax, 0Ah
.text:00424E4F                 jle     short loc_424E71
.text:00424E51                 push    offset aKnightBlack10 ; "knight black > 10"
.text:00424E56                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424E5B                 call    sub_427298
.text:00424E60                 call    sub_426EFD
.text:00424E65                 add     eax, 20h
.text:00424E68                 push    eax             ; FILE *
.text:00424E69                 call    _fflush
.text:00424E6E                 add     esp, 0Ch
.text:00424E71
.text:00424E71 loc_424E71:                             ; CODE XREF: sub_424010+E3Fj
.text:00424E71                 mov     eax, dword ptr qword_780E68
.text:00424E76                 mov     ecx, eax
.text:00424E78                 shr     ecx, 1
.text:00424E7A                 and     ecx, 55555555h
.text:00424E80                 sub     eax, ecx
.text:00424E82                 mov     ecx, eax
.text:00424E84                 and     eax, 33333333h
.text:00424E89                 shr     ecx, 2
.text:00424E8C                 and     ecx, 33333333h
.text:00424E92                 add     ecx, eax
.text:00424E94                 mov     eax, dword ptr qword_780E68+4
.text:00424E99                 mov     edx, eax
.text:00424E9B                 shr     edx, 1
.text:00424E9D                 and     edx, 55555555h
.text:00424EA3                 sub     eax, edx
.text:00424EA5                 mov     edx, eax
.text:00424EA7                 shr     edx, 2
.text:00424EAA                 and     eax, 33333333h
.text:00424EAF                 and     edx, 33333333h
.text:00424EB5                 add     edx, eax
.text:00424EB7                 mov     eax, edx
.text:00424EB9                 shr     eax, 4
.text:00424EBC                 add     eax, edx
.text:00424EBE                 mov     edx, ecx
.text:00424EC0                 shr     edx, 4
.text:00424EC3                 add     edx, ecx
.text:00424EC5                 and     eax, 0F0F0F0Fh
.text:00424ECA                 and     edx, 0F0F0F0Fh
.text:00424ED0                 imul    eax, 1010101h
.text:00424ED6                 imul    edx, 1010101h
.text:00424EDC                 shr     eax, 18h
.text:00424EDF                 shr     edx, 18h
.text:00424EE2                 add     eax, edx
.text:00424EE4                 cmp     eax, 8
.text:00424EE7                 jle     short loc_424F09
.text:00424EE9                 push    offset aPawnWhite8 ; "pawn white > 8"
.text:00424EEE                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424EF3                 call    sub_427298
.text:00424EF8                 call    sub_426EFD
.text:00424EFD                 add     eax, 20h
.text:00424F00                 push    eax             ; FILE *
.text:00424F01                 call    _fflush
.text:00424F06                 add     esp, 0Ch
.text:00424F09
.text:00424F09 loc_424F09:                             ; CODE XREF: sub_424010+ED7j
.text:00424F09                 mov     eax, dword ptr qword_780EA8
.text:00424F0E                 mov     ecx, eax
.text:00424F10                 shr     ecx, 1
.text:00424F12                 and     ecx, 55555555h
.text:00424F18                 sub     eax, ecx
.text:00424F1A                 mov     ecx, eax
.text:00424F1C                 and     eax, 33333333h
.text:00424F21                 shr     ecx, 2
.text:00424F24                 and     ecx, 33333333h
.text:00424F2A                 add     ecx, eax
.text:00424F2C                 mov     eax, dword ptr qword_780EA8+4
.text:00424F31                 mov     edx, eax
.text:00424F33                 shr     edx, 1
.text:00424F35                 and     edx, 55555555h
.text:00424F3B                 sub     eax, edx
.text:00424F3D                 mov     edx, eax
.text:00424F3F                 shr     edx, 2
.text:00424F42                 and     eax, 33333333h
.text:00424F47                 and     edx, 33333333h
.text:00424F4D                 add     edx, eax
.text:00424F4F                 mov     eax, edx
.text:00424F51                 shr     eax, 4
.text:00424F54                 add     eax, edx
.text:00424F56                 mov     edx, ecx
.text:00424F58                 shr     edx, 4
.text:00424F5B                 add     edx, ecx
.text:00424F5D                 and     eax, 0F0F0F0Fh
.text:00424F62                 and     edx, 0F0F0F0Fh
.text:00424F68                 imul    eax, 1010101h
.text:00424F6E                 imul    edx, 1010101h
.text:00424F74                 shr     eax, 18h
.text:00424F77                 shr     edx, 18h
.text:00424F7A                 add     eax, edx
.text:00424F7C                 cmp     eax, 8
.text:00424F7F                 jle     short loc_424FA1
.text:00424F81                 push    offset aPawnBlack8 ; "pawn black > 8"
.text:00424F86                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00424F8B                 call    sub_427298
.text:00424F90                 call    sub_426EFD
.text:00424F95                 add     eax, 20h
.text:00424F98                 push    eax             ; FILE *
.text:00424F99                 call    _fflush
.text:00424F9E                 add     esp, 0Ch
.text:00424FA1
.text:00424FA1 loc_424FA1:                             ; CODE XREF: sub_424010+F6Fj
.text:00424FA1                 mov     eax, dword ptr qword_780E60
.text:00424FA6                 mov     ecx, eax
.text:00424FA8                 shr     ecx, 1
.text:00424FAA                 and     ecx, 55555555h
.text:00424FB0                 sub     eax, ecx
.text:00424FB2                 mov     ecx, eax
.text:00424FB4                 and     eax, 33333333h
.text:00424FB9                 shr     ecx, 2
.text:00424FBC                 and     ecx, 33333333h
.text:00424FC2                 add     ecx, eax
.text:00424FC4                 mov     eax, dword ptr qword_780E60+4
.text:00424FC9                 mov     edx, eax
.text:00424FCB                 shr     edx, 1
.text:00424FCD                 and     edx, 55555555h
.text:00424FD3                 sub     eax, edx
.text:00424FD5                 mov     edx, eax
.text:00424FD7                 shr     edx, 2
.text:00424FDA                 and     eax, 33333333h
.text:00424FDF                 and     edx, 33333333h
.text:00424FE5                 add     edx, eax
.text:00424FE7                 mov     eax, edx
.text:00424FE9                 shr     eax, 4
.text:00424FEC                 add     eax, edx
.text:00424FEE                 mov     edx, ecx
.text:00424FF0                 shr     edx, 4
.text:00424FF3                 add     edx, ecx
.text:00424FF5                 and     eax, 0F0F0F0Fh
.text:00424FFA                 and     edx, 0F0F0F0Fh
.text:00425000                 imul    eax, 1010101h
.text:00425006                 imul    edx, 1010101h
.text:0042500C                 shr     eax, 18h
.text:0042500F                 shr     edx, 18h
.text:00425012                 add     eax, edx
.text:00425014                 cmp     eax, 10h
.text:00425017                 jle     short loc_425039
.text:00425019                 push    offset aPieceWhite16 ; "piece white > 16"
.text:0042501E                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00425023                 call    sub_427298
.text:00425028                 call    sub_426EFD
.text:0042502D                 add     eax, 20h
.text:00425030                 push    eax             ; FILE *
.text:00425031                 call    _fflush
.text:00425036                 add     esp, 0Ch
.text:00425039
.text:00425039 loc_425039:                             ; CODE XREF: sub_424010+1007j
.text:00425039                 mov     eax, dword ptr qword_780EA0
.text:0042503E                 mov     ecx, eax
.text:00425040                 shr     ecx, 1
.text:00425042                 and     ecx, 55555555h
.text:00425048                 sub     eax, ecx
.text:0042504A                 mov     ecx, eax
.text:0042504C                 and     eax, 33333333h
.text:00425051                 shr     ecx, 2
.text:00425054                 and     ecx, 33333333h
.text:0042505A                 add     ecx, eax
.text:0042505C                 mov     eax, dword ptr qword_780EA0+4
.text:00425061                 mov     edx, eax
.text:00425063                 shr     edx, 1
.text:00425065                 and     edx, 55555555h
.text:0042506B                 sub     eax, edx
.text:0042506D                 mov     edx, eax
.text:0042506F                 shr     edx, 2
.text:00425072                 and     eax, 33333333h
.text:00425077                 and     edx, 33333333h
.text:0042507D                 add     edx, eax
.text:0042507F                 mov     eax, edx
.text:00425081                 shr     eax, 4
.text:00425084                 add     eax, edx
.text:00425086                 mov     edx, ecx
.text:00425088                 shr     edx, 4
.text:0042508B                 add     edx, ecx
.text:0042508D                 and     eax, 0F0F0F0Fh
.text:00425092                 and     edx, 0F0F0F0Fh
.text:00425098                 imul    eax, 1010101h
.text:0042509E                 imul    edx, 1010101h
.text:004250A4                 shr     eax, 18h
.text:004250A7                 shr     edx, 18h
.text:004250AA                 add     eax, edx
.text:004250AC                 cmp     eax, 10h
.text:004250AF                 jle     short loc_4250D1
.text:004250B1                 push    offset aPieceBlack16 ; "piece black > 16"
.text:004250B6                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:004250BB                 call    sub_427298
.text:004250C0                 call    sub_426EFD
.text:004250C5                 add     eax, 20h
.text:004250C8                 push    eax             ; FILE *
.text:004250C9                 call    _fflush
.text:004250CE                 add     esp, 0Ch
.text:004250D1
.text:004250D1 loc_4250D1:                             ; CODE XREF: sub_424010+109Fj
.text:004250D1                 mov     eax, dword ptr qword_780EA8
.text:004250D6                 mov     ecx, dword ptr qword_780EA8+4
.text:004250DC                 or      eax, dword ptr qword_780E68
.text:004250E2                 or      ecx, dword ptr qword_780E68+4
.text:004250E8                 and     eax, 0FFh
.text:004250ED                 and     ecx, 0FF000000h
.text:004250F3                 or      eax, ecx
.text:004250F5                 jz      short loc_425117
.text:004250F7                 push    offset aPawnRankOneOrE ; "pawn rank one or eight"
.text:004250FC                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:00425101                 call    sub_427298
.text:00425106                 call    sub_426EFD
.text:0042510B                 add     eax, 20h
.text:0042510E                 push    eax             ; FILE *
.text:0042510F                 call    _fflush
.text:00425114                 add     esp, 0Ch
.text:00425117
.text:00425117 loc_425117:                             ; CODE XREF: sub_424010+10E5j
.text:00425117                 mov     eax, dword ptr [ebp+var_10]
.text:0042511A                 or      eax, dword ptr [ebp+var_10+4]
.text:0042511D                 jz      loc_4251C0
.text:00425123                 mov     edi, dword ptr [ebp+var_10]
.text:00425126                 mov     ebx, dword ptr [ebp+var_10+4]
.text:00425129                 lea     esp, [esp+0]
.text:00425130
.text:00425130 loc_425130:                             ; CODE XREF: sub_424010+11AAj
.text:00425130                 mov     eax, dword ptr [ebp+var_10]
.text:00425133                 test    eax, eax
.text:00425135                 jz      short loc_42513C
.text:00425137                 bsf     eax, eax
.text:0042513A                 jmp     short loc_425143
.text:0042513C ; ---------------------------------------------------------------------------
.text:0042513C
.text:0042513C loc_42513C:                             ; CODE XREF: sub_424010+1125j
.text:0042513C                 bsf     eax, dword ptr [ebp+var_10+4]
.text:00425140                 add     eax, 20h
.text:00425143
.text:00425143 loc_425143:                             ; CODE XREF: sub_424010+112Aj
.text:00425143                 mov     ecx, edi
.text:00425145                 add     ecx, 0FFFFFFFFh
.text:00425148                 mov     edx, ebx
.text:0042514A                 adc     edx, 0FFFFFFFFh
.text:0042514D                 mov     esi, eax
.text:0042514F                 and     edi, ecx
.text:00425151                 movzx   ecx, ds:byte_4364E0[esi]
.text:00425158                 and     ebx, edx
.text:0042515A                 mov     eax, 1
.text:0042515F                 xor     edx, edx
.text:00425161                 mov     dword ptr [ebp+var_10], edi
.text:00425164                 mov     dword ptr [ebp+var_10+4], ebx
.text:00425167                 call    __allshl
.text:0042516C                 or      dword ptr qword_780EE8, eax
.text:00425172                 or      dword ptr qword_780EE8+4, edx
.text:00425178                 movzx   ecx, ds:byte_436520[esi]
.text:0042517F                 mov     eax, 1
.text:00425184                 xor     edx, edx
.text:00425186                 call    __allshl
.text:0042518B                 or      dword ptr qword_780EF0, eax
.text:00425191                 or      dword ptr qword_780EF0+4, edx
.text:00425197                 movzx   ecx, ds:byte_436560[esi]
.text:0042519E                 mov     eax, 1
.text:004251A3                 xor     edx, edx
.text:004251A5                 call    __allshl
.text:004251AA                 or      dword ptr qword_780EF8, eax
.text:004251B0                 or      dword ptr qword_780EF8+4, edx
.text:004251B6                 mov     eax, edi
.text:004251B8                 or      eax, ebx
.text:004251BA                 jnz     loc_425130
.text:004251C0
.text:004251C0 loc_4251C0:                             ; CODE XREF: sub_424010+110Dj
.text:004251C0                 mov     eax, dword ptr qword_780E78
.text:004251C5                 test    eax, eax
.text:004251C7                 jz      short loc_4251CE
.text:004251C9                 bsf     eax, eax
.text:004251CC                 jmp     short loc_4251D8
.text:004251CE ; ---------------------------------------------------------------------------
.text:004251CE
.text:004251CE loc_4251CE:                             ; CODE XREF: sub_424010+11B7j
.text:004251CE                 bsf     eax, dword ptr qword_780E78+4
.text:004251D5                 add     eax, 20h
.text:004251D8
.text:004251D8 loc_4251D8:                             ; CODE XREF: sub_424010+11BCj
.text:004251D8                 mov     byte_780F01, al
.text:004251DD                 mov     eax, dword ptr qword_780EB8
.text:004251E2                 test    eax, eax
.text:004251E4                 jz      short loc_4251EB
.text:004251E6                 bsf     eax, eax
.text:004251E9                 jmp     short loc_4251F5
.text:004251EB ; ---------------------------------------------------------------------------
.text:004251EB
.text:004251EB loc_4251EB:                             ; CODE XREF: sub_424010+11D4j
.text:004251EB                 bsf     eax, dword ptr qword_780EB8+4
.text:004251F2                 add     eax, 20h
.text:004251F5
.text:004251F5 loc_4251F5:                             ; CODE XREF: sub_424010+11D9j
.text:004251F5                 mov     ecx, dword_73E940
.text:004251FB                 mov     edi, dword ptr qword_780E90+4
.text:00425201                 mov     ebx, eax
.text:00425203                 mov     al, [ecx+18h]
.text:00425206                 mov     byte_780F02, bl
.text:0042520C                 test    al, 1
.text:0042520E                 jz      short loc_425235
.text:00425210                 cmp     byte_780F01, 4
.text:00425217                 jnz     loc_4252A1
.text:0042521D                 mov     edx, dword ptr qword_5F5FF8
.text:00425223                 mov     esi, dword ptr qword_5F5FF8+4
.text:00425229                 and     edx, dword ptr qword_780E90
.text:0042522F                 and     esi, edi
.text:00425231                 or      edx, esi
.text:00425233                 jz      short loc_4252A1
.text:00425235
.text:00425235 loc_425235:                             ; CODE XREF: sub_424010+11FEj
.text:00425235                 test    al, 2
.text:00425237                 jz      short loc_42525A
.text:00425239                 cmp     byte_780F01, 4
.text:00425240                 jnz     short loc_4252A1
.text:00425242                 mov     edx, dword ptr qword_5F5FC0
.text:00425248                 mov     esi, dword ptr qword_5F5FC0+4
.text:0042524E                 and     edx, dword ptr qword_780E90
.text:00425254                 and     esi, edi
.text:00425256                 or      edx, esi
.text:00425258                 jz      short loc_4252A1
.text:0042525A
.text:0042525A loc_42525A:                             ; CODE XREF: sub_424010+1227j
.text:0042525A                 mov     edi, dword ptr qword_780ED0+4
.text:00425260                 test    al, 4
.text:00425262                 jz      short loc_425281
.text:00425264                 cmp     bl, 3Ch
.text:00425267                 jnz     short loc_4252A1
.text:00425269                 mov     edx, dword ptr qword_5F61B8
.text:0042526F                 mov     esi, dword ptr qword_5F61B8+4
.text:00425275                 and     edx, dword ptr qword_780ED0
.text:0042527B                 and     esi, edi
.text:0042527D                 or      edx, esi
.text:0042527F                 jz      short loc_4252A1
.text:00425281
.text:00425281 loc_425281:                             ; CODE XREF: sub_424010+1252j
.text:00425281                 test    al, 8
.text:00425283                 jz      short loc_4252C7
.text:00425285                 cmp     bl, 3Ch
.text:00425288                 jnz     short loc_4252A1
.text:0042528A                 mov     eax, dword ptr qword_5F6180
.text:0042528F                 mov     edx, dword ptr qword_5F6180+4
.text:00425295                 and     eax, dword ptr qword_780ED0
.text:0042529B                 and     edx, edi
.text:0042529D                 or      eax, edx
.text:0042529F                 jnz     short loc_4252C7
.text:004252A1
.text:004252A1 loc_4252A1:                             ; CODE XREF: sub_424010+1207j
.text:004252A1                                         ; sub_424010+1223j ...
.text:004252A1                 push    offset aIllegalCastlin ; "illegal castling"
.text:004252A6                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:004252AB                 call    sub_427298
.text:004252B0                 call    sub_426EFD
.text:004252B5                 add     eax, 20h
.text:004252B8                 push    eax             ; FILE *
.text:004252B9                 call    _fflush
.text:004252BE                 mov     ecx, dword_73E940
.text:004252C4                 add     esp, 0Ch
.text:004252C7
.text:004252C7 loc_4252C7:                             ; CODE XREF: sub_424010+1273j
.text:004252C7                                         ; sub_424010+128Fj
.text:004252C7                 movzx   eax, byte ptr [ecx+18h]
.text:004252CB                 mov     edx, dword_5F7280[eax*8]
.text:004252D2                 xor     [ecx], edx
.text:004252D4                 mov     edx, dword_5F7284[eax*8]
.text:004252DB                 xor     [ecx+4], edx
.text:004252DE                 mov     dl, [ecx+1Ah]
.text:004252E1                 pop     ebx
.text:004252E2                 test    dl, dl
.text:004252E4                 jz      short loc_4252FF
.text:004252E6                 movzx   edx, dl
.text:004252E9                 and     edx, 7
.text:004252EC                 mov     esi, dword_73E960[edx*8]
.text:004252F3                 xor     [ecx], esi
.text:004252F5                 mov     edx, dword_73E964[edx*8]
.text:004252FC                 xor     [ecx+4], edx
.text:004252FF
.text:004252FF loc_4252FF:                             ; CODE XREF: sub_424010+12D4j
.text:004252FF                 movzx   esi, byte_780F02
.text:00425306                 mov     edi, dword_71B080[esi*8]
.text:0042530D                 mov     esi, dword_71B084[esi*8]
.text:00425314                 movzx   edx, byte_780F01
.text:0042531B                 xor     edi, dword_71A080[edx*8]
.text:00425322                 xor     esi, dword_71A084[edx*8]
.text:00425329                 xor     edi, dword_5F7280[eax*8]
.text:00425330                 xor     esi, dword_5F7284[eax*8]
.text:00425337                 xor     edi, [ecx+8]
.text:0042533A                 xor     esi, [ecx+0Ch]
.text:0042533D                 xor     edi, 0A8BF965Eh
.text:00425343                 xor     esi, 74D3C012h
.text:00425349                 cmp     byte_780F00, 0
.text:00425350                 mov     [ecx+8], edi
.text:00425353                 pop     edi
.text:00425354                 mov     [ecx+0Ch], esi
.text:00425357                 pop     esi
.text:00425358                 jz      short loc_42536A
.text:0042535A                 mov     eax, dword_6F8780
.text:0042535F                 mov     edx, dword_6F8784
.text:00425365                 xor     [ecx], eax
.text:00425367                 xor     [ecx+4], edx
.text:0042536A
.text:0042536A loc_42536A:                             ; CODE XREF: sub_424010+1348j
.text:0042536A                 push    0
.text:0042536C                 push    7FFF0000h
.text:00425371                 push    80010000h
.text:00425376                 call    sub_402ED0
.text:0042537B                 mov     edx, dword_73E940
.text:00425381                 add     esp, 0Ch
.text:00425384                 cmp     byte_780F00, 0
.text:0042538B                 jz      short loc_4253D2
.text:0042538D                 mov     eax, [edx+20h]
.text:00425390                 mov     ecx, [edx+24h]
.text:00425393                 and     eax, dword ptr qword_780EB8
.text:00425399                 and     ecx, dword ptr qword_780EB8+4
.text:0042539F                 or      eax, ecx
.text:004253A1                 jz      short loc_4253C9
.text:004253A3                 push    offset aWhiteCapturesK ; "white captures king"
.text:004253A8                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:004253AD                 call    sub_427298
.text:004253B2                 call    sub_426EFD
.text:004253B7                 add     eax, 20h
.text:004253BA                 push    eax             ; FILE *
.text:004253BB                 call    _fflush
.text:004253C0                 mov     edx, dword_73E940
.text:004253C6                 add     esp, 0Ch
.text:004253C9
.text:004253C9 loc_4253C9:                             ; CODE XREF: sub_424010+1391j
.text:004253C9                 cmp     byte_780F00, 0
.text:004253D0                 jnz     short loc_425408
.text:004253D2
.text:004253D2 loc_4253D2:                             ; CODE XREF: sub_424010+137Bj
.text:004253D2                 mov     eax, [edx+28h]
.text:004253D5                 mov     ecx, [edx+2Ch]
.text:004253D8                 and     eax, dword ptr qword_780E78
.text:004253DE                 and     ecx, dword ptr qword_780E78+4
.text:004253E4                 or      eax, ecx
.text:004253E6                 jz      short loc_425408
.text:004253E8                 push    offset aBlackCapturesK ; "black captures king"
.text:004253ED                 push    offset aErrorPositiona ; "error positional: %s\n"
.text:004253F2                 call    sub_427298
.text:004253F7                 call    sub_426EFD
.text:004253FC                 add     eax, 20h
.text:004253FF                 push    eax             ; FILE *
.text:00425400                 call    _fflush
.text:00425405                 add     esp, 0Ch
.text:00425408
.text:00425408 loc_425408:                             ; CODE XREF: sub_424010+13C0j
.text:00425408                                         ; sub_424010+13D6j
.text:00425408                 mov     byte_5F7500, 1
.text:0042540F                 mov     esp, ebp
.text:00425411                 pop     ebp
.text:00425412                 retn
.text:00425412 sub_424010      endp
Houdini w32 1_CPU
build 2010-05-15
by Robert Houdart*

Code: Select all

.text:004265A0 ; =============== S U B R O U T I N E =======================================
.text:004265A0
.text:004265A0
.text:004265A0 sub_4265A0      proc near               ; CODE XREF: sub_419750+64Bp
.text:004265A0                                         ; sub_4274B0+D8p
.text:004265A0
.text:004265A0 var_8           = dword ptr -8
.text:004265A0 var_4           = dword ptr -4
.text:004265A0
.text:004265A0                 sub     esp, 0Ch
.text:004265A3                 push    ebx
.text:004265A4                 push    ebp
.text:004265A5                 push    esi
.text:004265A6                 push    edi
.text:004265A7                 xorpd   xmm0, xmm0
.text:004265AB                 movlpd  qword_585460, xmm0
.text:004265B3                 mov     ecx, 1Eh
.text:004265B8                 mov     esi, offset qword_585460
.text:004265BD                 mov     edi, offset qword_585468
.text:004265C2                 rep movsd
.text:004265C4                 mov     eax, dword_5854F0
.text:004265C9                 xor     edi, edi
.text:004265CB                 mov     [eax+8], edi
.text:004265CE                 mov     ecx, dword_5854F0
.text:004265D4                 mov     [ecx+0Ch], edi
.text:004265D7                 mov     edx, dword_5854F0
.text:004265DD                 mov     [edx], edi
.text:004265DF                 mov     eax, dword_5854F0
.text:004265E4                 mov     [eax+4], edi
.text:004265E7                 mov     ecx, dword_5854F0
.text:004265ED                 push    60h
.text:004265EF                 mov     [ecx+10h], edi
.text:004265F2                 mov     edx, dword_5854F0
.text:004265F8                 push    0FFh
.text:004265FD                 push    offset byte_585400
.text:00426602                 mov     byte_8F28CC, 0
.text:00426609                 mov     [edx+14h], edi
.text:0042660C                 call    sub_429D80
.text:00426611                 add     esp, 0Ch
.text:00426614                 xor     edx, edx
.text:00426616                 jmp     short loc_426620
.text:00426616 ; ---------------------------------------------------------------------------
.text:00426618                 align 10h
.text:00426620
.text:00426620 loc_426620:                             ; CODE XREF: sub_4265A0+76j
.text:00426620                                         ; sub_4265A0+14Aj
.text:00426620                 movzx   ecx, byte_585380[edx]
.text:00426627                 cmp     ecx, edi
.text:00426629                 jz      loc_4266E6
.text:0042662F                 mov     esi, dword_5854F0
.text:00426635                 mov     eax, ecx
.text:00426637                 shl     eax, 6
.text:0042663A                 add     eax, edx
.text:0042663C                 mov     ebx, dword_931F90[eax*4]
.text:00426643                 add     [esi+14h], ebx
.text:00426646                 mov     ebx, dword_91C270[eax*8]
.text:0042664D                 mov     esi, dword_5854F0
.text:00426653                 xor     [esi], ebx
.text:00426655                 mov     ebx, dword_91C274[eax*8]
.text:0042665C                 mov     esi, dword_5854F0
.text:00426662                 xor     [esi+4], ebx
.text:00426665                 cmp     ecx, 1
.text:00426668                 jz      short loc_42666F
.text:0042666A                 cmp     ecx, 9
.text:0042666D                 jnz     short loc_426689
.text:0042666F
.text:0042666F loc_42666F:                             ; CODE XREF: sub_4265A0+C8j
.text:0042666F                 mov     ebx, dword_91C270[eax*8]
.text:00426676                 mov     esi, dword_5854F0
.text:0042667C                 xor     [esi+8], ebx
.text:0042667F                 mov     eax, dword_91C274[eax*8]
.text:00426686                 xor     [esi+0Ch], eax
.text:00426689
.text:00426689 loc_426689:                             ; CODE XREF: sub_4265A0+CDj
.text:00426689                 mov     eax, dword_5854F0
.text:0042668E                 mov     esi, ds:dword_438A08[ecx*4]
.text:00426695                 add     [eax+10h], esi
.text:00426698                 movzx   eax, byte_585380[edx]
.text:0042669F                 mov     esi, dword ptr qword_828A78[edx*8]
.text:004266A6                 or      dword ptr qword_585460[eax*8], esi
.text:004266AD                 mov     esi, dword ptr (qword_828A78+4)[edx*8]
.text:004266B4                 or      dword ptr (qword_585460+4)[eax*8], esi
.text:004266BB                 movzx   eax, ds:byte_438AD0[ecx]
.text:004266C2                 cmp     eax, edi
.text:004266C4                 jz      short loc_4266E0
.text:004266C6                 cmp     byte_585400[eax], 0FFh
.text:004266CD                 jz      short loc_4266DA
.text:004266CF                 nop
.text:004266D0
.text:004266D0 loc_4266D0:                             ; CODE XREF: sub_4265A0+138j
.text:004266D0                 inc     eax
.text:004266D1                 cmp     byte_585400[eax], 0FFh
.text:004266D8                 jnz     short loc_4266D0
.text:004266DA
.text:004266DA loc_4266DA:                             ; CODE XREF: sub_4265A0+12Dj
.text:004266DA                 mov     byte_585400[eax], dl
.text:004266E0
.text:004266E0 loc_4266E0:                             ; CODE XREF: sub_4265A0+124j
.text:004266E0                 mov     byte_5853C0[edx], al
.text:004266E6
.text:004266E6 loc_4266E6:                             ; CODE XREF: sub_4265A0+89j
.text:004266E6                 inc     edx
.text:004266E7                 cmp     edx, 3Fh
.text:004266EA                 jle     loc_426620
.text:004266F0                 mov     ebp, dword ptr qword_5854A8+4
.text:004266F6                 or      ebp, dword ptr qword_5854B0+4
.text:004266FC                 mov     ebx, dword ptr qword_5854A8
.text:00426702                 or      ebx, dword ptr qword_5854B0
.text:00426708                 or      ebp, dword ptr qword_5854C8+4
.text:0042670E                 mov     esi, dword ptr qword_585468+4
.text:00426714                 or      esi, dword ptr qword_585470+4
.text:0042671A                 or      ebx, dword ptr qword_5854C8
.text:00426720                 mov     edi, dword ptr qword_585468
.text:00426726                 or      edi, dword ptr qword_585470
.text:0042672C                 or      esi, dword ptr qword_585488+4
.text:00426732                 or      edi, dword ptr qword_585488
.text:00426738                 or      ebp, dword ptr qword_5854C0+4
.text:0042673E                 or      ebx, dword ptr qword_5854C0
.text:00426744                 or      esi, dword ptr qword_585480+4
.text:0042674A                 or      edi, dword ptr qword_585480
.text:00426750                 or      ebp, dword ptr qword_5854D0+4
.text:00426756                 or      ebx, dword ptr qword_5854D0
.text:0042675C                 or      esi, dword ptr qword_585490+4
.text:00426762                 or      edi, dword ptr qword_585490
.text:00426768                 mov     ecx, dword ptr qword_585498+4
.text:0042676E                 or      ebp, dword ptr qword_5854D8+4
.text:00426774                 or      ebx, dword ptr qword_5854D8
.text:0042677A                 or      ebp, dword ptr qword_5854B8+4
.text:00426780                 or      edi, dword ptr qword_585498
.text:00426786                 or      ebx, dword ptr qword_5854B8
.text:0042678C                 or      edi, dword ptr qword_585478
.text:00426792                 or      esi, ecx
.text:00426794                 or      esi, dword ptr qword_585478+4
.text:0042679A                 mov     eax, ebp
.text:0042679C                 or      eax, esi
.text:0042679E                 mov     edx, ebx
.text:004267A0                 or      edx, edi
.text:004267A2                 mov     dword ptr qword_5854E0, edx
.text:004267A8                 mov     dword ptr qword_5854E0+4, eax
.text:004267AD                 mov     eax, dword ptr qword_585498
.text:004267B2                 mov     edx, eax
.text:004267B4                 shr     edx, 1
.text:004267B6                 and     edx, 55555555h
.text:004267BC                 sub     eax, edx
.text:004267BE                 mov     edx, ecx
.text:004267C0                 shr     edx, 1
.text:004267C2                 and     edx, 55555555h
.text:004267C8                 sub     ecx, edx
.text:004267CA                 mov     edx, ecx
.text:004267CC                 mov     [esp+1Ch+var_8], ecx
.text:004267D0                 shr     edx, 2
.text:004267D3                 and     edx, 33333333h
.text:004267D9                 mov     ecx, eax
.text:004267DB                 shr     ecx, 2
.text:004267DE                 and     ecx, 33333333h
.text:004267E4                 add     edx, ecx
.text:004267E6                 mov     ecx, [esp+1Ch+var_8]
.text:004267EA                 and     ecx, 33333333h
.text:004267F0                 add     edx, ecx
.text:004267F2                 and     eax, 33333333h
.text:004267F7                 add     edx, eax
.text:004267F9                 imul    edx, 11111111h
.text:004267FF                 shr     edx, 1Ch
.text:00426802                 mov     dword ptr qword_585460, edi
.text:00426808                 mov     dword ptr qword_585460+4, esi
.text:0042680E                 mov     dword ptr qword_5854A0, ebx
.text:00426814                 mov     dword ptr qword_5854A0+4, ebp
.text:0042681A                 cmp     dl, 1
.text:0042681D                 jg      loc_426B55
.text:00426823                 mov     eax, dword ptr qword_5854D8
.text:00426828                 mov     ecx, dword ptr qword_5854D8+4
.text:0042682E                 mov     edx, eax
.text:00426830                 shr     edx, 1
.text:00426832                 and     edx, 55555555h
.text:00426838                 sub     eax, edx
.text:0042683A                 mov     edx, ecx
.text:0042683C                 shr     edx, 1
.text:0042683E                 and     edx, 55555555h
.text:00426844                 sub     ecx, edx
.text:00426846                 mov     edx, ecx
.text:00426848                 mov     [esp+1Ch+var_8], ecx
.text:0042684C                 shr     edx, 2
.text:0042684F                 and     edx, 33333333h
.text:00426855                 mov     ecx, eax
.text:00426857                 shr     ecx, 2
.text:0042685A                 and     ecx, 33333333h
.text:00426860                 add     edx, ecx
.text:00426862                 mov     ecx, [esp+1Ch+var_8]
.text:00426866                 and     ecx, 33333333h
.text:0042686C                 add     edx, ecx
.text:0042686E                 and     eax, 33333333h
.text:00426873                 add     edx, eax
.text:00426875                 imul    edx, 11111111h
.text:0042687B                 shr     edx, 1Ch
.text:0042687E                 cmp     dl, 1
.text:00426881                 jg      loc_426B55
.text:00426887                 mov     eax, dword ptr qword_585490
.text:0042688C                 mov     ecx, dword ptr qword_585490+4
.text:00426892                 mov     edx, eax
.text:00426894                 shr     edx, 1
.text:00426896                 and     edx, 55555555h
.text:0042689C                 sub     eax, edx
.text:0042689E                 mov     edx, ecx
.text:004268A0                 shr     edx, 1
.text:004268A2                 and     edx, 55555555h
.text:004268A8                 sub     ecx, edx
.text:004268AA                 mov     edx, ecx
.text:004268AC                 mov     [esp+1Ch+var_8], ecx
.text:004268B0                 shr     edx, 2
.text:004268B3                 and     edx, 33333333h
.text:004268B9                 mov     ecx, eax
.text:004268BB                 shr     ecx, 2
.text:004268BE                 and     ecx, 33333333h
.text:004268C4                 add     edx, ecx
.text:004268C6                 mov     ecx, [esp+1Ch+var_8]
.text:004268CA                 and     ecx, 33333333h
.text:004268D0                 add     edx, ecx
.text:004268D2                 and     eax, 33333333h
.text:004268D7                 add     edx, eax
.text:004268D9                 imul    edx, 11111111h
.text:004268DF                 shr     edx, 1Ch
.text:004268E2                 cmp     dl, 2
.text:004268E5                 jg      loc_426B55
.text:004268EB                 mov     eax, dword ptr qword_5854D0
.text:004268F0                 mov     ecx, dword ptr qword_5854D0+4
.text:004268F6                 mov     edx, eax
.text:004268F8                 shr     edx, 1
.text:004268FA                 and     edx, 55555555h
.text:00426900                 sub     eax, edx
.text:00426902                 mov     edx, ecx
.text:00426904                 shr     edx, 1
.text:00426906                 and     edx, 55555555h
.text:0042690C                 sub     ecx, edx
.text:0042690E                 mov     edx, ecx
.text:00426910                 mov     [esp+1Ch+var_8], ecx
.text:00426914                 shr     edx, 2
.text:00426917                 and     edx, 33333333h
.text:0042691D                 mov     ecx, eax
.text:0042691F                 shr     ecx, 2
.text:00426922                 and     ecx, 33333333h
.text:00426928                 add     edx, ecx
.text:0042692A                 mov     ecx, [esp+1Ch+var_8]
.text:0042692E                 and     ecx, 33333333h
.text:00426934                 add     edx, ecx
.text:00426936                 and     eax, 33333333h
.text:0042693B                 add     edx, eax
.text:0042693D                 imul    edx, 11111111h
.text:00426943                 shr     edx, 1Ch
.text:00426946                 cmp     dl, 2
.text:00426949                 jg      loc_426B55
.text:0042694F                 mov     eax, dword ptr qword_585480
.text:00426954                 mov     ecx, dword ptr qword_585480+4
.text:0042695A                 mov     edx, eax
.text:0042695C                 shr     edx, 1
.text:0042695E                 and     edx, 55555555h
.text:00426964                 sub     eax, edx
.text:00426966                 mov     edx, ecx
.text:00426968                 shr     edx, 1
.text:0042696A                 and     edx, 55555555h
.text:00426970                 sub     ecx, edx
.text:00426972                 mov     edx, ecx
.text:00426974                 mov     [esp+1Ch+var_8], ecx
.text:00426978                 shr     edx, 2
.text:0042697B                 and     edx, 33333333h
.text:00426981                 mov     ecx, eax
.text:00426983                 shr     ecx, 2
.text:00426986                 and     ecx, 33333333h
.text:0042698C                 add     edx, ecx
.text:0042698E                 mov     ecx, [esp+1Ch+var_8]
.text:00426992                 and     ecx, 33333333h
.text:00426998                 add     edx, ecx
.text:0042699A                 and     eax, 33333333h
.text:0042699F                 add     edx, eax
.text:004269A1                 imul    edx, 11111111h
.text:004269A7                 shr     edx, 1Ch
.text:004269AA                 cmp     dl, 1
.text:004269AD                 jg      loc_426B55
.text:004269B3                 mov     eax, dword ptr qword_5854C0
.text:004269B8                 mov     ecx, dword ptr qword_5854C0+4
.text:004269BE                 mov     edx, eax
.text:004269C0                 shr     edx, 1
.text:004269C2                 and     edx, 55555555h
.text:004269C8                 sub     eax, edx
.text:004269CA                 mov     edx, ecx
.text:004269CC                 shr     edx, 1
.text:004269CE                 and     edx, 55555555h
.text:004269D4                 sub     ecx, edx
.text:004269D6                 mov     edx, ecx
.text:004269D8                 mov     [esp+1Ch+var_8], ecx
.text:004269DC                 shr     edx, 2
.text:004269DF                 and     edx, 33333333h
.text:004269E5                 mov     ecx, eax
.text:004269E7                 shr     ecx, 2
.text:004269EA                 and     ecx, 33333333h
.text:004269F0                 add     edx, ecx
.text:004269F2                 mov     ecx, [esp+1Ch+var_8]
.text:004269F6                 and     ecx, 33333333h
.text:004269FC                 add     edx, ecx
.text:004269FE                 and     eax, 33333333h
.text:00426A03                 add     edx, eax
.text:00426A05                 imul    edx, 11111111h
.text:00426A0B                 shr     edx, 1Ch
.text:00426A0E                 cmp     dl, 1
.text:00426A11                 jg      loc_426B55
.text:00426A17                 mov     eax, dword ptr qword_585470
.text:00426A1C                 mov     ecx, dword ptr qword_585470+4
.text:00426A22                 mov     edx, eax
.text:00426A24                 shr     edx, 1
.text:00426A26                 and     edx, 55555555h
.text:00426A2C                 sub     eax, edx
.text:00426A2E                 mov     edx, ecx
.text:00426A30                 shr     edx, 1
.text:00426A32                 and     edx, 55555555h
.text:00426A38                 sub     ecx, edx
.text:00426A3A                 mov     edx, ecx
.text:00426A3C                 mov     [esp+1Ch+var_8], ecx
.text:00426A40                 shr     edx, 2
.text:00426A43                 and     edx, 33333333h
.text:00426A49                 mov     ecx, eax
.text:00426A4B                 shr     ecx, 2
.text:00426A4E                 and     ecx, 33333333h
.text:00426A54                 add     edx, ecx
.text:00426A56                 mov     ecx, [esp+1Ch+var_8]
.text:00426A5A                 and     ecx, 33333333h
.text:00426A60                 add     edx, ecx
.text:00426A62                 and     eax, 33333333h
.text:00426A67                 add     edx, eax
.text:00426A69                 imul    edx, 11111111h
.text:00426A6F                 shr     edx, 1Ch
.text:00426A72                 cmp     dl, 2
.text:00426A75                 jg      loc_426B55
.text:00426A7B                 mov     eax, dword ptr qword_5854B0
.text:00426A80                 mov     ecx, dword ptr qword_5854B0+4
.text:00426A86                 mov     edx, eax
.text:00426A88                 shr     edx, 1
.text:00426A8A                 and     edx, 55555555h
.text:00426A90                 sub     eax, edx
.text:00426A92                 mov     edx, ecx
.text:00426A94                 shr     edx, 1
.text:00426A96                 and     edx, 55555555h
.text:00426A9C                 sub     ecx, edx
.text:00426A9E                 mov     edx, ecx
.text:00426AA0                 mov     [esp+1Ch+var_8], ecx
.text:00426AA4                 shr     edx, 2
.text:00426AA7                 and     edx, 33333333h
.text:00426AAD                 mov     ecx, eax
.text:00426AAF                 shr     ecx, 2
.text:00426AB2                 and     ecx, 33333333h
.text:00426AB8                 add     edx, ecx
.text:00426ABA                 mov     ecx, [esp+1Ch+var_8]
.text:00426ABE                 and     ecx, 33333333h
.text:00426AC4                 add     edx, ecx
.text:00426AC6                 and     eax, 33333333h
.text:00426ACB                 add     edx, eax
.text:00426ACD                 imul    edx, 11111111h
.text:00426AD3                 shr     edx, 1Ch
.text:00426AD6                 cmp     dl, 2
.text:00426AD9                 jg      short loc_426B55
.text:00426ADB                 mov     eax, dword ptr qword_585488
.text:00426AE0                 mov     ecx, dword ptr qword_585488+4
.text:00426AE6                 mov     edx, eax
.text:00426AE8                 shr     edx, 1
.text:00426AEA                 and     edx, 55555555h
.text:00426AF0                 sub     eax, edx
.text:00426AF2                 mov     edx, ecx
.text:00426AF4                 shr     edx, 1
.text:00426AF6                 and     edx, 55555555h
.text:00426AFC                 sub     ecx, edx
.text:00426AFE                 mov     edx, ecx
.text:00426B00                 mov     [esp+1Ch+var_8], ecx
.text:00426B04                 shr     edx, 2
.text:00426B07                 and     edx, 33333333h
.text:00426B0D                 mov     ecx, eax
.text:00426B0F                 shr     ecx, 2
.text:00426B12                 and     ecx, 33333333h
.text:00426B18                 add     edx, ecx
.text:00426B1A                 mov     ecx, [esp+1Ch+var_8]
.text:00426B1E                 and     ecx, 33333333h
.text:00426B24                 add     edx, ecx
.text:00426B26                 and     eax, 33333333h
.text:00426B2B                 add     edx, eax
.text:00426B2D                 imul    edx, 11111111h
.text:00426B33                 shr     edx, 1Ch
.text:00426B36                 cmp     dl, 1
.text:00426B39                 jg      short loc_426B55
.text:00426B3B                 mov     edx, dword ptr qword_5854C8+4
.text:00426B41                 mov     eax, dword ptr qword_5854C8
.text:00426B46                 push    edx
.text:00426B47                 push    eax
.text:00426B48                 call    sub_401040
.text:00426B4D                 add     esp, 8
.text:00426B50                 cmp     eax, 1
.text:00426B53                 jle     short loc_426B79
.text:00426B55
.text:00426B55 loc_426B55:                             ; CODE XREF: sub_4265A0+27Dj
.text:00426B55                                         ; sub_4265A0+2E1j ...
.text:00426B55                 mov     eax, dword_5854F0
.text:00426B5A                 or      dword ptr [eax+10h], 80000000h
.text:00426B61                 mov     ebp, dword ptr qword_5854A0+4
.text:00426B67                 mov     ebx, dword ptr qword_5854A0
.text:00426B6D                 mov     esi, dword ptr qword_585460+4
.text:00426B73                 mov     edi, dword ptr qword_585460
.text:00426B79
.text:00426B79 loc_426B79:                             ; CODE XREF: sub_4265A0+5B3j
.text:00426B79                 mov     eax, dword ptr qword_585478
.text:00426B7E                 mov     ecx, dword ptr qword_585478+4
.text:00426B84                 mov     edx, eax
.text:00426B86                 shr     edx, 1
.text:00426B88                 and     edx, 55555555h
.text:00426B8E                 sub     eax, edx
.text:00426B90                 mov     edx, ecx
.text:00426B92                 shr     edx, 1
.text:00426B94                 and     edx, 55555555h
.text:00426B9A                 sub     ecx, edx
.text:00426B9C                 mov     edx, ecx
.text:00426B9E                 mov     [esp+1Ch+var_8], ecx
.text:00426BA2                 shr     edx, 2
.text:00426BA5                 and     edx, 33333333h
.text:00426BAB                 mov     ecx, eax
.text:00426BAD                 shr     ecx, 2
.text:00426BB0                 and     ecx, 33333333h
.text:00426BB6                 add     edx, ecx
.text:00426BB8                 mov     ecx, [esp+1Ch+var_8]
.text:00426BBC                 and     ecx, 33333333h
.text:00426BC2                 add     edx, ecx
.text:00426BC4                 and     eax, 33333333h
.text:00426BC9                 add     edx, eax
.text:00426BCB                 imul    edx, 11111111h
.text:00426BD1                 and     edx, 0F0000000h
.text:00426BD7                 cmp     edx, 10000000h
.text:00426BDD                 jz      short loc_426BE9
.text:00426BDF                 mov     eax, offset aOneWhiteKingRe ; "ONE white king required"
.text:00426BE4                 jmp     loc_4270A6
.text:00426BE9 ; ---------------------------------------------------------------------------
.text:00426BE9
.text:00426BE9 loc_426BE9:                             ; CODE XREF: sub_4265A0+63Dj
.text:00426BE9                 mov     eax, dword ptr qword_5854B8
.text:00426BEE                 mov     ecx, dword ptr qword_5854B8+4
.text:00426BF4                 mov     edx, eax
.text:00426BF6                 shr     edx, 1
.text:00426BF8                 and     edx, 55555555h
.text:00426BFE                 sub     eax, edx
.text:00426C00                 mov     edx, ecx
.text:00426C02                 shr     edx, 1
.text:00426C04                 and     edx, 55555555h
.text:00426C0A                 sub     ecx, edx
.text:00426C0C                 mov     edx, ecx
.text:00426C0E                 mov     [esp+1Ch+var_8], ecx
.text:00426C12                 shr     edx, 2
.text:00426C15                 and     edx, 33333333h
.text:00426C1B                 mov     ecx, eax
.text:00426C1D                 shr     ecx, 2
.text:00426C20                 and     ecx, 33333333h
.text:00426C26                 add     edx, ecx
.text:00426C28                 mov     ecx, [esp+1Ch+var_8]
.text:00426C2C                 and     ecx, 33333333h
.text:00426C32                 add     edx, ecx
.text:00426C34                 and     eax, 33333333h
.text:00426C39                 add     edx, eax
.text:00426C3B                 imul    edx, 11111111h
.text:00426C41                 and     edx, 0F0000000h
.text:00426C47                 cmp     edx, 10000000h
.text:00426C4D                 jz      short loc_426C59
.text:00426C4F                 mov     eax, offset aOneBlackKingRe ; "ONE black king required"
.text:00426C54                 jmp     loc_4270A6
.text:00426C59 ; ---------------------------------------------------------------------------
.text:00426C59
.text:00426C59 loc_426C59:                             ; CODE XREF: sub_4265A0+6ADj
.text:00426C59                 mov     eax, dword ptr qword_585498
.text:00426C5E                 mov     ecx, dword ptr qword_585498+4
.text:00426C64                 mov     edx, eax
.text:00426C66                 shr     edx, 1
.text:00426C68                 and     edx, 55555555h
.text:00426C6E                 sub     eax, edx
.text:00426C70                 mov     edx, ecx
.text:00426C72                 shr     edx, 1
.text:00426C74                 and     edx, 55555555h
.text:00426C7A                 sub     ecx, edx
.text:00426C7C                 mov     edx, ecx
.text:00426C7E                 mov     [esp+1Ch+var_8], ecx
.text:00426C82                 shr     edx, 2
.text:00426C85                 and     edx, 33333333h
.text:00426C8B                 mov     ecx, eax
.text:00426C8D                 shr     ecx, 2
.text:00426C90                 and     ecx, 33333333h
.text:00426C96                 add     edx, ecx
.text:00426C98                 mov     ecx, [esp+1Ch+var_8]
.text:00426C9C                 and     ecx, 33333333h
.text:00426CA2                 add     edx, ecx
.text:00426CA4                 and     eax, 33333333h
.text:00426CA9                 add     edx, eax
.text:00426CAB                 imul    edx, 11111111h
.text:00426CB1                 shr     edx, 1Ch
.text:00426CB4                 cmp     dl, 9
.text:00426CB7                 jle     short loc_426CC3
.text:00426CB9                 mov     eax, offset aTooManyWhiteQu ; "Too many white queens"
.text:00426CBE                 jmp     loc_4270A6
.text:00426CC3 ; ---------------------------------------------------------------------------
.text:00426CC3
.text:00426CC3 loc_426CC3:                             ; CODE XREF: sub_4265A0+717j
.text:00426CC3                 mov     eax, dword ptr qword_5854D8
.text:00426CC8                 mov     ecx, dword ptr qword_5854D8+4
.text:00426CCE                 mov     edx, eax
.text:00426CD0                 shr     edx, 1
.text:00426CD2                 and     edx, 55555555h
.text:00426CD8                 sub     eax, edx
.text:00426CDA                 mov     edx, ecx
.text:00426CDC                 shr     edx, 1
.text:00426CDE                 and     edx, 55555555h
.text:00426CE4                 sub     ecx, edx
.text:00426CE6                 mov     edx, ecx
.text:00426CE8                 mov     [esp+1Ch+var_8], ecx
.text:00426CEC                 shr     edx, 2
.text:00426CEF                 and     edx, 33333333h
.text:00426CF5                 mov     ecx, eax
.text:00426CF7                 shr     ecx, 2
.text:00426CFA                 and     ecx, 33333333h
.text:00426D00                 add     edx, ecx
.text:00426D02                 mov     ecx, [esp+1Ch+var_8]
.text:00426D06                 and     ecx, 33333333h
.text:00426D0C                 add     edx, ecx
.text:00426D0E                 and     eax, 33333333h
.text:00426D13                 add     edx, eax
.text:00426D15                 imul    edx, 11111111h
.text:00426D1B                 shr     edx, 1Ch
.text:00426D1E                 cmp     dl, 9
.text:00426D21                 jle     short loc_426D2D
.text:00426D23                 mov     eax, offset aTooManyBlackQu ; "Too many black queens"
.text:00426D28                 jmp     loc_4270A6
.text:00426D2D ; ---------------------------------------------------------------------------
.text:00426D2D
.text:00426D2D loc_426D2D:                             ; CODE XREF: sub_4265A0+781j
.text:00426D2D                 mov     eax, dword ptr qword_585490
.text:00426D32                 mov     ecx, dword ptr qword_585490+4
.text:00426D38                 mov     edx, eax
.text:00426D3A                 shr     edx, 1
.text:00426D3C                 and     edx, 55555555h
.text:00426D42                 sub     eax, edx
.text:00426D44                 mov     edx, ecx
.text:00426D46                 shr     edx, 1
.text:00426D48                 and     edx, 55555555h
.text:00426D4E                 sub     ecx, edx
.text:00426D50                 mov     edx, ecx
.text:00426D52                 mov     [esp+1Ch+var_8], ecx
.text:00426D56                 shr     edx, 2
.text:00426D59                 and     edx, 33333333h
.text:00426D5F                 mov     ecx, eax
.text:00426D61                 shr     ecx, 2
.text:00426D64                 and     ecx, 33333333h
.text:00426D6A                 add     edx, ecx
.text:00426D6C                 mov     ecx, [esp+1Ch+var_8]
.text:00426D70                 and     ecx, 33333333h
.text:00426D76                 add     edx, ecx
.text:00426D78                 and     eax, 33333333h
.text:00426D7D                 add     edx, eax
.text:00426D7F                 imul    edx, 11111111h
.text:00426D85                 shr     edx, 1Ch
.text:00426D88                 cmp     dl, 0Ah
.text:00426D8B                 jle     short loc_426D97
.text:00426D8D                 mov     eax, offset aTooManyWhiteRo ; "Too many white rooks"
.text:00426D92                 jmp     loc_4270A6
.text:00426D97 ; ---------------------------------------------------------------------------
.text:00426D97
.text:00426D97 loc_426D97:                             ; CODE XREF: sub_4265A0+7EBj
.text:00426D97                 mov     eax, dword ptr qword_5854D0
.text:00426D9C                 mov     ecx, dword ptr qword_5854D0+4
.text:00426DA2                 mov     edx, eax
.text:00426DA4                 shr     edx, 1
.text:00426DA6                 and     edx, 55555555h
.text:00426DAC                 sub     eax, edx
.text:00426DAE                 mov     edx, ecx
.text:00426DB0                 shr     edx, 1
.text:00426DB2                 and     edx, 55555555h
.text:00426DB8                 sub     ecx, edx
.text:00426DBA                 mov     edx, ecx
.text:00426DBC                 mov     [esp+1Ch+var_8], ecx
.text:00426DC0                 shr     edx, 2
.text:00426DC3                 and     edx, 33333333h
.text:00426DC9                 mov     ecx, eax
.text:00426DCB                 shr     ecx, 2
.text:00426DCE                 and     ecx, 33333333h
.text:00426DD4                 add     edx, ecx
.text:00426DD6                 mov     ecx, [esp+1Ch+var_8]
.text:00426DDA                 and     ecx, 33333333h
.text:00426DE0                 add     edx, ecx
.text:00426DE2                 and     eax, 33333333h
.text:00426DE7                 add     edx, eax
.text:00426DE9                 imul    edx, 11111111h
.text:00426DEF                 shr     edx, 1Ch
.text:00426DF2                 cmp     dl, 0Ah
.text:00426DF5                 jle     short loc_426E01
.text:00426DF7                 mov     eax, offset aTooManyBlackRo ; "Too many black rooks"
.text:00426DFC                 jmp     loc_4270A6
.text:00426E01 ; ---------------------------------------------------------------------------
.text:00426E01
.text:00426E01 loc_426E01:                             ; CODE XREF: sub_4265A0+855j
.text:00426E01                 mov     eax, dword ptr qword_585480
.text:00426E06                 mov     ecx, dword ptr qword_585480+4
.text:00426E0C                 mov     edx, eax
.text:00426E0E                 shr     edx, 1
.text:00426E10                 and     edx, 55555555h
.text:00426E16                 sub     eax, edx
.text:00426E18                 mov     edx, ecx
.text:00426E1A                 shr     edx, 1
.text:00426E1C                 and     edx, 55555555h
.text:00426E22                 sub     ecx, edx
.text:00426E24                 mov     edx, ecx
.text:00426E26                 mov     [esp+1Ch+var_8], ecx
.text:00426E2A                 shr     edx, 2
.text:00426E2D                 and     edx, 33333333h
.text:00426E33                 mov     ecx, eax
.text:00426E35                 shr     ecx, 2
.text:00426E38                 and     ecx, 33333333h
.text:00426E3E                 add     edx, ecx
.text:00426E40                 mov     ecx, [esp+1Ch+var_8]
.text:00426E44                 and     ecx, 33333333h
.text:00426E4A                 add     edx, ecx
.text:00426E4C                 and     eax, 33333333h
.text:00426E51                 add     edx, eax
.text:00426E53                 imul    edx, 11111111h
.text:00426E59                 shr     edx, 1Ch
.text:00426E5C                 cmp     dl, 9
.text:00426E5F                 jle     short loc_426E6B
.text:00426E61                 mov     eax, offset aTooManyLightSq ; "Too many light-squared white 

bishops"
.text:00426E66                 jmp     loc_4270A6
.text:00426E6B ; ---------------------------------------------------------------------------
.text:00426E6B
.text:00426E6B loc_426E6B:                             ; CODE XREF: sub_4265A0+8BFj
.text:00426E6B                 mov     eax, dword ptr qword_5854C0
.text:00426E70                 mov     ecx, dword ptr qword_5854C0+4
.text:00426E76                 mov     edx, eax
.text:00426E78                 shr     edx, 1
.text:00426E7A                 and     edx, 55555555h
.text:00426E80                 sub     eax, edx
.text:00426E82                 mov     edx, ecx
.text:00426E84                 shr     edx, 1
.text:00426E86                 and     edx, 55555555h
.text:00426E8C                 sub     ecx, edx
.text:00426E8E                 mov     edx, ecx
.text:00426E90                 mov     [esp+1Ch+var_8], ecx
.text:00426E94                 shr     edx, 2
.text:00426E97                 and     edx, 33333333h
.text:00426E9D                 mov     ecx, eax
.text:00426E9F                 shr     ecx, 2
.text:00426EA2                 and     ecx, 33333333h
.text:00426EA8                 add     edx, ecx
.text:00426EAA                 mov     ecx, [esp+1Ch+var_8]
.text:00426EAE                 and     ecx, 33333333h
.text:00426EB4                 add     edx, ecx
.text:00426EB6                 and     eax, 33333333h
.text:00426EBB                 add     edx, eax
.text:00426EBD                 imul    edx, 11111111h
.text:00426EC3                 shr     edx, 1Ch
.text:00426EC6                 cmp     dl, 9
.text:00426EC9                 jle     short loc_426ED5
.text:00426ECB                 mov     eax, offset aTooManyLight_0 ; "Too many light-squared black 

bishops"
.text:00426ED0                 jmp     loc_4270A6
.text:00426ED5 ; ---------------------------------------------------------------------------
.text:00426ED5
.text:00426ED5 loc_426ED5:                             ; CODE XREF: sub_4265A0+929j
.text:00426ED5                 mov     eax, dword ptr qword_585488
.text:00426EDA                 mov     ecx, dword ptr qword_585488+4
.text:00426EE0                 mov     edx, eax
.text:00426EE2                 shr     edx, 1
.text:00426EE4                 and     edx, 55555555h
.text:00426EEA                 sub     eax, edx
.text:00426EEC                 mov     edx, ecx
.text:00426EEE                 shr     edx, 1
.text:00426EF0                 and     edx, 55555555h
.text:00426EF6                 sub     ecx, edx
.text:00426EF8                 mov     edx, ecx
.text:00426EFA                 mov     [esp+1Ch+var_8], ecx
.text:00426EFE                 shr     edx, 2
.text:00426F01                 and     edx, 33333333h
.text:00426F07                 mov     ecx, eax
.text:00426F09                 shr     ecx, 2
.text:00426F0C                 and     ecx, 33333333h
.text:00426F12                 add     edx, ecx
.text:00426F14                 mov     ecx, [esp+1Ch+var_8]
.text:00426F18                 and     ecx, 33333333h
.text:00426F1E                 add     edx, ecx
.text:00426F20                 and     eax, 33333333h
.text:00426F25                 add     edx, eax
.text:00426F27                 imul    edx, 11111111h
.text:00426F2D                 shr     edx, 1Ch
.text:00426F30                 cmp     dl, 9
.text:00426F33                 jle     short loc_426F3F
.text:00426F35                 mov     eax, offset aTooManyDarkSqu ; "Too many dark-squared white bishops"
.text:00426F3A                 jmp     loc_4270A6
.text:00426F3F ; ---------------------------------------------------------------------------
.text:00426F3F
.text:00426F3F loc_426F3F:                             ; CODE XREF: sub_4265A0+993j
.text:00426F3F                 mov     edx, dword ptr qword_5854C8+4
.text:00426F45                 mov     eax, dword ptr qword_5854C8
.text:00426F4A                 push    edx
.text:00426F4B                 push    eax
.text:00426F4C                 call    sub_401040
.text:00426F51                 add     esp, 8
.text:00426F54                 cmp     eax, 9
.text:00426F57                 jle     short loc_426F63
.text:00426F59                 mov     eax, offset aTooManyDarkS_0 ; "Too many dark-squared black bishops"
.text:00426F5E                 jmp     loc_4270A6
.text:00426F63 ; ---------------------------------------------------------------------------
.text:00426F63
.text:00426F63 loc_426F63:                             ; CODE XREF: sub_4265A0+9B7j
.text:00426F63                 mov     eax, dword ptr qword_585488+4
.text:00426F68                 or      eax, dword ptr qword_585480+4
.text:00426F6E                 mov     ecx, dword ptr qword_585488
.text:00426F74                 or      ecx, dword ptr qword_585480
.text:00426F7A                 push    eax
.text:00426F7B                 push    ecx
.text:00426F7C                 call    sub_401040
.text:00426F81                 add     esp, 8
.text:00426F84                 cmp     eax, 0Ah
.text:00426F87                 jle     short loc_426F93
.text:00426F89                 mov     eax, offset aTooManyWhiteBi ; "Too many white bishops"
.text:00426F8E                 jmp     loc_4270A6
.text:00426F93 ; ---------------------------------------------------------------------------
.text:00426F93
.text:00426F93 loc_426F93:                             ; CODE XREF: sub_4265A0+9E7j
.text:00426F93                 mov     eax, dword ptr qword_5854C8+4
.text:00426F98                 or      eax, dword ptr qword_5854C0+4
.text:00426F9E                 mov     ecx, dword ptr qword_5854C8
.text:00426FA4                 or      ecx, dword ptr qword_5854C0
.text:00426FAA                 push    eax
.text:00426FAB                 push    ecx
.text:00426FAC                 call    sub_401040
.text:00426FB1                 add     esp, 8
.text:00426FB4                 cmp     eax, 0Ah
.text:00426FB7                 jle     short loc_426FC3
.text:00426FB9                 mov     eax, offset aTooManyBlackBi ; "Too many black bishops"
.text:00426FBE                 jmp     loc_4270A6
.text:00426FC3 ; ---------------------------------------------------------------------------
.text:00426FC3
.text:00426FC3 loc_426FC3:                             ; CODE XREF: sub_4265A0+A17j
.text:00426FC3                 mov     ecx, dword ptr qword_585470+4
.text:00426FC9                 mov     edx, dword ptr qword_585470
.text:00426FCF                 push    ecx
.text:00426FD0                 push    edx
.text:00426FD1                 call    sub_401040
.text:00426FD6                 add     esp, 8
.text:00426FD9                 cmp     eax, 0Ah
.text:00426FDC                 jle     short loc_426FE8
.text:00426FDE                 mov     eax, offset aTooManyWhiteKn ; "Too many white knights"
.text:00426FE3                 jmp     loc_4270A6
.text:00426FE8 ; ---------------------------------------------------------------------------
.text:00426FE8
.text:00426FE8 loc_426FE8:                             ; CODE XREF: sub_4265A0+A3Cj
.text:00426FE8                 mov     eax, dword ptr qword_5854B0+4
.text:00426FED                 mov     ecx, dword ptr qword_5854B0
.text:00426FF3                 push    eax
.text:00426FF4                 push    ecx
.text:00426FF5                 call    sub_401040
.text:00426FFA                 add     esp, 8
.text:00426FFD                 cmp     eax, 0Ah
.text:00427000                 jle     short loc_42700C
.text:00427002                 mov     eax, offset aTooManyBlackKn ; "Too many black knights"
.text:00427007                 jmp     loc_4270A6
.text:0042700C ; ---------------------------------------------------------------------------
.text:0042700C
.text:0042700C loc_42700C:                             ; CODE XREF: sub_4265A0+A60j
.text:0042700C                 mov     edx, dword ptr qword_585468+4
.text:00427012                 mov     eax, dword ptr qword_585468
.text:00427017                 push    edx
.text:00427018                 push    eax
.text:00427019                 call    sub_401040
.text:0042701E                 add     esp, 8
.text:00427021                 cmp     eax, 8
.text:00427024                 jle     short loc_42702D
.text:00427026                 mov     eax, offset aTooManyWhitePa ; "Too many white pawns"
.text:0042702B                 jmp     short loc_4270A6
.text:0042702D ; ---------------------------------------------------------------------------
.text:0042702D
.text:0042702D loc_42702D:                             ; CODE XREF: sub_4265A0+A84j
.text:0042702D                 mov     ecx, dword ptr qword_5854A8+4
.text:00427033                 mov     edx, dword ptr qword_5854A8
.text:00427039                 push    ecx
.text:0042703A                 push    edx
.text:0042703B                 call    sub_401040
.text:00427040                 add     esp, 8
.text:00427043                 cmp     eax, 8
.text:00427046                 jle     short loc_42704F
.text:00427048                 mov     eax, offset aTooManyBlackPa ; "Too many black pawns"
.text:0042704D                 jmp     short loc_4270A6
.text:0042704F ; ---------------------------------------------------------------------------
.text:0042704F
.text:0042704F loc_42704F:                             ; CODE XREF: sub_4265A0+AA6j
.text:0042704F                 push    esi
.text:00427050                 push    edi
.text:00427051                 call    sub_401040
.text:00427056                 add     esp, 8
.text:00427059                 cmp     eax, 10h
.text:0042705C                 jle     short loc_427065
.text:0042705E                 mov     eax, offset aTooManyWhitePi ; "Too many white pieces"
.text:00427063                 jmp     short loc_4270A6
.text:00427065 ; ---------------------------------------------------------------------------
.text:00427065
.text:00427065 loc_427065:                             ; CODE XREF: sub_4265A0+ABCj
.text:00427065                 push    ebp
.text:00427066                 push    ebx
.text:00427067                 call    sub_401040
.text:0042706C                 add     esp, 8
.text:0042706F                 cmp     eax, 10h
.text:00427072                 jle     short loc_42707B
.text:00427074                 mov     eax, offset aTooManyBlackPi ; "Too many black pieces"
.text:00427079                 jmp     short loc_4270A6
.text:0042707B ; ---------------------------------------------------------------------------
.text:0042707B
.text:0042707B loc_42707B:                             ; CODE XREF: sub_4265A0+AD2j
.text:0042707B                 mov     eax, dword ptr qword_5854A8
.text:00427080                 mov     ecx, dword ptr qword_5854A8+4
.text:00427086                 or      eax, dword ptr qword_585468
.text:0042708C                 or      ecx, dword ptr qword_585468+4
.text:00427092                 and     eax, 0FFh
.text:00427097                 and     ecx, 0FF000000h
.text:0042709D                 or      eax, ecx
.text:0042709F                 jz      short loc_4270E1
.text:004270A1                 mov     eax, offset aPawnAtRank1Or8 ; "Pawn at rank 1 or 8"
.text:004270A6
.text:004270A6 loc_4270A6:                             ; CODE XREF: sub_4265A0+644j
.text:004270A6                                         ; sub_4265A0+6B4j ...
.text:004270A6                 push    eax
.text:004270A7                 push    offset aErrorInvalidPo ; "ERROR: Invalid position - %s\n"
.text:004270AC                 call    sub_428B5A
.text:004270B1                 push    offset aInternalBoardR ; "Internal board reset to start position

\n"...
.text:004270B6                 call    sub_428B5A
.text:004270BB                 add     esp, 0Ch
.text:004270BE                 call    sub_4287BF
.text:004270C3                 add     eax, 20h
.text:004270C6                 push    eax
.text:004270C7                 call    sub_428AFE
.text:004270CC                 add     esp, 4
.text:004270CF                 push    0
.text:004270D1                 call    sub_4274B0
.text:004270D6                 add     esp, 4
.text:004270D9                 pop     edi
.text:004270DA                 pop     esi
.text:004270DB                 pop     ebp
.text:004270DC                 pop     ebx
.text:004270DD                 add     esp, 0Ch
.text:004270E0                 retn
.text:004270E1 ; ---------------------------------------------------------------------------
.text:004270E1
.text:004270E1 loc_4270E1:                             ; CODE XREF: sub_4265A0+AFFj
.text:004270E1                 bsf     eax, dword ptr qword_585478
.text:004270E8                 jz      short loc_4270F0
.text:004270EA                 mov     [esp+1Ch+var_8], eax
.text:004270EE                 jmp     short loc_427106
.text:004270F0 ; ---------------------------------------------------------------------------
.text:004270F0
.text:004270F0 loc_4270F0:                             ; CODE XREF: sub_4265A0+B48j
.text:004270F0                 bsf     eax, dword ptr qword_585478+4
.text:004270F7                 mov     ecx, eax
.text:004270F9                 add     ecx, 20h
.text:004270FC                 mov     [esp+1Ch+var_8], eax
.text:00427100                 mov     [esp+1Ch+var_8], ecx
.text:00427104                 mov     eax, ecx
.text:00427106
.text:00427106 loc_427106:                             ; CODE XREF: sub_4265A0+B4Ej
.text:00427106                 bsf     ebx, dword ptr qword_5854B8
.text:0042710D                 mov     byte_5854E8, al
.text:00427112                 jnz     short loc_427124
.text:00427114                 bsf     edx, dword ptr qword_5854B8+4
.text:0042711B                 mov     ebx, edx
.text:0042711D                 mov     [esp+1Ch+var_4], edx
.text:00427121                 add     ebx, 20h
.text:00427124
.text:00427124 loc_427124:                             ; CODE XREF: sub_4265A0+B72j
.text:00427124                 mov     esi, dword_5854F0
.text:0042712A                 mov     byte_5854E9, bl
.text:00427130                 mov     dl, [esi+19h]
.text:00427133                 test    dl, 1
.text:00427136                 jz      short loc_42715F
.text:00427138                 cmp     al, 4
.text:0042713A                 jnz     loc_4271CD
.text:00427140                 mov     eax, dword ptr qword_828AB0
.text:00427145                 mov     ecx, dword ptr qword_828AB0+4
.text:0042714B                 and     eax, dword ptr qword_585490
.text:00427151                 and     ecx, dword ptr qword_585490+4
.text:00427157                 or      eax, ecx
.text:00427159                 jz      short loc_4271CD
.text:0042715B                 mov     eax, [esp+1Ch+var_8]
.text:0042715F
.text:0042715F loc_42715F:                             ; CODE XREF: sub_4265A0+B96j
.text:0042715F                 test    dl, 2
.text:00427162                 jz      short loc_427183
.text:00427164                 cmp     al, 4
.text:00427166                 jnz     short loc_4271CD
.text:00427168                 mov     eax, dword ptr qword_828A78
.text:0042716D                 mov     ecx, dword ptr qword_828A78+4
.text:00427173                 and     eax, dword ptr qword_585490
.text:00427179                 and     ecx, dword ptr qword_585490+4
.text:0042717F                 or      eax, ecx
.text:00427181                 jz      short loc_4271CD
.text:00427183
.text:00427183 loc_427183:                             ; CODE XREF: sub_4265A0+BC2j
.text:00427183                 test    dl, 4
.text:00427186                 jz      short loc_4271A8
.text:00427188                 cmp     bl, 3Ch
.text:0042718B                 jnz     short loc_4271CD
.text:0042718D                 mov     eax, dword ptr qword_828C70
.text:00427192                 mov     ecx, dword ptr qword_828C70+4
.text:00427198                 and     eax, dword ptr qword_5854D0
.text:0042719E                 and     ecx, dword ptr qword_5854D0+4
.text:004271A4                 or      eax, ecx
.text:004271A6                 jz      short loc_4271CD
.text:004271A8
.text:004271A8 loc_4271A8:                             ; CODE XREF: sub_4265A0+BE6j
.text:004271A8                 test    dl, 8
.text:004271AB                 jz      short loc_42720A
.text:004271AD                 cmp     bl, 3Ch
.text:004271B0                 jnz     short loc_4271CD
.text:004271B2                 mov     eax, dword ptr qword_828C38
.text:004271B7                 mov     ecx, dword ptr qword_828C38+4
.text:004271BD                 and     eax, dword ptr qword_5854D0
.text:004271C3                 and     ecx, dword ptr qword_5854D0+4
.text:004271C9                 or      eax, ecx
.text:004271CB                 jnz     short loc_42720A
.text:004271CD
.text:004271CD loc_4271CD:                             ; CODE XREF: sub_4265A0+B9Aj
.text:004271CD                                         ; sub_4265A0+BB9j ...
.text:004271CD                 push    offset aIllegalCastlin ; "Illegal castling"
.text:004271D2                 push    offset aErrorInvalidPo ; "ERROR: Invalid position - %s\n"
.text:004271D7                 call    sub_428B5A
.text:004271DC                 push    offset aInternalBoardR ; "Internal board reset to start position

\n"...
.text:004271E1                 call    sub_428B5A
.text:004271E6                 add     esp, 0Ch
.text:004271E9                 call    sub_4287BF
.text:004271EE                 add     eax, 20h
.text:004271F1                 push    eax
.text:004271F2                 call    sub_428AFE
.text:004271F7                 add     esp, 4
.text:004271FA                 push    0
.text:004271FC                 call    sub_4274B0
.text:00427201                 mov     esi, dword_5854F0
.text:00427207                 add     esp, 4
.text:0042720A
.text:0042720A loc_42720A:                             ; CODE XREF: sub_4265A0+C0Bj
.text:0042720A                                         ; sub_4265A0+C2Bj
.text:0042720A                 movzx   eax, byte ptr [esi+19h]
.text:0042720E                 mov     ecx, dword ptr qword_8F1EF8[eax*8]
.text:00427215                 xor     [esi], ecx
.text:00427217                 mov     edx, dword ptr (qword_8F1EF8+4)[eax*8]
.text:0042721E                 mov     eax, dword_5854F0
.text:00427223                 xor     [eax+4], edx
.text:00427226                 mov     ecx, dword_5854F0
.text:0042722C                 mov     al, [ecx+1Ah]
.text:0042722F                 test    al, al
.text:00427231                 jz      short loc_427257
.text:00427233                 movzx   eax, al
.text:00427236                 and     eax, 7
.text:00427239                 mov     edx, dword_926CC0[eax*8]
.text:00427240                 xor     [ecx], edx
.text:00427242                 mov     ecx, dword_926CC4[eax*8]
.text:00427249                 mov     eax, dword_5854F0
.text:0042724E                 xor     [eax+4], ecx
.text:00427251                 mov     ecx, dword_5854F0
.text:00427257
.text:00427257 loc_427257:                             ; CODE XREF: sub_4265A0+C91j
.text:00427257                 movzx   edx, byte_5854E9
.text:0042725E                 lea     eax, [ecx+8]
.text:00427261                 movzx   ecx, byte ptr [ecx+19h]
.text:00427265                 mov     esi, dword ptr qword_8F1EF8[ecx*8]
.text:0042726C                 xor     esi, dword_91D870[edx*8]
.text:00427273                 mov     edi, dword ptr (qword_8F1EF8+4)[ecx*8]
.text:0042727A                 xor     edi, dword_91D874[edx*8]
.text:00427281                 movzx   ecx, byte_5854E8
.text:00427288                 xor     esi, dword_91C870[ecx*8]
.text:0042728F                 xor     edi, dword_91C874[ecx*8]
.text:00427296                 xor     esi, [eax]
.text:00427298                 xor     edi, [eax+4]
.text:0042729B                 xor     esi, 0A8BF965Eh
.text:004272A1                 xor     edi, 74D3C012h
.text:004272A7                 mov     [eax], esi
.text:004272A9                 mov     [eax+4], edi
.text:004272AC                 cmp     byte_5854EA, 0
.text:004272B3                 jz      short loc_4272D0
.text:004272B5                 mov     eax, dword_5854F0
.text:004272BA                 mov     edx, dword_8F3118
.text:004272C0                 xor     [eax], edx
.text:004272C2                 mov     ecx, dword_8F311C
.text:004272C8                 mov     eax, dword_5854F0
.text:004272CD                 xor     [eax+4], ecx
.text:004272D0
.text:004272D0 loc_4272D0:                             ; CODE XREF: sub_4265A0+D13j
.text:004272D0                 push    0
.text:004272D2                 push    0
.text:004272D4                 push    7530h
.text:004272D9                 push    0FFFF8AD0h
.text:004272DE                 call    sub_404AD0
.text:004272E3                 mov     edx, dword_5854F0
.text:004272E9                 add     esp, 10h
.text:004272EC                 cmp     byte_5854EA, 0
.text:004272F3                 jz      short loc_427351
.text:004272F5                 mov     eax, [edx+20h]
.text:004272F8                 mov     ecx, [edx+24h]
.text:004272FB                 and     eax, dword ptr qword_5854B8
.text:00427301                 and     ecx, dword ptr qword_5854B8+4
.text:00427307                 or      eax, ecx
.text:00427309                 jz      short loc_427348
.text:0042730B                 push    offset aBlackKingCanBe ; "Black king can be captured"
.text:00427310                 push    offset aErrorInvalidPo ; "ERROR: Invalid position - %s\n"
.text:00427315                 call    sub_428B5A
.text:0042731A                 push    offset aInternalBoardR ; "Internal board reset to start position

\n"...
.text:0042731F                 call    sub_428B5A
.text:00427324                 add     esp, 0Ch
.text:00427327                 call    sub_4287BF
.text:0042732C                 add     eax, 20h
.text:0042732F                 push    eax
.text:00427330                 call    sub_428AFE
.text:00427335                 add     esp, 4
.text:00427338                 push    0
.text:0042733A                 call    sub_4274B0
.text:0042733F                 mov     edx, dword_5854F0
.text:00427345                 add     esp, 4
.text:00427348
.text:00427348 loc_427348:                             ; CODE XREF: sub_4265A0+D69j
.text:00427348                 cmp     byte_5854EA, 0
.text:0042734F                 jnz     short loc_42739E
.text:00427351
.text:00427351 loc_427351:                             ; CODE XREF: sub_4265A0+D53j
.text:00427351                 mov     eax, [edx+28h]
.text:00427354                 mov     ecx, [edx+2Ch]
.text:00427357                 and     eax, dword ptr qword_585478
.text:0042735D                 and     ecx, dword ptr qword_585478+4
.text:00427363                 or      eax, ecx
.text:00427365                 jz      short loc_42739E
.text:00427367                 push    offset aWhiteKingCanBe ; "White king can be captured"
.text:0042736C                 push    offset aErrorInvalidPo ; "ERROR: Invalid position - %s\n"
.text:00427371                 call    sub_428B5A
.text:00427376                 push    offset aInternalBoardR ; "Internal board reset to start position

\n"...
.text:0042737B                 call    sub_428B5A
.text:00427380                 add     esp, 0Ch
.text:00427383                 call    sub_4287BF
.text:00427388                 add     eax, 20h
.text:0042738B                 push    eax
.text:0042738C                 call    sub_428AFE
.text:00427391                 add     esp, 4
.text:00427394                 push    0
.text:00427396                 call    sub_4274B0
.text:0042739B                 add     esp, 4
.text:0042739E
.text:0042739E loc_42739E:                             ; CODE XREF: sub_4265A0+DAFj
.text:0042739E                                         ; sub_4265A0+DC5j
.text:0042739E                 pop     edi
.text:0042739F                 pop     esi
.text:004273A0                 pop     ebp
.text:004273A1                 mov     byte_8F28CC, 1
.text:004273A8                 pop     ebx
.text:004273A9                 add     esp, 0Ch
.text:004273AC                 retn
.text:004273AC sub_4265A0      endp
utils.c

Code: Select all

void bitboard_initialization()
{
	int i, b, piece;
	uint64 O;
	border_legitimate = FALSE;

	for (i = 0; i < 16; i++)
		POSITION.bitboard[i] = 0;
	DYNAMIC->hash_key = DYNAMIC->pawn_hash_key = 0;
	DYNAMIC->material = 0;
	DYNAMIC->static_value = 0;

	for (i = A1; i <= H8; i++)
	{
		if ((piece = SQUARE[i]))
		{
			DYNAMIC->static_value += static_value[piece][i];
			DYNAMIC->hash_key ^= HASH[piece][i];

			if (piece == enum_pawn_white || piece == enum_pawn_black)
				DYNAMIC->pawn_hash_key ^= HASH[piece][i];
			DYNAMIC->material += value_material_[piece];
			bit_fixed(i, POSITION.bitboard[SQUARE[i]]);
		}
	}
	bitboard_occupied_white =
		bitboard_white_king | bitboard_white_queen | bitboard_white_rook | bitboard_white_bishop | bitboard_white_knight
			| bitboard_white_pawn;
	bitboard_occupied_black =
		bitboard_black_king | bitboard_black_queen | bitboard_black_rook | bitboard_black_bishop | bitboard_black_knight
			| bitboard_black_pawn;
	POSITION.occupied_total = bitboard_occupied_white | bitboard_occupied_black;
	POSITION.occupied_left90 = POSITION.occupied_left45 = POSITION.occupied_right45 = 0;
	O = POSITION.occupied_total;

	if (POPCNT(bitboard_white_queen) > 1 || POPCNT(bitboard_black_queen) > 1 || POPCNT(bitboard_white_rook) > 2
		|| POPCNT(bitboard_black_rook) > 2 || POPCNT(bitboard_white_light) > 1 || POPCNT(bitboard_black_light) > 1
		|| POPCNT(bitboard_white_knight) > 2 || POPCNT(bitboard_black_knight) > 2 || POPCNT(bitboard_white_dark) > 1
		|| POPCNT(bitboard_black_dark) > 1)
		DYNAMIC->material |= 0x80000000;

	if (POPCNT(bitboard_white_king) != 1)
		ERROR_pos("king white != 1");

	if (POPCNT(bitboard_black_king) != 1)
		ERROR_pos("king black != 1");

	if (POPCNT(bitboard_white_queen) > 9)
		ERROR_pos("queen white > 9");

	if (POPCNT(bitboard_black_queen) > 9)
		ERROR_pos("queen black > 9");

	if (POPCNT(bitboard_white_rook) > 10)
		ERROR_pos("rook white > 10");

	if (POPCNT(bitboard_black_rook) > 10)
		ERROR_pos("rook black > 10");

	if (POPCNT(bitboard_white_light) > 9)
		ERROR_pos("chiaro white > 9");

	if (POPCNT(bitboard_black_light) > 9)
		ERROR_pos("chiaro black > 9");

	if (POPCNT(bitboard_white_dark) > 9)
		ERROR_pos("dark white > 9");

	if (POPCNT(bitboard_black_dark) > 9)
		ERROR_pos("dark black > 9");

	if (POPCNT(bitboard_white_light | bitboard_white_dark) > 10)
		ERROR_pos("bishop white > 10");

	if (POPCNT(bitboard_black_light | bitboard_black_dark) > 10)
		ERROR_pos("bishop black > 10");

	if (POPCNT(bitboard_white_knight) > 10)
		ERROR_pos("knight white > 10");

	if (POPCNT(bitboard_black_knight) > 10)
		ERROR_pos("knight black > 10");

	if (POPCNT(bitboard_white_pawn) > 8)
		ERROR_pos("pawn white > 8");

	if (POPCNT(bitboard_black_pawn) > 8)
		ERROR_pos("pawn black > 8");

	if (POPCNT(bitboard_occupied_white) > 16)
		ERROR_pos("piece white > 16");

	if (POPCNT(bitboard_occupied_black) > 16)
		ERROR_pos("piece black > 16");

	if ((bitboard_white_pawn | bitboard_black_pawn) & (RANK1 | RANK8))
		ERROR_pos("pawn rank one or eight");

	while (O)
	{
		b = LSB(O);
		bit_free(b, O);
		bit_fixed(left90[b], POSITION.occupied_left90);
		bit_fixed(left45[b], POSITION.occupied_left45);
		bit_fixed(right45[b], POSITION.occupied_right45);
	}
	POSITION.white_king_square = LSB(bitboard_white_king);
	POSITION.black_king_square = LSB(bitboard_black_king);

	if ((castling_white_oo && (POSITION.white_king_square != E1 || !(bitboard_white_rook &square_fixed[H1])))
		|| (castling_white_ooo && (POSITION.white_king_square != E1 || !(bitboard_white_rook &square_fixed[A1])))
			|| (castling_black_oo && (POSITION.black_king_square != E8 || !(bitboard_black_rook &square_fixed[H8])))
			|| (castling_black_ooo && (POSITION.black_king_square != E8 || !(bitboard_black_rook &square_fixed[A8]))))
		ERROR_pos("illegal castling");
	DYNAMIC->hash_key ^= hash_oo[DYNAMIC->castle];

	if (DYNAMIC->en_passant)
		DYNAMIC->hash_key ^= hash_ep[DYNAMIC->en_passant & 7];
	DYNAMIC->pawn_hash_key ^=
		hash_oo[DYNAMIC->castle] ^ PINCH ^ HASH[enum_king_white][POSITION.white_king_square]
			^ HASH[enum_king_black][POSITION.black_king_square];

	if (POSITION.white_to_move)
		DYNAMIC->hash_key ^= hash_move_white;
	call_value_full(0);

	if (POSITION.white_to_move && DYNAMIC->white_attacks & bitboard_black_king)
		ERROR_pos("white captures king");

	if (!POSITION.white_to_move && DYNAMIC->black_attacks & bitboard_white_king)
		ERROR_pos("black captures king");
	border_legitimate = TRUE;
}
*Modified
Well this looks like a attempt from what must be rookie compilers then. Looks to me compilers that cannot figure out how Roberts engine has so much speed and strength are trying to guilt Robert into revealing his secrets. You have the entire Decembrists, all the Immortal compilers ...plus King, Norm, Sentinal and others and NOT one of you guys can match Roberts excellent coding. Sounds to me like its .....I give up.....show me how you done it or i will just accuse you until you are guilted into showing us for us rookies that cannot figure out how you did it. If you guys are calling Robert a liar but cannot match what he has done ...you guys are slapping yourselfs in the face really. Why can no other compiler of Ippolit match Roberts speed of his engine ....in fact cannot really even come close ? What are you boys lacking that Robert has ???? A team of over 12 guys and none of you guys can figure out how to get ANY IPPO engine NEAR the speed Robert has his at nor the strength and without bugs. So if hes just cloned IPPO ....he really making the rest of you guys look like rookies and probably figures you guys for practice need to figure out how to do it on your own ;).......If Robert can do it and its IPPO like you guys claim ...then why cant you guys get your Ivans up to speed???? After all you guys are claiming its a IPPO clone...when you guys can match the speed then lets talk ...until then ...Robert must of done much more then clone IPPO since his engine is far ahead of the rest...seems as simple as that to me.

Regards
BT

Charles
Posts: 71
Joined: Thu Jun 10, 2010 7:41 pm
Real Name: Charles
Contact:

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

Post by Charles » Tue Aug 10, 2010 9:35 pm

BTO7 wrote: Well this looks like a attempt from what must be rookie compilers then. Looks to me compilers that cannot figure out how Roberts engine has so much speed and strength are trying to guilt Robert into revealing his secrets. You have the entire Decembrists, all the Immortal compilers ...plus King, Norm, Sentinal and others and NOT one of you guys can match Roberts excellent coding. Sounds to me like its .....I give up.....show me how you done it or i will just accuse you until you are guilted into showing us for us rookies that cannot figure out how you did it. If you guys are calling Robert a liar but cannot match what he has done ...you guys are slapping yourselfs in the face really. Why can no other compiler of Ippolit match Roberts speed of his engine ....in fact cannot really even come close ? What are you boys lacking that Robert has ???? A team of over 12 guys and none of you guys can figure out how to get ANY IPPO engine NEAR the speed Robert has his at nor the strength and without bugs. So if hes just cloned IPPO ....he really making the rest of you guys look like rookies and probably figures you guys for practice need to figure out how to do it on your own ;).......If Robert can do it and its IPPO like you guys claim ...then why cant you guys get your Ivans up to speed???? After all you guys are claiming its a IPPO clone...when you guys can match the speed then lets talk ...until then ...Robert must of done much more then clone IPPO since his engine is far ahead of the rest...seems as simple as that to me.

Regards
BT
Actually what we cannot figure out is how come de-compiled output of houdini is almost identical to RobboLito ...yet Houdini only used ideas and did not do copy/paste of Ippo code.
That's all. Maybe you should read the posts first.

BTO7
Posts: 101
Joined: Thu Jun 10, 2010 4:21 am

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

Post by BTO7 » Tue Aug 10, 2010 9:47 pm

Charles wrote:
BTO7 wrote: Well this looks like a attempt from what must be rookie compilers then. Looks to me compilers that cannot figure out how Roberts engine has so much speed and strength are trying to guilt Robert into revealing his secrets. You have the entire Decembrists, all the Immortal compilers ...plus King, Norm, Sentinal and others and NOT one of you guys can match Roberts excellent coding. Sounds to me like its .....I give up.....show me how you done it or i will just accuse you until you are guilted into showing us for us rookies that cannot figure out how you did it. If you guys are calling Robert a liar but cannot match what he has done ...you guys are slapping yourselfs in the face really. Why can no other compiler of Ippolit match Roberts speed of his engine ....in fact cannot really even come close ? What are you boys lacking that Robert has ???? A team of over 12 guys and none of you guys can figure out how to get ANY IPPO engine NEAR the speed Robert has his at nor the strength and without bugs. So if hes just cloned IPPO ....he really making the rest of you guys look like rookies and probably figures you guys for practice need to figure out how to do it on your own ;).......If Robert can do it and its IPPO like you guys claim ...then why cant you guys get your Ivans up to speed???? After all you guys are claiming its a IPPO clone...when you guys can match the speed then lets talk ...until then ...Robert must of done much more then clone IPPO since his engine is far ahead of the rest...seems as simple as that to me.

Regards
BT
Actually what we cannot figure out is how come de-compiled output of houdini is almost identical to RobboLito ...yet Houdini only used ideas and did not do copy/paste of Ippo code.
That's all. Maybe you should read the posts first.
Actually I did read the post ....its asking why Houdini did not enter the WCCC...nothing about its origins....and what i cant figure out is if it was copied pasted they why can no other compiler match the speed or strength of Houdini so far ...and with out bugs ? Seems logical its much more then a copy paste job. It for sure seems its a engine that took many different ideas and put them together or how do you figure no other compiler can match its speed ...minus bugs/strength if its the exact same. Unless your just saying the rest of the guys trying are just not as good ? If its identical then there should be no problem for King or any of the rest to duplicate the speed and strength with no bugs right ??? Thats what i cant figure out.....so exact yet so far ahead of everyone else trying??? Seems a bit odd. I take Robert at his word ...this engine is much more then a copy paste job ...very easy to see....thats NOT saying ideas were not used and even some snipits of code used here and there....the final product is better then anything anyone else has made ...so that should say volumes in and of itself.

Regards
BT

User avatar
lmader
Posts: 70
Joined: Thu Jun 10, 2010 3:22 am

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

Post by lmader » Wed Aug 11, 2010 1:29 am

BTO7 wrote:...and what i cant figure out is if it was copied pasted they why can no other compiler match the speed or strength of Houdini so far ...and with out bugs ? Seems logical its much more then a copy paste job. It for sure seems its a engine that took many different ideas and put them together or how do you figure no other compiler can match its speed ...minus bugs/strength if its the exact same. Unless your just saying the rest of the guys trying are just not as good ? If its identical then there should be no problem for King or any of the rest to duplicate the speed and strength with no bugs right ??? Thats what i cant figure out.....so exact yet so far ahead of everyone else trying??? Seems a bit odd. I take Robert at his word ...this engine is much more then a copy paste job ...very easy to see....thats NOT saying ideas were not used and even some snipits of code used here and there....the final product is better then anything anyone else has made ...so that should say volumes in and of itself.

Regards
BT
Crikey. This is really simple:

1) People here work hard on chess engines.
2) When someone uses someones else's code, people believe that proper credit should be given. (If it contains GPL'd code, things are worse.)

That's all. I'll say it again - if Houdini used someone else's code, credit should be given.

Finally, no one is saying that Houdini doesn't contain improvements. It is indeed more than just copy and pasted code. Again, that is not the point. If it contains copy and pasted code, credit should be given.

Do you understand?

BTO7
Posts: 101
Joined: Thu Jun 10, 2010 4:21 am

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

Post by BTO7 » Wed Aug 11, 2010 2:38 am

lmader wrote:
BTO7 wrote:...and what i cant figure out is if it was copied pasted they why can no other compiler match the speed or strength of Houdini so far ...and with out bugs ? Seems logical its much more then a copy paste job. It for sure seems its a engine that took many different ideas and put them together or how do you figure no other compiler can match its speed ...minus bugs/strength if its the exact same. Unless your just saying the rest of the guys trying are just not as good ? If its identical then there should be no problem for King or any of the rest to duplicate the speed and strength with no bugs right ??? Thats what i cant figure out.....so exact yet so far ahead of everyone else trying??? Seems a bit odd. I take Robert at his word ...this engine is much more then a copy paste job ...very easy to see....thats NOT saying ideas were not used and even some snipits of code used here and there....the final product is better then anything anyone else has made ...so that should say volumes in and of itself.

Regards
BT
Crikey. This is really simple:

1) People here work hard on chess engines.
2) When someone uses someones else's code, people believe that proper credit should be given. (If it contains GPL'd code, things are worse.)

That's all. I'll say it again - if Houdini used someone else's code, credit should be given.

Finally, no one is saying that Houdini doesn't contain improvements. It is indeed more than just copy and pasted code. Again, that is not the point. If it contains copy and pasted code, credit should be given.

Do you understand?
OOOOOOOOOOOOOOOOOohhhhh ..... my bad I thought it was about why Houdini is not entered in WCCC ....thanks for clearing it up for me :)

BB+
Posts: 1484
Joined: Thu Jun 10, 2010 4:26 am

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

Post by BB+ » Wed Aug 11, 2010 3:36 am

Even a non-programmer like myself can see that it's a modified Robolito chess engine....I mean you must be a plain idiot to refuse to see the truth....
I actually find KLO's presentation a bit difficult to follow, as there is no explanation on why these kinda similar ASM dumps really are the same.

For instance:

Code: Select all

.text:00424010 var_10          = qword ptr -10h
.text:00424010 var_8           = dword ptr -8
.text:00424010 var_4           = dword ptr -4
.text:00424010                 push    ebp
.text:00424011                 mov     ebp, esp
.text:00424013                 sub     esp, 10h
.text:00424016                 xor     eax, eax
.text:00424018                 push    esi
.text:00424019                 mov     dword ptr qword_780E60, eax
.text:0042401E                 mov     dword ptr qword_780E60+4, eax
.text:00424023                 push    edi
.text:00424024                 mov     byte_5F7500, al
.text:00424029                 mov     ecx, 1Eh
[...]

Code: Select all

.text:004265A0 var_8           = dword ptr -8
.text:004265A0 var_4           = dword ptr -4
.text:004265A0                 sub     esp, 0Ch
.text:004265A3                 push    ebx
.text:004265A4                 push    ebp
.text:004265A5                 push    esi
.text:004265A6                 push    edi
.text:004265A7                 xorpd   xmm0, xmm0
.text:004265AB                 movlpd  qword_585460, xmm0
.text:004265B3                 mov     ecx, 1Eh
.text:004265B8                 mov     esi, offset qword_585460
.text:004265BD                 mov     edi, offset qword_585468
[...]
On the face of it, these are rather different, but I guess after unwinding it, and taking into account the XMM instructions of Houdini, maybe you do end up with the same.

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 » Wed Aug 11, 2010 4:48 am

BB+ wrote:
Even a non-programmer like myself can see that it's a modified Robolito chess engine....I mean you must be a plain idiot to refuse to see the truth....
I actually find KLO's presentation a bit difficult to follow, as there is no explanation on why these kinda similar ASM dumps really are the same.

For instance:

Code: Select all

.text:00424010 var_10          = qword ptr -10h
.text:00424010 var_8           = dword ptr -8
.text:00424010 var_4           = dword ptr -4
.text:00424010                 push    ebp
.text:00424011                 mov     ebp, esp
.text:00424013                 sub     esp, 10h
.text:00424016                 xor     eax, eax
.text:00424018                 push    esi
.text:00424019                 mov     dword ptr qword_780E60, eax
.text:0042401E                 mov     dword ptr qword_780E60+4, eax
.text:00424023                 push    edi
.text:00424024                 mov     byte_5F7500, al
.text:00424029                 mov     ecx, 1Eh
[...]

Code: Select all

.text:004265A0 var_8           = dword ptr -8
.text:004265A0 var_4           = dword ptr -4
.text:004265A0                 sub     esp, 0Ch
.text:004265A3                 push    ebx
.text:004265A4                 push    ebp
.text:004265A5                 push    esi
.text:004265A6                 push    edi
.text:004265A7                 xorpd   xmm0, xmm0
.text:004265AB                 movlpd  qword_585460, xmm0
.text:004265B3                 mov     ecx, 1Eh
.text:004265B8                 mov     esi, offset qword_585460
.text:004265BD                 mov     edi, offset qword_585468
[...]
On the face of it, these are rather different, but I guess after unwinding it, and taking into account the XMM instructions of Houdini, maybe you do end up with the same.
That is exactly correct. Houdini's code is modified and optimized, but essentially you can trace it back to Ippolit/RobboLito source code. Houdini is not a simple copy/paste/modify. I take nothing at all away from Robert as I believe he understands chess programming very well, but I also believe Houdini began as RobboLito, and has been heavily worked on. Saying "taken ideas from" is a gross exaggeration in my view. Disassembler translation below of a small segment:

RobboLito:
qword_780E60[0] = 0i64;
byte_5F7500 = 0;
memcpy(&qword_780E68, qword_780E60, 0x78u);
v1 = dword_73E940;
*(dword_73E940 + 8) = 0;
*(v1 + 12) = 0;
*v1 = 0;
*(v1 + 4) = 0;
*(v1 + 16) = 0;
*(v1 + 20) = 0;
v87 = 1 - byte_780E20;
v86 = 2 - byte_780E20;
v0 = 0;
v85 = 3 - byte_780E20;
do
{
v2 = byte_780E20[v0];
if ( byte_780E20[v0] )
{
v3 = v0 + (v2 << 6);
*(v1 + 20) += dword_77FE20[v3];
*v1 ^= dword_719A80[2 * v3];
*(v1 + 4) ^= dword_719A84[2 * v3];
if ( v2 == 1 || v2 == 9 )
{
*(v1 + 8) ^= dword_719A80[2 * v3];
*(v1 + 12) ^= dword_719A84[2 * v3];
}
*(v1 + 16) += dword_436BC0[v2];


Houdini:
__asm
{
xorpd xmm0, xmm0
movlpd qword_585460, xmm0
}
memcpy(&qword_585468, qword_585460, 0x78u);
*(dword_5854F0 + 8) = 0;
*(dword_5854F0 + 12) = 0;
*dword_5854F0 = 0;
*(dword_5854F0 + 4) = 0;
*(dword_5854F0 + 16) = 0;
byte_8F28CC = 0;
*(dword_5854F0 + 20) = 0;
sub_429D80(byte_585400, -1, 96);
v0 = 0;
do
{
v2 = byte_585380[v0];
if ( byte_585380[v0] )
{
v3 = v0 + (v2 << 6);
*(dword_5854F0 + 20) += dword_931F90[v3];
*dword_5854F0 ^= dword_91C270[2 * v3];
*(dword_5854F0 + 4) ^= dword_91C274[2 * v3];
if ( v2 == 1 || v2 == 9 )
{
v4 = dword_5854F0;
*(v4 + 8) ^= dword_91C270[2 * v3];
*(v4 + 12) ^= dword_91C274[2 * v3];
}
*(dword_5854F0 + 16) += dword_438A08[v2];

P.S. Honestly, I sincerely did not want to get involved with this thread and have wasted enough time already on the issue.
PAWN : Knight >> Bishop >> Rook >>Queen

User avatar
Sean Evans
Posts: 173
Joined: Fri Jun 11, 2010 1:21 am
Real Name: Sean Evans

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

Post by Sean Evans » Sat Aug 21, 2010 7:14 pm

kingliveson wrote:P.S. Honestly, I sincerely did not want to get involved with this thread and have wasted enough time already on the issue.
Yes you do and you are a troll. In addition, stop sends me private messages too!!

User avatar
JcMaTe
Posts: 80
Joined: Thu Jun 10, 2010 11:09 am
Real Name: Julio Cesar

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

Post by JcMaTe » Mon Feb 07, 2011 12:22 am

Code: Select all

Not hunting, just trying to find the truth, which Robert and Houdini are severely lacking! Robert is the biggest computer chess liar on the Internet...PERIOD !

Cordially,

Sean

Do me a favor please sean stop with all your bull shit if you don't have nothing good to write ..... then go head and play your self if you don't like it ... stop visiting us or even go head and kiss vas ass and play and their forum .. sorry Open-chess for this message but I'm getting tired of this Puppet.

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 Feb 08, 2011 10:19 am

Nice bump there JcMaTe :roll:

Post Reply