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.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 sentinelHoudini w32 1_CPUCode: 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
build 2010-05-15
by Robert Houdart*utils.cCode: 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
*ModifiedCode: 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; }
Regards
BT