It is a shame really that it had come to this point. When Houdini was initially released, Robert was asked a direct question whether or not it was an Ippolit derivative. His reply left me a little disappointed because prior to asking that question, the binary had been scanned with a disassembler. Houdini, like RobboLito does not support mpv and outputs similar pv in many positions; there was a post on CCC demonstrating it.
Houdini is a modified and improved RobboLito. Robert's improvement is overshadowed by his lack of honesty. When we have a case of verbatim code -- global function structure, search, eval, values, uci, etc, and yet the continuous insistence of only "taking ideas" is quite immodest. I cannot understand what sort of ego drives one to such a point of no return. The debate is over for me. Below are a couple examples of what you will see throughout Houdini's binary:
RobboLito 0.09 w32
Aug 4 2010 19:40:41
basic windows version by kranium, improved by sentinel
Code: Select all
.text:00425B60 ; =============== S U B R O U T I N E =======================================
.text:00425B60
.text:00425B60
.text:00425B60 sub_425B60 proc near ; CODE XREF: sub_4269A0+2CFp
.text:00425B60
.text:00425B60 arg_0 = dword ptr 4
.text:00425B60 arg_4 = dword ptr 8
.text:00425B60 arg_8 = dword ptr 0Ch
.text:00425B60 arg_C = dword ptr 10h
.text:00425B60 arg_10 = dword ptr 14h
.text:00425B60 arg_14 = dword ptr 18h
.text:00425B60 arg_18 = dword ptr 1Ch
.text:00425B60 arg_1C = dword ptr 20h
.text:00425B60 arg_20 = dword ptr 24h
.text:00425B60 arg_24 = dword ptr 28h
.text:00425B60 arg_28 = dword ptr 2Ch
.text:00425B60 arg_2C = dword ptr 30h
.text:00425B60 arg_30 = dword ptr 34h
.text:00425B60 arg_34 = dword ptr 38h
.text:00425B60
.text:00425B60 mov eax, [esp+arg_24]
.text:00425B64 mov ecx, [esp+arg_20]
.text:00425B68 mov edx, [esp+arg_8]
.text:00425B6C push ebx
.text:00425B6D mov ebx, [esp+4+arg_18]
.text:00425B71 push ebp
.text:00425B72 mov ebp, [esp+8+arg_30]
.text:00425B76 push esi
.text:00425B77 mov esi, [esp+0Ch+arg_34]
.text:00425B7B push edi
.text:00425B7C lea edi, [ecx+eax]
.text:00425B7F mov eax, [esp+10h+arg_14]
.text:00425B83 lea ecx, [eax+ebx*2]
.text:00425B86 mov eax, [esp+10h+arg_4]
.text:00425B8A lea ecx, [eax+ecx*2]
.text:00425B8D lea eax, [ebp+esi*2+0]
.text:00425B91 mov [esp+10h+arg_30], edi
.text:00425B95 lea edi, [edi+eax*2]
.text:00425B98 mov eax, [esp+10h+arg_4]
.text:00425B9C lea eax, [eax+ebx*2]
.text:00425B9F add eax, ebx
.text:00425BA1 add eax, edx
.text:00425BA3 add ecx, edx
.text:00425BA5 lea edx, [eax+eax*2]
.text:00425BA8 mov eax, [esp+10h+arg_14]
.text:00425BAC lea eax, [eax+eax*4]
.text:00425BAF add edx, eax
.text:00425BB1 mov eax, [esp+10h+arg_20]
.text:00425BB5 lea eax, [eax+esi*2]
.text:00425BB8 add eax, esi
.text:00425BBA add eax, [esp+10h+arg_24]
.text:00425BBE mov [esp+10h+arg_24], 0Ah
.text:00425BC6 lea esi, [eax+eax*2]
.text:00425BC9 lea eax, [ebp+ebp*4+0]
.text:00425BCD add esi, eax
.text:00425BCF cmp [esp+10h+arg_0], 0
.text:00425BD4 jnz loc_4260A8
.text:00425BDA cmp ecx, 1
.text:00425BDD jnz short loc_425BE6
.text:00425BDF pop edi
.text:00425BE0 pop esi
.text:00425BE1 pop ebp
.text:00425BE2 xor eax, eax
.text:00425BE4 pop ebx
.text:00425BE5 retn
.text:00425BE6 ; ---------------------------------------------------------------------------
.text:00425BE6
.text:00425BE6 loc_425BE6: ; CODE XREF: sub_425B60+7Dj
.text:00425BE6 mov eax, 2
.text:00425BEB cmp ecx, eax
.text:00425BED jnz short loc_425C59
.text:00425BEF test edi, edi
.text:00425BF1 jnz short loc_425C10
.text:00425BF3 cmp [esp+10h+arg_4], eax
.text:00425BF7 jnz loc_425CFC
.text:00425BFD xor eax, eax
.text:00425BFF cmp [esp+10h+arg_1C], 1
.text:00425C04 pop edi
.text:00425C05 setl al
.text:00425C08 pop esi
.text:00425C09 pop ebp
.text:00425C0A pop ebx
.text:00425C0B dec eax
.text:00425C0C and eax, 3
.text:00425C0F retn
.text:00425C10 ; ---------------------------------------------------------------------------
.text:00425C10
.text:00425C10 loc_425C10: ; CODE XREF: sub_425B60+91j
.text:00425C10 cmp edi, 1
.text:00425C13 jnz short loc_425C47
.text:00425C15 cmp [esp+10h+arg_8], 2
.text:00425C1A mov ecx, edi
.text:00425C1C mov eax, ecx
.text:00425C1E jnz short loc_425C29
.text:00425C20 cmp [esp+10h+arg_20], ecx
.text:00425C24 jnz short loc_425C29
.text:00425C26 lea eax, [edi+7]
.text:00425C29
.text:00425C29 loc_425C29: ; CODE XREF: sub_425B60+BEj
.text:00425C29 ; sub_425B60+C4j
.text:00425C29 cmp [esp+10h+arg_14], ecx
.text:00425C2D jnz loc_425D00
.text:00425C33 cmp [esp+10h+arg_20], ecx
.text:00425C37 jnz loc_425D00
.text:00425C3D
.text:00425C3D loc_425C3D: ; CODE XREF: sub_425B60+244j
.text:00425C3D ; sub_425B60+445j
.text:00425C3D pop edi
.text:00425C3E pop esi
.text:00425C3F pop ebp
.text:00425C40 mov eax, 2
.text:00425C45 pop ebx
.text:00425C46 retn
.text:00425C47 ; ---------------------------------------------------------------------------
.text:00425C47
.text:00425C47 loc_425C47: ; CODE XREF: sub_425B60+B3j
.text:00425C47 cmp edi, eax
.text:00425C49 jnz loc_425CFC
.text:00425C4F
.text:00425C4F loc_425C4F: ; CODE XREF: sub_425B60+479j
.text:00425C4F pop edi
.text:00425C50 pop esi
.text:00425C51 pop ebp
.text:00425C52 mov eax, 1
.text:00425C57 pop ebx
.text:00425C58 retn
.text:00425C59 ; ---------------------------------------------------------------------------
.text:00425C59
.text:00425C59 loc_425C59: ; CODE XREF: sub_425B60+8Dj
.text:00425C59 cmp ecx, 3
.text:00425C5C jnz loc_425D45
.text:00425C62 mov ecx, [esp+10h+arg_14]
.text:00425C66 cmp ecx, 1
.text:00425C69 jnz loc_425D05
.text:00425C6F cmp edi, eax
.text:00425C71 jnz loc_425CF7
.text:00425C77 cmp ebp, ecx
.text:00425C79 jnz short loc_425C98
.text:00425C7B mov eax, ecx
.text:00425C7D cmp [esp+10h+arg_4], ecx
.text:00425C81 jz short loc_425C87
.text:00425C83 mov eax, [esp+10h+arg_24]
.text:00425C87
.text:00425C87 loc_425C87: ; CODE XREF: sub_425B60+121j
.text:00425C87 cmp [esp+10h+arg_8], 1
.text:00425C8C jnz short loc_425D00
.text:00425C8E pop edi
.text:00425C8F pop esi
.text:00425C90 pop ebp
.text:00425C91 mov eax, 1
.text:00425C96 pop ebx
.text:00425C97 retn
.text:00425C98 ; ---------------------------------------------------------------------------
.text:00425C98
.text:00425C98 loc_425C98: ; CODE XREF: sub_425B60+119j
.text:00425C98 test ebp, ebp
.text:00425C9A jnz short loc_425CFC
.text:00425C9C mov edx, 1
.text:00425CA1 cmp [esp+10h+arg_8], edx
.text:00425CA5 jnz short loc_425CB7
.text:00425CA7 cmp [esp+10h+arg_20], eax
.text:00425CAB jnz short loc_425CB7
.text:00425CAD
.text:00425CAD loc_425CAD: ; CODE XREF: sub_425B60+3CFj
.text:00425CAD pop edi
.text:00425CAE pop esi
.text:00425CAF pop ebp
.text:00425CB0 mov eax, 6
.text:00425CB5 pop ebx
.text:00425CB6 retn
.text:00425CB7 ; ---------------------------------------------------------------------------
.text:00425CB7
.text:00425CB7 loc_425CB7: ; CODE XREF: sub_425B60+145j
.text:00425CB7 ; sub_425B60+14Bj
.text:00425CB7 cmp [esp+10h+arg_20], edx
.text:00425CBB jnz short loc_425D00
.text:00425CBD mov ecx, [esp+10h+arg_C]
.text:00425CC1 cmp ecx, edx
.text:00425CC3 jnz short loc_425CCB
.text:00425CC5 cmp [esp+10h+arg_28], edx
.text:00425CC9 jz short loc_425CD7
.text:00425CCB
.text:00425CCB loc_425CCB: ; CODE XREF: sub_425B60+163j
.text:00425CCB cmp [esp+10h+arg_10], edx
.text:00425CCF jnz short loc_425CE3
.text:00425CD1 cmp [esp+10h+arg_2C], edx
.text:00425CD5 jnz short loc_425CDD
.text:00425CD7
.text:00425CD7 loc_425CD7: ; CODE XREF: sub_425B60+169j
.text:00425CD7 cmp [esp+10h+arg_10], edx
.text:00425CDB jnz short loc_425CE3
.text:00425CDD
.text:00425CDD loc_425CDD: ; CODE XREF: sub_425B60+175j
.text:00425CDD cmp [esp+10h+arg_28], edx
.text:00425CE1 jz short loc_425CED
.text:00425CE3
.text:00425CE3 loc_425CE3: ; CODE XREF: sub_425B60+16Fj
.text:00425CE3 ; sub_425B60+17Bj
.text:00425CE3 cmp ecx, edx
.text:00425CE5 jnz short loc_425D00
.text:00425CE7 cmp [esp+10h+arg_2C], edx
.text:00425CEB jnz short loc_425D00
.text:00425CED
.text:00425CED loc_425CED: ; CODE XREF: sub_425B60+181j
.text:00425CED pop edi
.text:00425CEE pop esi
.text:00425CEF pop ebp
.text:00425CF0 mov eax, 7
.text:00425CF5 pop ebx
.text:00425CF6 retn
.text:00425CF7 ; ---------------------------------------------------------------------------
.text:00425CF7
.text:00425CF7 loc_425CF7: ; CODE XREF: sub_425B60+111j
.text:00425CF7 ; sub_425B60+1ABj
.text:00425CF7 cmp edi, 3
.text:00425CFA jz short loc_425D00
.text:00425CFC
.text:00425CFC loc_425CFC: ; CODE XREF: sub_425B60+97j
.text:00425CFC ; sub_425B60+E9j ...
.text:00425CFC mov eax, [esp+10h+arg_24]
.text:00425D00
.text:00425D00 loc_425D00: ; CODE XREF: sub_425B60+CDj
.text:00425D00 ; sub_425B60+D7j ...
.text:00425D00 pop edi
.text:00425D01 pop esi
.text:00425D02 pop ebp
.text:00425D03 pop ebx
.text:00425D04 retn
.text:00425D05 ; ---------------------------------------------------------------------------
.text:00425D05
.text:00425D05 loc_425D05: ; CODE XREF: sub_425B60+109j
.text:00425D05 test ecx, ecx
.text:00425D07 jnz short loc_425CFC
.text:00425D09 cmp edi, eax
.text:00425D0B jnz short loc_425CF7
.text:00425D0D cmp ebp, 1
.text:00425D10 jnz short loc_425D2D
.text:00425D12 cmp [esp+10h+arg_4], eax
.text:00425D16 jz short loc_425D1C
.text:00425D18 mov eax, [esp+10h+arg_24]
.text:00425D1C
.text:00425D1C loc_425D1C: ; CODE XREF: sub_425B60+1B6j
.text:00425D1C cmp [esp+10h+arg_8], 2
.text:00425D21 jnz short loc_425D00
.text:00425D23 pop edi
.text:00425D24 pop esi
.text:00425D25 pop ebp
.text:00425D26 mov eax, 7
.text:00425D2B pop ebx
.text:00425D2C retn
.text:00425D2D ; ---------------------------------------------------------------------------
.text:00425D2D
.text:00425D2D loc_425D2D: ; CODE XREF: sub_425B60+1B0j
.text:00425D2D test ebp, ebp
.text:00425D2F jnz short loc_425CFC
.text:00425D31 cmp [esp+10h+arg_8], eax
.text:00425D35 jnz short loc_425D00
.text:00425D37 cmp [esp+10h+arg_20], eax
.text:00425D3B jnz short loc_425D00
.text:00425D3D pop edi
.text:00425D3E pop esi
.text:00425D3F lea eax, [ebp+4]
.text:00425D42 pop ebp
.text:00425D43 pop ebx
.text:00425D44 retn
.text:00425D45 ; ---------------------------------------------------------------------------
.text:00425D45
.text:00425D45 loc_425D45: ; CODE XREF: sub_425B60+FCj
.text:00425D45 cmp ecx, 4
.text:00425D48 jnz loc_425E2A
.text:00425D4E test ebx, ebx
.text:00425D50 jz short loc_425D80
.text:00425D52 cmp edi, eax
.text:00425D54 jnz short loc_425D71
.text:00425D56 mov ecx, [esp+10h+arg_20]
.text:00425D5A cmp ecx, eax
.text:00425D5C jz short loc_425D84
.text:00425D5E cmp ecx, 1
.text:00425D61 jnz short loc_425D68
.text:00425D63 lea eax, [ecx+7]
.text:00425D66 jmp short loc_425D84
.text:00425D68 ; ---------------------------------------------------------------------------
.text:00425D68
.text:00425D68 loc_425D68: ; CODE XREF: sub_425B60+201j
.text:00425D68 test ecx, ecx
.text:00425D6A jnz short loc_425D80
.text:00425D6C lea eax, [ecx+7]
.text:00425D6F jmp short loc_425D84
.text:00425D71 ; ---------------------------------------------------------------------------
.text:00425D71
.text:00425D71 loc_425D71: ; CODE XREF: sub_425B60+1F4j
.text:00425D71 mov eax, 1
.text:00425D76 cmp edi, 3
.text:00425D79 jz short loc_425D84
.text:00425D7B cmp edi, 4
.text:00425D7E jz short loc_425D84
.text:00425D80
.text:00425D80 loc_425D80: ; CODE XREF: sub_425B60+1F0j
.text:00425D80 ; sub_425B60+20Aj
.text:00425D80 mov eax, [esp+10h+arg_24]
.text:00425D84
.text:00425D84 loc_425D84: ; CODE XREF: sub_425B60+1FCj
.text:00425D84 ; sub_425B60+206j ...
.text:00425D84 mov ecx, [esp+10h+arg_14]
.text:00425D88 cmp ecx, 2
.text:00425D8B jnz short loc_425DBB
.text:00425D8D cmp edi, ecx
.text:00425D8F jnz short loc_425DA1
.text:00425D91 test ebp, ebp
.text:00425D93 jnz loc_425D00
.text:00425D99 pop edi
.text:00425D9A pop esi
.text:00425D9B pop ebp
.text:00425D9C lea eax, [ecx+5]
.text:00425D9F pop ebx
.text:00425DA0 retn
.text:00425DA1 ; ---------------------------------------------------------------------------
.text:00425DA1
.text:00425DA1 loc_425DA1: ; CODE XREF: sub_425B60+22Fj
.text:00425DA1 cmp edi, 3
.text:00425DA4 jz loc_425C3D
.text:00425DAA cmp edi, 4
.text:00425DAD jnz loc_425D00
.text:00425DB3 lea eax, [edi-3]
.text:00425DB6 pop edi
.text:00425DB7 pop esi
.text:00425DB8 pop ebp
.text:00425DB9 pop ebx
.text:00425DBA retn
.text:00425DBB ; ---------------------------------------------------------------------------
.text:00425DBB
.text:00425DBB loc_425DBB: ; CODE XREF: sub_425B60+22Bj
.text:00425DBB cmp ecx, 1
.text:00425DBE jnz short loc_425DEE
.text:00425DC0 cmp edi, 3
.text:00425DC3 jnz short loc_425DDD
.text:00425DC5 cmp ebp, ecx
.text:00425DC7 jz loc_425F3D
.text:00425DCD
.text:00425DCD loc_425DCD: ; CODE XREF: sub_425B60+2A6j
.text:00425DCD test ebp, ebp
.text:00425DCF jnz loc_425D00
.text:00425DD5 pop edi
.text:00425DD6 pop esi
.text:00425DD7 lea eax, [ebp+2]
.text:00425DDA pop ebp
.text:00425DDB pop ebx
.text:00425DDC retn
.text:00425DDD ; ---------------------------------------------------------------------------
.text:00425DDD
.text:00425DDD loc_425DDD: ; CODE XREF: sub_425B60+263j
.text:00425DDD cmp edi, 4
.text:00425DE0 jnz loc_425D00
.text:00425DE6 lea eax, [edi-2]
.text:00425DE9 pop edi
.text:00425DEA pop esi
.text:00425DEB pop ebp
.text:00425DEC pop ebx
.text:00425DED retn
.text:00425DEE ; ---------------------------------------------------------------------------
.text:00425DEE
.text:00425DEE loc_425DEE: ; CODE XREF: sub_425B60+25Ej
.text:00425DEE test ecx, ecx
.text:00425DF0 jnz loc_425D00
.text:00425DF6 test ebx, ebx
.text:00425DF8 jnz loc_425D00
.text:00425DFE cmp edi, 3
.text:00425E01 jnz short loc_425E10
.text:00425E03 cmp ebp, 1
.text:00425E06 jnz short loc_425DCD
.text:00425E08 pop edi
.text:00425E09 pop esi
.text:00425E0A pop ebp
.text:00425E0B lea eax, [ecx+4]
.text:00425E0E pop ebx
.text:00425E0F retn
.text:00425E10 ; ---------------------------------------------------------------------------
.text:00425E10
.text:00425E10 loc_425E10: ; CODE XREF: sub_425B60+2A1j
.text:00425E10 cmp edi, 4
.text:00425E13 jnz loc_425D00
.text:00425E19 mov eax, [esp+10h+arg_34]
.text:00425E1D neg eax
.text:00425E1F pop edi
.text:00425E20 sbb eax, eax
.text:00425E22 pop esi
.text:00425E23 and eax, 7
.text:00425E26 pop ebp
.text:00425E27 inc eax
.text:00425E28 pop ebx
.text:00425E29 retn
.text:00425E2A ; ---------------------------------------------------------------------------
.text:00425E2A
.text:00425E2A loc_425E2A: ; CODE XREF: sub_425B60+1E8j
.text:00425E2A cmp ecx, 5
.text:00425E2D jnz loc_425F00
.text:00425E33 test ebx, ebx
.text:00425E35 jz short loc_425E40
.text:00425E37 cmp edi, 4
.text:00425E3A jz short loc_425E6B
.text:00425E3C cmp edi, ecx
.text:00425E3E jz short loc_425E89
.text:00425E40
.text:00425E40 loc_425E40: ; CODE XREF: sub_425B60+2D5j
.text:00425E40 mov eax, [esp+10h+arg_24]
.text:00425E44
.text:00425E44 loc_425E44: ; CODE XREF: sub_425B60+30Dj
.text:00425E44 ; sub_425B60+320j ...
.text:00425E44 mov ecx, [esp+10h+arg_14]
.text:00425E48 mov edx, 1
.text:00425E4D cmp ecx, edx
.text:00425E4F jnz short loc_425EC1
.text:00425E51 cmp edi, 4
.text:00425E54 jnz short loc_425EB0
.text:00425E56 mov ecx, [esp+10h+arg_34]
.text:00425E5A test ecx, ecx
.text:00425E5C jz short loc_425E61
.text:00425E5E lea eax, [edx+8]
.text:00425E61
.text:00425E61 loc_425E61: ; CODE XREF: sub_425B60+2FCj
.text:00425E61 cmp ebp, 2
.text:00425E64 jnz short loc_425E90
.text:00425E66 lea eax, [ebp+5]
.text:00425E69 jmp short loc_425E99
.text:00425E6B ; ---------------------------------------------------------------------------
.text:00425E6B
.text:00425E6B loc_425E6B: ; CODE XREF: sub_425B60+2DAj
.text:00425E6B cmp ebp, eax
.text:00425E6D jnz short loc_425E44
.text:00425E6F cmp [esp+10h+arg_4], 0
.text:00425E74 jz short loc_425E7B
.text:00425E76 mov eax, 3
.text:00425E7B
.text:00425E7B loc_425E7B: ; CODE XREF: sub_425B60+314j
.text:00425E7B cmp [esp+10h+arg_8], 0
.text:00425E80 jz short loc_425E44
.text:00425E82 mov eax, 7
.text:00425E87 jmp short loc_425E44
.text:00425E89 ; ---------------------------------------------------------------------------
.text:00425E89
.text:00425E89 loc_425E89: ; CODE XREF: sub_425B60+2DEj
.text:00425E89 mov eax, 1
.text:00425E8E jmp short loc_425E44
.text:00425E90 ; ---------------------------------------------------------------------------
.text:00425E90
.text:00425E90 loc_425E90: ; CODE XREF: sub_425B60+304j
.text:00425E90 cmp ebp, edx
.text:00425E92 jnz short loc_425E99
.text:00425E94
.text:00425E94 loc_425E94: ; CODE XREF: sub_425B60+38Ej
.text:00425E94 mov eax, 3
.text:00425E99
.text:00425E99 loc_425E99: ; CODE XREF: sub_425B60+309j
.text:00425E99 ; sub_425B60+332j ...
.text:00425E99 test ecx, ecx
.text:00425E9B jnz loc_425D00
.text:00425EA1 test ebp, ebp
.text:00425EA3
.text:00425EA3 loc_425EA3: ; CODE XREF: sub_425B60+39Ej
.text:00425EA3 jnz loc_425D00
.text:00425EA9 pop edi
.text:00425EAA pop esi
.text:00425EAB pop ebp
.text:00425EAC mov eax, edx
.text:00425EAE pop ebx
.text:00425EAF retn
.text:00425EB0 ; ---------------------------------------------------------------------------
.text:00425EB0
.text:00425EB0 loc_425EB0: ; CODE XREF: sub_425B60+2F4j
.text:00425EB0 cmp edi, 5
.text:00425EB3 jnz loc_425D00
.text:00425EB9 lea eax, [edi-3]
.text:00425EBC pop edi
.text:00425EBD pop esi
.text:00425EBE pop ebp
.text:00425EBF pop ebx
.text:00425EC0 retn
.text:00425EC1 ; ---------------------------------------------------------------------------
.text:00425EC1
.text:00425EC1 loc_425EC1: ; CODE XREF: sub_425B60+2EFj
.text:00425EC1 cmp ecx, 2
.text:00425EC4 jnz loc_425D00
.text:00425ECA cmp edi, 4
.text:00425ECD jnz short loc_425EFB
.text:00425ECF mov ecx, [esp+10h+arg_34]
.text:00425ED3 test ecx, ecx
.text:00425ED5 jz short loc_425EEB
.text:00425ED7 cmp [esp+10h+arg_8], edx
.text:00425EDB jnz short loc_425EE0
.text:00425EDD lea eax, [edi+4]
.text:00425EE0
.text:00425EE0 loc_425EE0: ; CODE XREF: sub_425B60+37Bj
.text:00425EE0 cmp [esp+10h+arg_4], edx
.text:00425EE4 jnz short loc_425EEB
.text:00425EE6 mov eax, 7
.text:00425EEB
.text:00425EEB loc_425EEB: ; CODE XREF: sub_425B60+375j
.text:00425EEB ; sub_425B60+384j
.text:00425EEB cmp ebp, 2
.text:00425EEE jz short loc_425E94
.text:00425EF0 cmp ebp, edx
.text:00425EF2 jnz short loc_425E99
.text:00425EF4 mov eax, 2
.text:00425EF9 jmp short loc_425E99
.text:00425EFB ; ---------------------------------------------------------------------------
.text:00425EFB
.text:00425EFB loc_425EFB: ; CODE XREF: sub_425B60+36Dj
.text:00425EFB cmp edi, 5
.text:00425EFE jmp short loc_425EA3
.text:00425F00 ; ---------------------------------------------------------------------------
.text:00425F00
.text:00425F00 loc_425F00: ; CODE XREF: sub_425B60+2CDj
.text:00425F00 cmp ecx, 6
.text:00425F03 jnz loc_426060
.text:00425F09 test ebx, ebx
.text:00425F0B jz loc_425FBB
.text:00425F11 cmp [esp+10h+arg_14], 0
.text:00425F16 jz short loc_425F72
.text:00425F18 cmp edi, 4
.text:00425F1B jnz short loc_425F47
.text:00425F1D cmp [esp+10h+arg_34], 0
.text:00425F22 jnz short loc_425F2C
.text:00425F24 test ebp, ebp
.text:00425F26 jz loc_425D00
.text:00425F2C
.text:00425F2C loc_425F2C: ; CODE XREF: sub_425B60+3C2j
.text:00425F2C cmp ebp, 1
.text:00425F2F jz loc_425CAD
.text:00425F35 cmp ebp, eax
.text:00425F37 jnz loc_425CFC
.text:00425F3D
.text:00425F3D loc_425F3D: ; CODE XREF: sub_425B60+267j
.text:00425F3D ; sub_425B60+4BFj ...
.text:00425F3D pop edi
.text:00425F3E pop esi
.text:00425F3F pop ebp
.text:00425F40 mov eax, 3
.text:00425F45 pop ebx
.text:00425F46 retn
.text:00425F47 ; ---------------------------------------------------------------------------
.text:00425F47
.text:00425F47 loc_425F47: ; CODE XREF: sub_425B60+3BBj
.text:00425F47 cmp edi, 5
.text:00425F4A jnz loc_425FEF
.text:00425F50 cmp [esp+10h+arg_34], 0
.text:00425F55 jz short loc_425F5C
.text:00425F57 lea eax, [edi-4]
.text:00425F5A jmp short loc_425F60
.text:00425F5C ; ---------------------------------------------------------------------------
.text:00425F5C
.text:00425F5C loc_425F5C: ; CODE XREF: sub_425B60+3F5j
.text:00425F5C mov eax, [esp+10h+arg_24]
.text:00425F60
.text:00425F60 loc_425F60: ; CODE XREF: sub_425B60+3FAj
.text:00425F60 test ebp, ebp
.text:00425F62 jz loc_425D00
.text:00425F68 pop edi
.text:00425F69 pop esi
.text:00425F6A pop ebp
.text:00425F6B mov eax, 1
.text:00425F70 pop ebx
.text:00425F71 retn
.text:00425F72 ; ---------------------------------------------------------------------------
.text:00425F72
.text:00425F72 loc_425F72: ; CODE XREF: sub_425B60+3B6j
.text:00425F72 cmp edi, 4
.text:00425F75 jnz short loc_425F92
.text:00425F77 cmp [esp+10h+arg_34], 0
.text:00425F7C jnz loc_425CFC
.text:00425F82 test ebp, ebp
.text:00425F84 jnz loc_425CFC
.text:00425F8A lea eax, [edi+1]
.text:00425F8D pop edi
.text:00425F8E pop esi
.text:00425F8F pop ebp
.text:00425F90 pop ebx
.text:00425F91 retn
.text:00425F92 ; ---------------------------------------------------------------------------
.text:00425F92
.text:00425F92 loc_425F92: ; CODE XREF: sub_425B60+415j
.text:00425F92 cmp edi, 5
.text:00425F95 jnz short loc_425FEF
.text:00425F97 cmp [esp+10h+arg_34], 0
.text:00425F9C jnz short loc_425FA2
.text:00425F9E mov eax, [esp+10h+arg_24]
.text:00425FA2
.text:00425FA2 loc_425FA2: ; CODE XREF: sub_425B60+43Cj
.text:00425FA2 cmp ebp, 2
.text:00425FA5 jz loc_425C3D
.text:00425FAB cmp ebp, 1
.text:00425FAE jnz loc_425D00
.text:00425FB4 pop edi
.text:00425FB5 pop esi
.text:00425FB6 mov eax, ebp
.text:00425FB8 pop ebp
.text:00425FB9 pop ebx
.text:00425FBA retn
.text:00425FBB ; ---------------------------------------------------------------------------
.text:00425FBB
.text:00425FBB loc_425FBB: ; CODE XREF: sub_425B60+3ABj
.text:00425FBB mov ecx, [esp+10h+arg_14]
.text:00425FBF cmp ecx, eax
.text:00425FC1 jnz short loc_426000
.text:00425FC3 cmp edi, 5
.text:00425FC6 jnz short loc_425FEF
.text:00425FC8 cmp [esp+10h+arg_34], 0
.text:00425FCD lea eax, [edi+2]
.text:00425FD0 jnz short loc_425FD6
.text:00425FD2 mov eax, [esp+10h+arg_24]
.text:00425FD6
.text:00425FD6 loc_425FD6: ; CODE XREF: sub_425B60+470j
.text:00425FD6 cmp ebp, 1
.text:00425FD9 jz loc_425C4F
.text:00425FDF cmp ebp, 2
.text:00425FE2 jnz loc_425D00
.text:00425FE8 pop edi
.text:00425FE9 pop esi
.text:00425FEA mov eax, ebp
.text:00425FEC pop ebp
.text:00425FED pop ebx
.text:00425FEE retn
.text:00425FEF ; ---------------------------------------------------------------------------
.text:00425FEF
.text:00425FEF loc_425FEF: ; CODE XREF: sub_425B60+3EAj
.text:00425FEF ; sub_425B60+435j ...
.text:00425FEF cmp edi, 6
.text:00425FF2 jnz loc_425CFC
.text:00425FF8 lea eax, [edi-5]
.text:00425FFB pop edi
.text:00425FFC pop esi
.text:00425FFD pop ebp
.text:00425FFE pop ebx
.text:00425FFF retn
.text:00426000 ; ---------------------------------------------------------------------------
.text:00426000
.text:00426000 loc_426000: ; CODE XREF: sub_425B60+461j
.text:00426000 cmp ecx, 1
.text:00426003 jnz loc_425CFC
.text:00426009 cmp edi, 5
.text:0042600C jnz short loc_426036
.text:0042600E cmp [esp+10h+arg_34], 0
.text:00426013 lea eax, [ecx+8]
.text:00426016 jnz short loc_42601C
.text:00426018 mov eax, [esp+10h+arg_24]
.text:0042601C
.text:0042601C loc_42601C: ; CODE XREF: sub_425B60+4B6j
.text:0042601C cmp ebp, 2
.text:0042601F jz loc_425F3D
.text:00426025 cmp ebp, 1
.text:00426028 jnz loc_425D00
.text:0042602E pop edi
.text:0042602F pop esi
.text:00426030 lea eax, [ebp+1]
.text:00426033 pop ebp
.text:00426034 pop ebx
.text:00426035 retn
.text:00426036 ; ---------------------------------------------------------------------------
.text:00426036
.text:00426036 loc_426036: ; CODE XREF: sub_425B60+4ACj
.text:00426036 cmp edi, 6
.text:00426039 jnz loc_425CFC
.text:0042603F cmp [esp+10h+arg_34], 0
.text:00426044 lea eax, [edi-5]
.text:00426047 jz loc_425D00
.text:0042604D lea eax, [edi-4]
.text:00426050 test ebp, ebp
.text:00426052 jz loc_425D00
.text:00426058 lea eax, [edi-2]
.text:0042605B pop edi
.text:0042605C pop esi
.text:0042605D pop ebp
.text:0042605E pop ebx
.text:0042605F retn
.text:00426060 ; ---------------------------------------------------------------------------
.text:00426060
.text:00426060 loc_426060: ; CODE XREF: sub_425B60+3A3j
.text:00426060 cmp ecx, 7
.text:00426063 jl loc_425CFC
.text:00426069 lea ecx, [esi+4]
.text:0042606C cmp edx, ecx
.text:0042606E mov eax, 9
.text:00426073 jg short loc_426080
.text:00426075 mov eax, [esp+10h+arg_24]
.text:00426079 jnz short loc_426080
.text:0042607B mov eax, 7
.text:00426080
.text:00426080 loc_426080: ; CODE XREF: sub_425B60+513j
.text:00426080 ; sub_425B60+519j
.text:00426080 lea ecx, [esi+3]
.text:00426083 cmp edx, ecx
.text:00426085 jnz short loc_42608C
.text:00426087 mov eax, 4
.text:0042608C
.text:0042608C loc_42608C: ; CODE XREF: sub_425B60+525j
.text:0042608C add esi, 2
.text:0042608F cmp edx, esi
.text:00426091 jnz short loc_426098
.text:00426093 mov eax, 2
.text:00426098
.text:00426098 loc_426098: ; CODE XREF: sub_425B60+531j
.text:00426098 jge loc_425D00
.text:0042609E pop edi
.text:0042609F pop esi
.text:004260A0 pop ebp
.text:004260A1 mov eax, 1
.text:004260A6 pop ebx
.text:004260A7 retn
.text:004260A8 ; ---------------------------------------------------------------------------
.text:004260A8
.text:004260A8 loc_4260A8: ; CODE XREF: sub_425B60+74j
.text:004260A8 mov esi, 1
.text:004260AD cmp [esp+10h+arg_0], esi
.text:004260B1 jnz loc_425CFC
.text:004260B7 cmp edi, esi
.text:004260B9 jnz short loc_4260F9
.text:004260BB cmp ecx, esi
.text:004260BD jz loc_425F3D
.text:004260C3 cmp ecx, 2
.text:004260C6 jnz loc_425CFC
.text:004260CC cmp [esp+10h+arg_4], ecx
.text:004260D0 jnz short loc_4260E1
.text:004260D2 xor eax, eax
.text:004260D4 cmp [esp+10h+arg_1C], eax
.text:004260D8 setnz al
.text:004260DB lea eax, [eax+eax+3]
.text:004260DF jmp short loc_4260E5
.text:004260E1 ; ---------------------------------------------------------------------------
.text:004260E1
.text:004260E1 loc_4260E1: ; CODE XREF: sub_425B60+570j
.text:004260E1 mov eax, [esp+10h+arg_24]
.text:004260E5
.text:004260E5 loc_4260E5: ; CODE XREF: sub_425B60+57Fj
.text:004260E5 cmp [esp+10h+arg_14], esi
.text:004260E9 jnz loc_425D00
.text:004260EF pop edi
.text:004260F0 pop esi
.text:004260F1 pop ebp
.text:004260F2 mov eax, 7
.text:004260F7 pop ebx
.text:004260F8 retn
.text:004260F9 ; ---------------------------------------------------------------------------
.text:004260F9
.text:004260F9 loc_4260F9: ; CODE XREF: sub_425B60+559j
.text:004260F9 cmp edi, 2
.text:004260FC jnz short loc_426135
.text:004260FE cmp ebp, esi
.text:00426100 jnz short loc_42611C
.text:00426102 cmp ecx, edi
.text:00426104 jnz loc_425CFC
.text:0042610A cmp [esp+10h+arg_14], esi
.text:0042610E jnz loc_425CFC
.text:00426114 lea eax, [edi+6]
.text:00426117 pop edi
.text:00426118 pop esi
.text:00426119 pop ebp
.text:0042611A pop ebx
.text:0042611B retn
.text:0042611C ; ---------------------------------------------------------------------------
.text:0042611C
.text:0042611C loc_42611C: ; CODE XREF: sub_425B60+5A0j
.text:0042611C test ebp, ebp
.text:0042611E jnz loc_425CFC
.text:00426124 cmp ecx, 2
.text:00426127 jnz loc_425CFC
.text:0042612D pop edi
.text:0042612E pop esi
.text:0042612F lea eax, [ebp+4]
.text:00426132 pop ebp
.text:00426133 pop ebx
.text:00426134 retn
.text:00426135 ; ---------------------------------------------------------------------------
.text:00426135
.text:00426135 loc_426135: ; CODE XREF: sub_425B60+59Cj
.text:00426135 cmp edi, 3
.text:00426138 jl short loc_42615C
.text:0042613A mov edx, [esp+10h+arg_30]
.text:0042613E test edx, edx
.text:00426140 jle short loc_42614B
.text:00426142 mov eax, 3
.text:00426147 cmp ecx, edi
.text:00426149 jz short loc_42614F
.text:0042614B
.text:0042614B loc_42614B: ; CODE XREF: sub_425B60+5E0j
.text:0042614B mov eax, [esp+10h+arg_24]
.text:0042614F
.text:0042614F loc_42614F: ; CODE XREF: sub_425B60+5E9j
.text:0042614F test edx, edx
.text:00426151 jnz short loc_426160
.text:00426153 cmp ecx, edi
.text:00426155 jnz short loc_426160
.text:00426157 lea eax, [edx+5]
.text:0042615A jmp short loc_426160
.text:0042615C ; ---------------------------------------------------------------------------
.text:0042615C
.text:0042615C loc_42615C: ; CODE XREF: sub_425B60+5D8j
.text:0042615C mov eax, [esp+10h+arg_24]
.text:00426160
.text:00426160 loc_426160: ; CODE XREF: sub_425B60+5F1j
.text:00426160 ; sub_425B60+5F5j ...
.text:00426160 cmp edi, 4
.text:00426163 jnz loc_425D00
.text:00426169 cmp [esp+10h+arg_34], esi
.text:0042616D jnz loc_425D00
.text:00426173 cmp ecx, edi
.text:00426175 jnz loc_425D00
.text:0042617B lea eax, [edi+3]
.text:0042617E pop edi
.text:0042617F pop esi
.text:00426180 pop ebp
.text:00426181 pop ebx
.text:00426182 retn
.text:00426182 sub_425B60 endp
Houdini w32 1_CPU
build 2010-05-15
by Robert Houdart
Code: Select all
.text:00427B30 ; =============== S U B R O U T I N E =======================================
.text:00427B30
.text:00427B30
.text:00427B30 sub_427B30 proc near ; CODE XREF: sub_428340:loc_428611p
.text:00427B30
.text:00427B30 arg_0 = dword ptr 4
.text:00427B30 arg_4 = dword ptr 8
.text:00427B30 arg_8 = dword ptr 0Ch
.text:00427B30 arg_C = dword ptr 10h
.text:00427B30 arg_10 = dword ptr 14h
.text:00427B30 arg_14 = dword ptr 18h
.text:00427B30 arg_18 = dword ptr 1Ch
.text:00427B30 arg_1C = dword ptr 20h
.text:00427B30 arg_20 = dword ptr 24h
.text:00427B30 arg_24 = dword ptr 28h
.text:00427B30 arg_28 = dword ptr 2Ch
.text:00427B30 arg_2C = dword ptr 30h
.text:00427B30 arg_30 = dword ptr 34h
.text:00427B30 arg_34 = dword ptr 38h
.text:00427B30
.text:00427B30 mov eax, [esp+arg_14]
.text:00427B34 mov edx, [esp+arg_8]
.text:00427B38 push ebx
.text:00427B39 mov ebx, [esp+4+arg_18]
.text:00427B3D lea ecx, [eax+ebx*2]
.text:00427B40 mov eax, [esp+4+arg_4]
.text:00427B44 lea ecx, [eax+ecx*2]
.text:00427B47 push ebp
.text:00427B48 mov ebp, [esp+8+arg_30]
.text:00427B4C push esi
.text:00427B4D mov esi, [esp+0Ch+arg_34]
.text:00427B51 push edi
.text:00427B52 mov edi, [esp+10h+arg_20]
.text:00427B56 add edi, [esp+10h+arg_24]
.text:00427B5A lea eax, [ebp+esi*2+0]
.text:00427B5E mov [esp+10h+arg_30], edi
.text:00427B62 lea edi, [edi+eax*2]
.text:00427B65 mov eax, [esp+10h+arg_4]
.text:00427B69 lea eax, [eax+ebx*2]
.text:00427B6C add eax, ebx
.text:00427B6E add eax, edx
.text:00427B70 add ecx, edx
.text:00427B72 lea edx, [eax+eax*2]
.text:00427B75 mov eax, [esp+10h+arg_14]
.text:00427B79 lea eax, [eax+eax*4]
.text:00427B7C add edx, eax
.text:00427B7E mov eax, [esp+10h+arg_20]
.text:00427B82 lea eax, [eax+esi*2]
.text:00427B85 add eax, esi
.text:00427B87 add eax, [esp+10h+arg_24]
.text:00427B8B mov [esp+10h+arg_24], 0Ah
.text:00427B93 lea esi, [eax+eax*2]
.text:00427B96 lea eax, [ebp+ebp*4+0]
.text:00427B9A add esi, eax
.text:00427B9C cmp [esp+10h+arg_0], 0
.text:00427BA1 jnz loc_42806C
.text:00427BA7 cmp ecx, 1
.text:00427BAA jnz short loc_427BB3
.text:00427BAC pop edi
.text:00427BAD pop esi
.text:00427BAE pop ebp
.text:00427BAF xor eax, eax
.text:00427BB1 pop ebx
.text:00427BB2 retn
.text:00427BB3 ; ---------------------------------------------------------------------------
.text:00427BB3
.text:00427BB3 loc_427BB3: ; CODE XREF: sub_427B30+7Aj
.text:00427BB3 mov eax, 2
.text:00427BB8 cmp ecx, eax
.text:00427BBA jnz short loc_427C1F
.text:00427BBC test edi, edi
.text:00427BBE jnz short loc_427BD9
.text:00427BC0 cmp [esp+10h+arg_4], eax
.text:00427BC4 jnz loc_427CC2
.text:00427BCA pop edi
.text:00427BCB xor eax, eax
.text:00427BCD cmp [esp+0Ch+arg_1C], 1
.text:00427BD2 pop esi
.text:00427BD3 pop ebp
.text:00427BD4 setnl al
.text:00427BD7 pop ebx
.text:00427BD8 retn
.text:00427BD9 ; ---------------------------------------------------------------------------
.text:00427BD9
.text:00427BD9 loc_427BD9: ; CODE XREF: sub_427B30+8Ej
.text:00427BD9 cmp edi, 1
.text:00427BDC jnz short loc_427C0D
.text:00427BDE cmp [esp+10h+arg_8], 2
.text:00427BE3 mov ecx, edi
.text:00427BE5 mov eax, ecx
.text:00427BE7 jnz short loc_427BF2
.text:00427BE9 cmp [esp+10h+arg_20], ecx
.text:00427BED jnz short loc_427BF2
.text:00427BEF lea eax, [edi+7]
.text:00427BF2
.text:00427BF2 loc_427BF2: ; CODE XREF: sub_427B30+B7j
.text:00427BF2 ; sub_427B30+BDj
.text:00427BF2 cmp [esp+10h+arg_14], ecx
.text:00427BF6 jnz loc_427CC6
.text:00427BFC cmp [esp+10h+arg_20], ecx
.text:00427C00 jnz loc_427CC6
.text:00427C06 pop edi
.text:00427C07 pop esi
.text:00427C08 pop ebp
.text:00427C09 mov eax, ecx
.text:00427C0B pop ebx
.text:00427C0C retn
.text:00427C0D ; ---------------------------------------------------------------------------
.text:00427C0D
.text:00427C0D loc_427C0D: ; CODE XREF: sub_427B30+ACj
.text:00427C0D cmp edi, eax
.text:00427C0F jnz loc_427CC2
.text:00427C15
.text:00427C15 loc_427C15: ; CODE XREF: sub_427B30+46Dj
.text:00427C15 pop edi
.text:00427C16 pop esi
.text:00427C17 pop ebp
.text:00427C18 mov eax, 1
.text:00427C1D pop ebx
.text:00427C1E retn
.text:00427C1F ; ---------------------------------------------------------------------------
.text:00427C1F
.text:00427C1F loc_427C1F: ; CODE XREF: sub_427B30+8Aj
.text:00427C1F cmp ecx, 3
.text:00427C22 jnz loc_427D0B
.text:00427C28 mov ecx, [esp+10h+arg_14]
.text:00427C2C cmp ecx, 1
.text:00427C2F jnz loc_427CCB
.text:00427C35 cmp edi, eax
.text:00427C37 jnz loc_427CBD
.text:00427C3D cmp ebp, ecx
.text:00427C3F jnz short loc_427C5E
.text:00427C41 mov eax, ecx
.text:00427C43 cmp [esp+10h+arg_4], ecx
.text:00427C47 jz short loc_427C4D
.text:00427C49 mov eax, [esp+10h+arg_24]
.text:00427C4D
.text:00427C4D loc_427C4D: ; CODE XREF: sub_427B30+117j
.text:00427C4D cmp [esp+10h+arg_8], 1
.text:00427C52 jnz short loc_427CC6
.text:00427C54 pop edi
.text:00427C55 pop esi
.text:00427C56 pop ebp
.text:00427C57 mov eax, 1
.text:00427C5C pop ebx
.text:00427C5D retn
.text:00427C5E ; ---------------------------------------------------------------------------
.text:00427C5E
.text:00427C5E loc_427C5E: ; CODE XREF: sub_427B30+10Fj
.text:00427C5E test ebp, ebp
.text:00427C60 jnz short loc_427CC2
.text:00427C62 mov edx, 1
.text:00427C67 cmp [esp+10h+arg_8], edx
.text:00427C6B jnz short loc_427C7D
.text:00427C6D cmp [esp+10h+arg_20], eax
.text:00427C71 jnz short loc_427C7D
.text:00427C73
.text:00427C73 loc_427C73: ; CODE XREF: sub_427B30+3C3j
.text:00427C73 pop edi
.text:00427C74 pop esi
.text:00427C75 pop ebp
.text:00427C76 mov eax, 6
.text:00427C7B pop ebx
.text:00427C7C retn
.text:00427C7D ; ---------------------------------------------------------------------------
.text:00427C7D
.text:00427C7D loc_427C7D: ; CODE XREF: sub_427B30+13Bj
.text:00427C7D ; sub_427B30+141j
.text:00427C7D cmp [esp+10h+arg_20], edx
.text:00427C81 jnz short loc_427CC6
.text:00427C83 mov ecx, [esp+10h+arg_C]
.text:00427C87 cmp ecx, edx
.text:00427C89 jnz short loc_427C91
.text:00427C8B cmp [esp+10h+arg_28], edx
.text:00427C8F jz short loc_427C9D
.text:00427C91
.text:00427C91 loc_427C91: ; CODE XREF: sub_427B30+159j
.text:00427C91 cmp [esp+10h+arg_10], edx
.text:00427C95 jnz short loc_427CA9
.text:00427C97 cmp [esp+10h+arg_2C], edx
.text:00427C9B jnz short loc_427CA3
.text:00427C9D
.text:00427C9D loc_427C9D: ; CODE XREF: sub_427B30+15Fj
.text:00427C9D cmp [esp+10h+arg_10], edx
.text:00427CA1 jnz short loc_427CA9
.text:00427CA3
.text:00427CA3 loc_427CA3: ; CODE XREF: sub_427B30+16Bj
.text:00427CA3 cmp [esp+10h+arg_28], edx
.text:00427CA7 jz short loc_427CB3
.text:00427CA9
.text:00427CA9 loc_427CA9: ; CODE XREF: sub_427B30+165j
.text:00427CA9 ; sub_427B30+171j
.text:00427CA9 cmp ecx, edx
.text:00427CAB jnz short loc_427CC6
.text:00427CAD cmp [esp+10h+arg_2C], edx
.text:00427CB1 jnz short loc_427CC6
.text:00427CB3
.text:00427CB3 loc_427CB3: ; CODE XREF: sub_427B30+177j
.text:00427CB3 pop edi
.text:00427CB4 pop esi
.text:00427CB5 pop ebp
.text:00427CB6 mov eax, 7
.text:00427CBB pop ebx
.text:00427CBC retn
.text:00427CBD ; ---------------------------------------------------------------------------
.text:00427CBD
.text:00427CBD loc_427CBD: ; CODE XREF: sub_427B30+107j
.text:00427CBD ; sub_427B30+1A1j
.text:00427CBD cmp edi, 3
.text:00427CC0 jz short loc_427CC6
.text:00427CC2
.text:00427CC2 loc_427CC2: ; CODE XREF: sub_427B30+94j
.text:00427CC2 ; sub_427B30+DFj ...
.text:00427CC2 mov eax, [esp+10h+arg_24]
.text:00427CC6
.text:00427CC6 loc_427CC6: ; CODE XREF: sub_427B30+C6j
.text:00427CC6 ; sub_427B30+D0j ...
.text:00427CC6 pop edi
.text:00427CC7 pop esi
.text:00427CC8 pop ebp
.text:00427CC9 pop ebx
.text:00427CCA retn
.text:00427CCB ; ---------------------------------------------------------------------------
.text:00427CCB
.text:00427CCB loc_427CCB: ; CODE XREF: sub_427B30+FFj
.text:00427CCB test ecx, ecx
.text:00427CCD jnz short loc_427CC2
.text:00427CCF cmp edi, eax
.text:00427CD1 jnz short loc_427CBD
.text:00427CD3 cmp ebp, 1
.text:00427CD6 jnz short loc_427CF3
.text:00427CD8 cmp [esp+10h+arg_4], eax
.text:00427CDC jz short loc_427CE2
.text:00427CDE mov eax, [esp+10h+arg_24]
.text:00427CE2
.text:00427CE2 loc_427CE2: ; CODE XREF: sub_427B30+1ACj
.text:00427CE2 cmp [esp+10h+arg_8], 2
.text:00427CE7 jnz short loc_427CC6
.text:00427CE9 pop edi
.text:00427CEA pop esi
.text:00427CEB pop ebp
.text:00427CEC mov eax, 7
.text:00427CF1 pop ebx
.text:00427CF2 retn
.text:00427CF3 ; ---------------------------------------------------------------------------
.text:00427CF3
.text:00427CF3 loc_427CF3: ; CODE XREF: sub_427B30+1A6j
.text:00427CF3 test ebp, ebp
.text:00427CF5 jnz short loc_427CC2
.text:00427CF7 cmp [esp+10h+arg_8], eax
.text:00427CFB jnz short loc_427CC6
.text:00427CFD cmp [esp+10h+arg_20], eax
.text:00427D01 jnz short loc_427CC6
.text:00427D03 pop edi
.text:00427D04 pop esi
.text:00427D05 lea eax, [ebp+4]
.text:00427D08 pop ebp
.text:00427D09 pop ebx
.text:00427D0A retn
.text:00427D0B ; ---------------------------------------------------------------------------
.text:00427D0B
.text:00427D0B loc_427D0B: ; CODE XREF: sub_427B30+F2j
.text:00427D0B cmp ecx, 4
.text:00427D0E jnz loc_427DEE
.text:00427D14 test ebx, ebx
.text:00427D16 jz short loc_427D46
.text:00427D18 cmp edi, eax
.text:00427D1A jnz short loc_427D37
.text:00427D1C mov ecx, [esp+10h+arg_20]
.text:00427D20 cmp ecx, eax
.text:00427D22 jz short loc_427D4A
.text:00427D24 cmp ecx, 1
.text:00427D27 jnz short loc_427D2E
.text:00427D29 lea eax, [ecx+7]
.text:00427D2C jmp short loc_427D4A
.text:00427D2E ; ---------------------------------------------------------------------------
.text:00427D2E
.text:00427D2E loc_427D2E: ; CODE XREF: sub_427B30+1F7j
.text:00427D2E test ecx, ecx
.text:00427D30 jnz short loc_427D46
.text:00427D32 lea eax, [ecx+7]
.text:00427D35 jmp short loc_427D4A
.text:00427D37 ; ---------------------------------------------------------------------------
.text:00427D37
.text:00427D37 loc_427D37: ; CODE XREF: sub_427B30+1EAj
.text:00427D37 mov eax, 1
.text:00427D3C cmp edi, 3
.text:00427D3F jz short loc_427D4A
.text:00427D41 cmp edi, 4
.text:00427D44 jz short loc_427D4A
.text:00427D46
.text:00427D46 loc_427D46: ; CODE XREF: sub_427B30+1E6j
.text:00427D46 ; sub_427B30+200j
.text:00427D46 mov eax, [esp+10h+arg_24]
.text:00427D4A
.text:00427D4A loc_427D4A: ; CODE XREF: sub_427B30+1F2j
.text:00427D4A ; sub_427B30+1FCj ...
.text:00427D4A mov ecx, [esp+10h+arg_14]
.text:00427D4E cmp ecx, 2
.text:00427D51 jnz short loc_427D7D
.text:00427D53 cmp edi, ecx
.text:00427D55 jnz short loc_427D67
.text:00427D57 test ebp, ebp
.text:00427D59 jnz loc_427CC6
.text:00427D5F pop edi
.text:00427D60 pop esi
.text:00427D61 pop ebp
.text:00427D62 lea eax, [ecx+5]
.text:00427D65 pop ebx
.text:00427D66 retn
.text:00427D67 ; ---------------------------------------------------------------------------
.text:00427D67
.text:00427D67 loc_427D67: ; CODE XREF: sub_427B30+225j
.text:00427D67 cmp edi, 3
.text:00427D6A jz short loc_427D97
.text:00427D6C cmp edi, 4
.text:00427D6F jnz loc_427CC6
.text:00427D75 lea eax, [edi-3]
.text:00427D78 pop edi
.text:00427D79 pop esi
.text:00427D7A pop ebp
.text:00427D7B pop ebx
.text:00427D7C retn
.text:00427D7D ; ---------------------------------------------------------------------------
.text:00427D7D
.text:00427D7D loc_427D7D: ; CODE XREF: sub_427B30+221j
.text:00427D7D cmp ecx, 1
.text:00427D80 jnz short loc_427DB2
.text:00427D82 cmp edi, 3
.text:00427D85 jnz short loc_427DA1
.text:00427D87 cmp ebp, ecx
.text:00427D89 jz loc_427F01
.text:00427D8F
.text:00427D8F loc_427D8F: ; CODE XREF: sub_427B30+29Aj
.text:00427D8F test ebp, ebp
.text:00427D91 jnz loc_427CC6
.text:00427D97
.text:00427D97 loc_427D97: ; CODE XREF: sub_427B30+23Aj
.text:00427D97 ; sub_427B30+439j
.text:00427D97 pop edi
.text:00427D98 pop esi
.text:00427D99 pop ebp
.text:00427D9A mov eax, 2
.text:00427D9F pop ebx
.text:00427DA0 retn
.text:00427DA1 ; ---------------------------------------------------------------------------
.text:00427DA1
.text:00427DA1 loc_427DA1: ; CODE XREF: sub_427B30+255j
.text:00427DA1 cmp edi, 4
.text:00427DA4 jnz loc_427CC6
.text:00427DAA lea eax, [edi-2]
.text:00427DAD pop edi
.text:00427DAE pop esi
.text:00427DAF pop ebp
.text:00427DB0 pop ebx
.text:00427DB1 retn
.text:00427DB2 ; ---------------------------------------------------------------------------
.text:00427DB2
.text:00427DB2 loc_427DB2: ; CODE XREF: sub_427B30+250j
.text:00427DB2 test ecx, ecx
.text:00427DB4 jnz loc_427CC6
.text:00427DBA test ebx, ebx
.text:00427DBC jnz loc_427CC6
.text:00427DC2 cmp edi, 3
.text:00427DC5 jnz short loc_427DD4
.text:00427DC7 cmp ebp, 1
.text:00427DCA jnz short loc_427D8F
.text:00427DCC pop edi
.text:00427DCD pop esi
.text:00427DCE pop ebp
.text:00427DCF lea eax, [ecx+4]
.text:00427DD2 pop ebx
.text:00427DD3 retn
.text:00427DD4 ; ---------------------------------------------------------------------------
.text:00427DD4
.text:00427DD4 loc_427DD4: ; CODE XREF: sub_427B30+295j
.text:00427DD4 cmp edi, 4
.text:00427DD7 jnz loc_427CC6
.text:00427DDD mov eax, [esp+10h+arg_34]
.text:00427DE1 neg eax
.text:00427DE3 pop edi
.text:00427DE4 sbb eax, eax
.text:00427DE6 pop esi
.text:00427DE7 and eax, 7
.text:00427DEA pop ebp
.text:00427DEB inc eax
.text:00427DEC pop ebx
.text:00427DED retn
.text:00427DEE ; ---------------------------------------------------------------------------
.text:00427DEE
.text:00427DEE loc_427DEE: ; CODE XREF: sub_427B30+1DEj
.text:00427DEE cmp ecx, 5
.text:00427DF1 jnz loc_427EC4
.text:00427DF7 test ebx, ebx
.text:00427DF9 jz short loc_427E04
.text:00427DFB cmp edi, 4
.text:00427DFE jz short loc_427E2F
.text:00427E00 cmp edi, ecx
.text:00427E02 jz short loc_427E4D
.text:00427E04
.text:00427E04 loc_427E04: ; CODE XREF: sub_427B30+2C9j
.text:00427E04 mov eax, [esp+10h+arg_24]
.text:00427E08
.text:00427E08 loc_427E08: ; CODE XREF: sub_427B30+301j
.text:00427E08 ; sub_427B30+314j ...
.text:00427E08 mov ecx, [esp+10h+arg_14]
.text:00427E0C mov edx, 1
.text:00427E11 cmp ecx, edx
.text:00427E13 jnz short loc_427E85
.text:00427E15 cmp edi, 4
.text:00427E18 jnz short loc_427E74
.text:00427E1A mov ecx, [esp+10h+arg_34]
.text:00427E1E test ecx, ecx
.text:00427E20 jz short loc_427E25
.text:00427E22 lea eax, [edx+8]
.text:00427E25
.text:00427E25 loc_427E25: ; CODE XREF: sub_427B30+2F0j
.text:00427E25 cmp ebp, 2
.text:00427E28 jnz short loc_427E54
.text:00427E2A lea eax, [ebp+5]
.text:00427E2D jmp short loc_427E5D
.text:00427E2F ; ---------------------------------------------------------------------------
.text:00427E2F
.text:00427E2F loc_427E2F: ; CODE XREF: sub_427B30+2CEj
.text:00427E2F cmp ebp, eax
.text:00427E31 jnz short loc_427E08
.text:00427E33 cmp [esp+10h+arg_4], 0
.text:00427E38 jz short loc_427E3F
.text:00427E3A mov eax, 3
.text:00427E3F
.text:00427E3F loc_427E3F: ; CODE XREF: sub_427B30+308j
.text:00427E3F cmp [esp+10h+arg_8], 0
.text:00427E44 jz short loc_427E08
.text:00427E46 mov eax, 7
.text:00427E4B jmp short loc_427E08
.text:00427E4D ; ---------------------------------------------------------------------------
.text:00427E4D
.text:00427E4D loc_427E4D: ; CODE XREF: sub_427B30+2D2j
.text:00427E4D mov eax, 1
.text:00427E52 jmp short loc_427E08
.text:00427E54 ; ---------------------------------------------------------------------------
.text:00427E54
.text:00427E54 loc_427E54: ; CODE XREF: sub_427B30+2F8j
.text:00427E54 cmp ebp, edx
.text:00427E56 jnz short loc_427E5D
.text:00427E58
.text:00427E58 loc_427E58: ; CODE XREF: sub_427B30+382j
.text:00427E58 mov eax, 3
.text:00427E5D
.text:00427E5D loc_427E5D: ; CODE XREF: sub_427B30+2FDj
.text:00427E5D ; sub_427B30+326j ...
.text:00427E5D test ecx, ecx
.text:00427E5F jnz loc_427CC6
.text:00427E65 test ebp, ebp
.text:00427E67
.text:00427E67 loc_427E67: ; CODE XREF: sub_427B30+392j
.text:00427E67 jnz loc_427CC6
.text:00427E6D pop edi
.text:00427E6E pop esi
.text:00427E6F pop ebp
.text:00427E70 mov eax, edx
.text:00427E72 pop ebx
.text:00427E73 retn
.text:00427E74 ; ---------------------------------------------------------------------------
.text:00427E74
.text:00427E74 loc_427E74: ; CODE XREF: sub_427B30+2E8j
.text:00427E74 cmp edi, 5
.text:00427E77 jnz loc_427CC6
.text:00427E7D lea eax, [edi-3]
.text:00427E80 pop edi
.text:00427E81 pop esi
.text:00427E82 pop ebp
.text:00427E83 pop ebx
.text:00427E84 retn
.text:00427E85 ; ---------------------------------------------------------------------------
.text:00427E85
.text:00427E85 loc_427E85: ; CODE XREF: sub_427B30+2E3j
.text:00427E85 cmp ecx, 2
.text:00427E88 jnz loc_427CC6
.text:00427E8E cmp edi, 4
.text:00427E91 jnz short loc_427EBF
.text:00427E93 mov ecx, [esp+10h+arg_34]
.text:00427E97 test ecx, ecx
.text:00427E99 jz short loc_427EAF
.text:00427E9B cmp [esp+10h+arg_8], edx
.text:00427E9F jnz short loc_427EA4
.text:00427EA1 lea eax, [edi+4]
.text:00427EA4
.text:00427EA4 loc_427EA4: ; CODE XREF: sub_427B30+36Fj
.text:00427EA4 cmp [esp+10h+arg_4], edx
.text:00427EA8 jnz short loc_427EAF
.text:00427EAA mov eax, 7
.text:00427EAF
.text:00427EAF loc_427EAF: ; CODE XREF: sub_427B30+369j
.text:00427EAF ; sub_427B30+378j
.text:00427EAF cmp ebp, 2
.text:00427EB2 jz short loc_427E58
.text:00427EB4 cmp ebp, edx
.text:00427EB6 jnz short loc_427E5D
.text:00427EB8 mov eax, 2
.text:00427EBD jmp short loc_427E5D
.text:00427EBF ; ---------------------------------------------------------------------------
.text:00427EBF
.text:00427EBF loc_427EBF: ; CODE XREF: sub_427B30+361j
.text:00427EBF cmp edi, 5
.text:00427EC2 jmp short loc_427E67
.text:00427EC4 ; ---------------------------------------------------------------------------
.text:00427EC4
.text:00427EC4 loc_427EC4: ; CODE XREF: sub_427B30+2C1j
.text:00427EC4 cmp ecx, 6
.text:00427EC7 jnz loc_428024
.text:00427ECD test ebx, ebx
.text:00427ECF jz loc_427F7F
.text:00427ED5 cmp [esp+10h+arg_14], 0
.text:00427EDA jz short loc_427F36
.text:00427EDC cmp edi, 4
.text:00427EDF jnz short loc_427F0B
.text:00427EE1 cmp [esp+10h+arg_34], 0
.text:00427EE6 jnz short loc_427EF0
.text:00427EE8 test ebp, ebp
.text:00427EEA jz loc_427CC6
.text:00427EF0
.text:00427EF0 loc_427EF0: ; CODE XREF: sub_427B30+3B6j
.text:00427EF0 cmp ebp, 1
.text:00427EF3 jz loc_427C73
.text:00427EF9 cmp ebp, eax
.text:00427EFB jnz loc_427CC2
.text:00427F01
.text:00427F01 loc_427F01: ; CODE XREF: sub_427B30+259j
.text:00427F01 ; sub_427B30+4B3j ...
.text:00427F01 pop edi
.text:00427F02 pop esi
.text:00427F03 pop ebp
.text:00427F04 mov eax, 3
.text:00427F09 pop ebx
.text:00427F0A retn
.text:00427F0B ; ---------------------------------------------------------------------------
.text:00427F0B
.text:00427F0B loc_427F0B: ; CODE XREF: sub_427B30+3AFj
.text:00427F0B cmp edi, 5
.text:00427F0E jnz loc_427FB3
.text:00427F14 cmp [esp+10h+arg_34], 0
.text:00427F19 jz short loc_427F20
.text:00427F1B lea eax, [edi-4]
.text:00427F1E jmp short loc_427F24
.text:00427F20 ; ---------------------------------------------------------------------------
.text:00427F20
.text:00427F20 loc_427F20: ; CODE XREF: sub_427B30+3E9j
.text:00427F20 mov eax, [esp+10h+arg_24]
.text:00427F24
.text:00427F24 loc_427F24: ; CODE XREF: sub_427B30+3EEj
.text:00427F24 test ebp, ebp
.text:00427F26 jz loc_427CC6
.text:00427F2C pop edi
.text:00427F2D pop esi
.text:00427F2E pop ebp
.text:00427F2F mov eax, 1
.text:00427F34 pop ebx
.text:00427F35 retn
.text:00427F36 ; ---------------------------------------------------------------------------
.text:00427F36
.text:00427F36 loc_427F36: ; CODE XREF: sub_427B30+3AAj
.text:00427F36 cmp edi, 4
.text:00427F39 jnz short loc_427F56
.text:00427F3B cmp [esp+10h+arg_34], 0
.text:00427F40 jnz loc_427CC2
.text:00427F46 test ebp, ebp
.text:00427F48 jnz loc_427CC2
.text:00427F4E lea eax, [edi+1]
.text:00427F51 pop edi
.text:00427F52 pop esi
.text:00427F53 pop ebp
.text:00427F54 pop ebx
.text:00427F55 retn
.text:00427F56 ; ---------------------------------------------------------------------------
.text:00427F56
.text:00427F56 loc_427F56: ; CODE XREF: sub_427B30+409j
.text:00427F56 cmp edi, 5
.text:00427F59 jnz short loc_427FB3
.text:00427F5B cmp [esp+10h+arg_34], 0
.text:00427F60 jnz short loc_427F66
.text:00427F62 mov eax, [esp+10h+arg_24]
.text:00427F66
.text:00427F66 loc_427F66: ; CODE XREF: sub_427B30+430j
.text:00427F66 cmp ebp, 2
.text:00427F69 jz loc_427D97
.text:00427F6F cmp ebp, 1
.text:00427F72 jnz loc_427CC6
.text:00427F78 pop edi
.text:00427F79 pop esi
.text:00427F7A mov eax, ebp
.text:00427F7C pop ebp
.text:00427F7D pop ebx
.text:00427F7E retn
.text:00427F7F ; ---------------------------------------------------------------------------
.text:00427F7F
.text:00427F7F loc_427F7F: ; CODE XREF: sub_427B30+39Fj
.text:00427F7F mov ecx, [esp+10h+arg_14]
.text:00427F83 cmp ecx, eax
.text:00427F85 jnz short loc_427FC4
.text:00427F87 cmp edi, 5
.text:00427F8A jnz short loc_427FB3
.text:00427F8C cmp [esp+10h+arg_34], 0
.text:00427F91 lea eax, [edi+2]
.text:00427F94 jnz short loc_427F9A
.text:00427F96 mov eax, [esp+10h+arg_24]
.text:00427F9A
.text:00427F9A loc_427F9A: ; CODE XREF: sub_427B30+464j
.text:00427F9A cmp ebp, 1
.text:00427F9D jz loc_427C15
.text:00427FA3 cmp ebp, 2
.text:00427FA6 jnz loc_427CC6
.text:00427FAC pop edi
.text:00427FAD pop esi
.text:00427FAE mov eax, ebp
.text:00427FB0 pop ebp
.text:00427FB1 pop ebx
.text:00427FB2 retn
.text:00427FB3 ; ---------------------------------------------------------------------------
.text:00427FB3
.text:00427FB3 loc_427FB3: ; CODE XREF: sub_427B30+3DEj
.text:00427FB3 ; sub_427B30+429j ...
.text:00427FB3 cmp edi, 6
.text:00427FB6 jnz loc_427CC2
.text:00427FBC lea eax, [edi-5]
.text:00427FBF pop edi
.text:00427FC0 pop esi
.text:00427FC1 pop ebp
.text:00427FC2 pop ebx
.text:00427FC3 retn
.text:00427FC4 ; ---------------------------------------------------------------------------
.text:00427FC4
.text:00427FC4 loc_427FC4: ; CODE XREF: sub_427B30+455j
.text:00427FC4 cmp ecx, 1
.text:00427FC7 jnz loc_427CC2
.text:00427FCD cmp edi, 5
.text:00427FD0 jnz short loc_427FFA
.text:00427FD2 cmp [esp+10h+arg_34], 0
.text:00427FD7 lea eax, [ecx+8]
.text:00427FDA jnz short loc_427FE0
.text:00427FDC mov eax, [esp+10h+arg_24]
.text:00427FE0
.text:00427FE0 loc_427FE0: ; CODE XREF: sub_427B30+4AAj
.text:00427FE0 cmp ebp, 2
.text:00427FE3 jz loc_427F01
.text:00427FE9 cmp ebp, 1
.text:00427FEC jnz loc_427CC6
.text:00427FF2 pop edi
.text:00427FF3 pop esi
.text:00427FF4 lea eax, [ebp+1]
.text:00427FF7 pop ebp
.text:00427FF8 pop ebx
.text:00427FF9 retn
.text:00427FFA ; ---------------------------------------------------------------------------
.text:00427FFA
.text:00427FFA loc_427FFA: ; CODE XREF: sub_427B30+4A0j
.text:00427FFA cmp edi, 6
.text:00427FFD jnz loc_427CC2
.text:00428003 cmp [esp+10h+arg_34], 0
.text:00428008 lea eax, [edi-5]
.text:0042800B jz loc_427CC6
.text:00428011 lea eax, [edi-4]
.text:00428014 test ebp, ebp
.text:00428016 jz loc_427CC6
.text:0042801C lea eax, [edi-2]
.text:0042801F pop edi
.text:00428020 pop esi
.text:00428021 pop ebp
.text:00428022 pop ebx
.text:00428023 retn
.text:00428024 ; ---------------------------------------------------------------------------
.text:00428024
.text:00428024 loc_428024: ; CODE XREF: sub_427B30+397j
.text:00428024 cmp ecx, 7
.text:00428027 jl loc_427CC2
.text:0042802D lea ecx, [esi+4]
.text:00428030 mov eax, 9
.text:00428035 cmp edx, ecx
.text:00428037 jg short loc_428044
.text:00428039 mov eax, [esp+10h+arg_24]
.text:0042803D jnz short loc_428044
.text:0042803F mov eax, 7
.text:00428044
.text:00428044 loc_428044: ; CODE XREF: sub_427B30+507j
.text:00428044 ; sub_427B30+50Dj
.text:00428044 lea ecx, [esi+3]
.text:00428047 cmp edx, ecx
.text:00428049 jnz short loc_428050
.text:0042804B mov eax, 4
.text:00428050
.text:00428050 loc_428050: ; CODE XREF: sub_427B30+519j
.text:00428050 add esi, 2
.text:00428053 cmp edx, esi
.text:00428055 jnz short loc_42805C
.text:00428057 mov eax, 2
.text:0042805C
.text:0042805C loc_42805C: ; CODE XREF: sub_427B30+525j
.text:0042805C jge loc_427CC6
.text:00428062 pop edi
.text:00428063 pop esi
.text:00428064 pop ebp
.text:00428065 mov eax, 1
.text:0042806A pop ebx
.text:0042806B retn
.text:0042806C ; ---------------------------------------------------------------------------
.text:0042806C
.text:0042806C loc_42806C: ; CODE XREF: sub_427B30+71j
.text:0042806C mov esi, 1
.text:00428071 cmp [esp+10h+arg_0], esi
.text:00428075 jnz loc_427CC2
.text:0042807B cmp edi, esi
.text:0042807D jnz short loc_4280BD
.text:0042807F cmp ecx, esi
.text:00428081 jz loc_427F01
.text:00428087 cmp ecx, 2
.text:0042808A jnz loc_427CC2
.text:00428090 cmp [esp+10h+arg_4], ecx
.text:00428094 jnz short loc_4280A5
.text:00428096 xor eax, eax
.text:00428098 cmp [esp+10h+arg_1C], eax
.text:0042809C setnz al
.text:0042809F lea eax, [eax+eax+3]
.text:004280A3 jmp short loc_4280A9
.text:004280A5 ; ---------------------------------------------------------------------------
.text:004280A5
.text:004280A5 loc_4280A5: ; CODE XREF: sub_427B30+564j
.text:004280A5 mov eax, [esp+10h+arg_24]
.text:004280A9
.text:004280A9 loc_4280A9: ; CODE XREF: sub_427B30+573j
.text:004280A9 cmp [esp+10h+arg_14], esi
.text:004280AD jnz loc_427CC6
.text:004280B3 pop edi
.text:004280B4 pop esi
.text:004280B5 pop ebp
.text:004280B6 mov eax, 7
.text:004280BB pop ebx
.text:004280BC retn
.text:004280BD ; ---------------------------------------------------------------------------
.text:004280BD
.text:004280BD loc_4280BD: ; CODE XREF: sub_427B30+54Dj
.text:004280BD cmp edi, 2
.text:004280C0 jnz short loc_4280F9
.text:004280C2 cmp ebp, esi
.text:004280C4 jnz short loc_4280E0
.text:004280C6 cmp ecx, edi
.text:004280C8 jnz loc_427CC2
.text:004280CE cmp [esp+10h+arg_14], esi
.text:004280D2 jnz loc_427CC2
.text:004280D8 lea eax, [edi+6]
.text:004280DB pop edi
.text:004280DC pop esi
.text:004280DD pop ebp
.text:004280DE pop ebx
.text:004280DF retn
.text:004280E0 ; ---------------------------------------------------------------------------
.text:004280E0
.text:004280E0 loc_4280E0: ; CODE XREF: sub_427B30+594j
.text:004280E0 test ebp, ebp
.text:004280E2 jnz loc_427CC2
.text:004280E8 cmp ecx, 2
.text:004280EB jnz loc_427CC2
.text:004280F1 pop edi
.text:004280F2 pop esi
.text:004280F3 lea eax, [ebp+4]
.text:004280F6 pop ebp
.text:004280F7 pop ebx
.text:004280F8 retn
.text:004280F9 ; ---------------------------------------------------------------------------
.text:004280F9
.text:004280F9 loc_4280F9: ; CODE XREF: sub_427B30+590j
.text:004280F9 cmp edi, 3
.text:004280FC jl short loc_428120
.text:004280FE mov edx, [esp+10h+arg_30]
.text:00428102 test edx, edx
.text:00428104 jle short loc_42810F
.text:00428106 mov eax, 3
.text:0042810B cmp ecx, edi
.text:0042810D jz short loc_428113
.text:0042810F
.text:0042810F loc_42810F: ; CODE XREF: sub_427B30+5D4j
.text:0042810F mov eax, [esp+10h+arg_24]
.text:00428113
.text:00428113 loc_428113: ; CODE XREF: sub_427B30+5DDj
.text:00428113 test edx, edx
.text:00428115 jnz short loc_428124
.text:00428117 cmp ecx, edi
.text:00428119 jnz short loc_428124
.text:0042811B lea eax, [edx+5]
.text:0042811E jmp short loc_428124
.text:00428120 ; ---------------------------------------------------------------------------
.text:00428120
.text:00428120 loc_428120: ; CODE XREF: sub_427B30+5CCj
.text:00428120 mov eax, [esp+10h+arg_24]
.text:00428124
.text:00428124 loc_428124: ; CODE XREF: sub_427B30+5E5j
.text:00428124 ; sub_427B30+5E9j ...
.text:00428124 cmp edi, 4
.text:00428127 jnz loc_427CC6
.text:0042812D cmp [esp+10h+arg_34], esi
.text:00428131 jnz loc_427CC6
.text:00428137 cmp ecx, edi
.text:00428139 jnz loc_427CC6
.text:0042813F lea eax, [edi+3]
.text:00428142 pop edi
.text:00428143 pop esi
.text:00428144 pop ebp
.text:00428145 pop ebx
.text:00428146 retn
.text:00428146 sub_427B30 endp
RobboLito 009 Source Code values.c
Code: Select all
static int load_white(int white_pawn, int white_knight, int white_bishop, int white_light, int white_dark,
int white_rook, int white_queen, int black_pawn, int black_knight, int black_bishop, int black_light,
int black_dark, int black_rook, int black_queen)
{
int white_minor, black_minor, white_phase, black_phase, white_load, white_value, black_value;
white_minor = white_bishop + white_knight;
black_minor = black_bishop + black_knight;
white_phase = white_minor + 2 * white_rook + 4 * white_queen;
black_phase = black_minor + 2 * black_rook + 4 * black_queen;
white_value = 3 * (white_bishop + white_knight) + 5 * white_rook + 9 * white_queen;
black_value = 3 * (black_bishop + black_knight) + 5 * black_rook + 9 * black_queen;
white_load = 10;
if (!white_pawn)
{
if (white_phase == 1)
white_load = 0;
if (white_phase == 2)
{
if (black_phase == 0)
{
if (white_knight == 2)
{
if (black_pawn >= 1)
white_load = 3;
else
white_load = 0;
}
}
if (black_phase == 1)
{
white_load = 1;
if (white_bishop == 2 && black_knight == 1)
white_load = 8;
if (white_rook == 1 && black_knight == 1)
white_load = 2;
}
if (black_phase == 2)
white_load = 1;
}
if (white_phase == 3 && white_rook == 1)
{
if (black_phase == 2 && black_rook == 1)
{
if (white_knight == 1)
white_load = 1;
if (white_bishop == 1)
white_load = 1;
}
if (black_phase == 2 && black_rook == 0)
{
white_load = 2;
if (white_bishop == 1 && black_knight == 2)
white_load = 6;
if (black_knight == 1
&& ((white_light == 1 && black_light == 1) || (white_dark == 1 && black_dark == 1)))
white_load = 2;
if (black_knight == 1
&& ((white_dark == 1 && black_light == 1) || (white_light == 1 && black_dark == 1)))
white_load = 7;
}
if (black_phase == 3)
white_load = 2;
}
if (white_phase == 3 && white_rook == 0)
{
if (black_phase == 2 && black_rook == 1)
{
if (white_knight == 2)
white_load = 2;
if (white_bishop == 2)
white_load = 7;
}
if (black_phase == 2 && black_rook == 0)
{
white_load = 2;
if (white_bishop == 2 && black_knight == 2)
white_load = 4;
}
if (black_phase == 3)
white_load = 2;
}
if (white_phase == 4 && white_queen)
{
if (black_phase == 2 && black_knight == 2)
white_load = 2;
if (black_phase == 2 && black_knight == 1)
white_load = 8;
if (black_phase == 2 && black_knight == 0)
white_load = 7;
if (black_phase == 3)
white_load = 1;
if (black_phase == 4)
white_load = 1;
}
if (white_phase == 4 && white_rook == 2)
{
if (black_phase == 2 && black_rook == 0)
white_load = 7;
if (black_phase == 3)
white_load = 2;
if (black_phase == 4)
white_load = 1;
}
if (white_phase == 4 && white_rook == 1)
{
if (black_phase == 3 && black_rook == 1)
white_load = 3;
if (black_phase == 3 && black_rook == 0)
white_load = 2;
if (black_phase == 4)
white_load = 2;
}
if (white_phase == 4 && white_rook == 0 && white_queen == 0)
{
if (black_phase == 3 && black_rook == 1)
white_load = 4;
if (black_phase == 3 && black_rook == 0)
white_load = 2;
if (black_phase == 4 && black_queen)
white_load = 8;
if (black_phase == 4 && black_queen == 0)
white_load = 1;
}
if (white_phase == 5 && white_queen)
{
if (black_phase == 4)
white_load = 2;
if (black_phase == 5)
white_load = 1;
if (black_phase == 4 && black_rook == 2)
{
if (white_knight)
white_load = 3;
if (white_bishop)
white_load = 7;
}
if (black_phase == 5)
white_load = 1;
}
if (white_phase == 5 && white_rook == 1)
{
if (black_phase == 4 && black_queen)
white_load = 9;
if (black_phase == 4 && black_rook == 2)
white_load = 7;
if (black_phase == 4 && black_rook == 1)
white_load = 3;
if (black_phase == 4 && black_queen == 0 && black_rook == 0)
white_load = 1;
if (black_phase == 5)
white_load = 2;
}
if (white_phase == 5 && white_rook == 2)
{
if (black_phase == 4 && black_queen && white_bishop == 1)
white_load = 8;
if (black_phase == 4 && black_queen && white_knight == 1)
white_load = 7;
if (black_phase == 4 && black_rook == 2)
white_load = 3;
if (black_phase == 4 && black_rook == 1)
white_load = 2;
if (black_phase == 4 && black_queen == 0 && black_rook == 0)
white_load = 1;
if (black_phase == 5)
white_load = 1;
}
if (white_phase == 6 && white_queen && white_rook)
{
if (black_phase == 4 && black_queen == 0 && black_rook == 0)
white_load = 2;
if (black_phase == 5 && black_queen)
white_load = 1;
if (black_phase == 4 && black_rook == 1)
white_load = 6;
if (black_phase == 4 && black_rook == 2)
white_load = 3;
if (black_phase == 5 && black_rook)
white_load = 1;
if (black_phase == 6)
white_load = 1;
}
if (white_phase == 6 && white_queen && white_rook == 0)
{
if (black_phase == 4 && black_queen == 0 && black_rook == 0)
white_load = 5;
if (black_phase == 5 && black_queen)
white_load = 2;
if (black_phase == 5 && black_rook == 2)
white_load = 2;
if (black_phase == 5 && black_rook == 1)
white_load = 1;
if (black_phase == 6)
white_load = 1;
}
if (white_phase == 6 && white_queen == 0 && white_rook == 2)
{
if (black_phase == 5 && black_queen)
white_load = 7;
if (black_phase == 5 && black_rook == 1)
white_load = 1;
if (black_phase == 5 && black_rook == 2)
white_load = 2;
if (black_phase == 6)
white_load = 1;
}
if (white_phase == 6 && white_queen == 0 && white_rook == 1)
{
if (black_phase == 5 && black_queen)
white_load = 9;
if (black_phase == 5 && black_rook == 2)
white_load = 3;
if (black_phase == 5 && black_rook == 1)
white_load = 2;
if (black_phase == 6)
white_load = 1;
if (black_phase == 6 && black_queen)
white_load = 2;
if (black_phase == 6 && black_queen && black_rook)
white_load = 4;
}
if (white_phase >= 7)
{
if (white_value > black_value + 4)
white_load = 9;
if (white_value == black_value + 4)
white_load = 7;
if (white_value == black_value + 3)
white_load = 4;
if (white_value == black_value + 2)
white_load = 2;
if (white_value < black_value + 2)
white_load = 1;
}
}
if (white_pawn == 1)
{
if (black_phase == 1)
{
if (white_phase == 1)
white_load = 3;
if (white_phase == 2 && white_knight == 2)
{
if (black_pawn == 0)
white_load = 3;
else
white_load = 5;
}
if (white_phase == 2 && white_rook == 1)
white_load = 7;
}
if (black_phase == 2 && black_rook == 1 && white_phase == 2 && white_rook == 1)
white_load = 8;
if (black_phase == 2 && black_rook == 0 && white_phase == 2)
white_load = 4;
if (black_phase >= 3 && black_minor > 0 && white_phase == black_phase)
white_load = 3;
if (black_phase >= 3 && black_minor == 0 && white_phase == black_phase)
white_load = 5;
if (black_phase == 4 && black_queen == 1 && white_phase == black_phase)
white_load = 7;
}
return white_load;
}
RobboLito 0.09 w32
Aug 4 2010 19:40:41
basic windows version by kranium, improved by sentinel
Code: Select all
.text:004269A0 ; =============== S U B R O U T I N E =======================================
.text:004269A0
.text:004269A0
.text:004269A0 sub_4269A0 proc near ; CODE XREF: _main+76p
.text:004269A0
.text:004269A0 var_3C = dword ptr -3Ch
.text:004269A0 var_38 = dword ptr -38h
.text:004269A0 var_34 = dword ptr -34h
.text:004269A0 var_30 = dword ptr -30h
.text:004269A0 var_2C = dword ptr -2Ch
.text:004269A0 var_28 = dword ptr -28h
.text:004269A0 var_24 = dword ptr -24h
.text:004269A0 var_20 = dword ptr -20h
.text:004269A0 var_1C = dword ptr -1Ch
.text:004269A0 var_18 = dword ptr -18h
.text:004269A0 var_14 = dword ptr -14h
.text:004269A0 var_10 = dword ptr -10h
.text:004269A0 var_C = dword ptr -0Ch
.text:004269A0 var_8 = dword ptr -8
.text:004269A0 var_4 = dword ptr -4
.text:004269A0 arg_0 = dword ptr 4
.text:004269A0
.text:004269A0 mov eax, [esp+arg_0]
.text:004269A4 sub esp, 40h
.text:004269A7 push ebx
.text:004269A8 push ebp
.text:004269A9 mov ebx, eax
.text:004269AB and ebx, 80000001h
.text:004269B1 push esi
.text:004269B2 push edi
.text:004269B3 jns short loc_4269BA
.text:004269B5 dec ebx
.text:004269B6 or ebx, 0FFFFFFFEh
.text:004269B9 inc ebx
.text:004269BA
.text:004269BA loc_4269BA: ; CODE XREF: sub_4269A0+13j
.text:004269BA cdq
.text:004269BB sub eax, edx
.text:004269BD sar eax, 1
.text:004269BF mov esi, eax
.text:004269C1 and esi, 80000001h
.text:004269C7 jns short loc_4269CE
.text:004269C9 dec esi
.text:004269CA or esi, 0FFFFFFFEh
.text:004269CD inc esi
.text:004269CE
.text:004269CE loc_4269CE: ; CODE XREF: sub_4269A0+27j
.text:004269CE cdq
.text:004269CF sub eax, edx
.text:004269D1 mov ecx, eax
.text:004269D3 sar ecx, 1
.text:004269D5 mov eax, 55555556h
.text:004269DA imul ecx
.text:004269DC mov eax, edx
.text:004269DE shr eax, 1Fh
.text:004269E1 add eax, edx
.text:004269E3 lea edx, [eax+eax*2]
.text:004269E6 sub ecx, edx
.text:004269E8 mov [esp+50h+var_38], ecx
.text:004269EC mov ecx, eax
.text:004269EE mov eax, 55555556h
.text:004269F3 imul ecx
.text:004269F5 mov eax, edx
.text:004269F7 shr eax, 1Fh
.text:004269FA add eax, edx
.text:004269FC lea edx, [eax+eax*2]
.text:004269FF sub ecx, edx
.text:00426A01 mov ebp, eax
.text:00426A03 and ebp, 80000001h
.text:00426A09 mov [esp+50h+var_3C], ecx
.text:00426A0D jns short loc_426A14
.text:00426A0F dec ebp
.text:00426A10 or ebp, 0FFFFFFFEh
.text:00426A13 inc ebp
.text:00426A14
.text:00426A14 loc_426A14: ; CODE XREF: sub_4269A0+6Dj
.text:00426A14 cdq
.text:00426A15 sub eax, edx
.text:00426A17 sar eax, 1
.text:00426A19 mov ecx, eax
.text:00426A1B and ecx, 80000001h
.text:00426A21 jns short loc_426A28
.text:00426A23 dec ecx
.text:00426A24 or ecx, 0FFFFFFFEh
.text:00426A27 inc ecx
.text:00426A28
.text:00426A28 loc_426A28: ; CODE XREF: sub_4269A0+81j
.text:00426A28 cdq
.text:00426A29 sub eax, edx
.text:00426A2B sar eax, 1
.text:00426A2D mov [esp+50h+var_18], ecx
.text:00426A31 mov ecx, eax
.text:00426A33 and ecx, 80000001h
.text:00426A39 jns short loc_426A40
.text:00426A3B dec ecx
.text:00426A3C or ecx, 0FFFFFFFEh
.text:00426A3F inc ecx
.text:00426A40
.text:00426A40 loc_426A40: ; CODE XREF: sub_4269A0+99j
.text:00426A40 cdq
.text:00426A41 sub eax, edx
.text:00426A43 sar eax, 1
.text:00426A45 mov [esp+50h+var_24], ecx
.text:00426A49 mov ecx, eax
.text:00426A4B and ecx, 80000001h
.text:00426A51 jns short loc_426A58
.text:00426A53 dec ecx
.text:00426A54 or ecx, 0FFFFFFFEh
.text:00426A57 inc ecx
.text:00426A58
.text:00426A58 loc_426A58: ; CODE XREF: sub_4269A0+B1j
.text:00426A58 cdq
.text:00426A59 sub eax, edx
.text:00426A5B mov [esp+50h+var_28], ecx
.text:00426A5F mov ecx, eax
.text:00426A61 sar ecx, 1
.text:00426A63 mov eax, 55555556h
.text:00426A68 imul ecx
.text:00426A6A mov eax, edx
.text:00426A6C shr eax, 1Fh
.text:00426A6F add eax, edx
.text:00426A71 lea edx, [eax+eax*2]
.text:00426A74 mov edi, eax
.text:00426A76 sub ecx, edx
.text:00426A78 mov eax, 55555556h
.text:00426A7D imul edi
.text:00426A7F mov [esp+50h+var_30], ecx
.text:00426A83 mov ecx, edx
.text:00426A85 shr ecx, 1Fh
.text:00426A88 add ecx, edx
.text:00426A8A lea eax, [ecx+ecx*2]
.text:00426A8D sub edi, eax
.text:00426A8F mov eax, 38E38E39h
.text:00426A94 imul ecx
.text:00426A96 sar edx, 1
.text:00426A98 mov [esp+50h+var_34], edi
.text:00426A9C mov edi, edx
.text:00426A9E shr edi, 1Fh
.text:00426AA1 add edi, edx
.text:00426AA3 lea edx, [edi+edi*8]
.text:00426AA6 sub ecx, edx
.text:00426AA8 mov eax, 38E38E39h
.text:00426AAD imul edi
.text:00426AAF sar edx, 1
.text:00426AB1 mov eax, edx
.text:00426AB3 shr eax, 1Fh
.text:00426AB6 add eax, edx
.text:00426AB8 mov edx, [esp+50h+var_18]
.text:00426ABC lea eax, [eax+eax*8]
.text:00426ABF sub edi, eax
.text:00426AC1 mov eax, [esp+50h+var_28]
.text:00426AC5 push esi
.text:00426AC6 mov [esp+54h+var_1C], edi
.text:00426ACA lea edi, [edx+ebp]
.text:00426ACD mov edx, [esp+54h+var_24]
.text:00426AD1 add eax, edx
.text:00426AD3 mov edx, [esp+54h+var_3C]
.text:00426AD7 push edx
.text:00426AD8 mov edx, [esp+58h+var_1C]
.text:00426ADC push eax
.text:00426ADD mov [esp+5Ch+var_20], eax
.text:00426AE1 mov eax, [esp+5Ch+var_34]
.text:00426AE5 push eax
.text:00426AE6 mov eax, [esp+60h+var_38]
.text:00426AEA push edx
.text:00426AEB mov edx, [esp+64h+var_30]
.text:00426AEF push ebx
.text:00426AF0 push eax
.text:00426AF1 push edi
.text:00426AF2 push edx
.text:00426AF3 push ecx
.text:00426AF4 mov [esp+78h+var_14], ecx
.text:00426AF8 call sub_4267A0
.text:00426AFD mov ecx, [esp+78h+var_3C]
.text:00426B01 mov [esp+78h+var_8], eax
.text:00426B05 lea eax, [esi+ebx]
.text:00426B08 lea eax, [ecx+eax*2]
.text:00426B0B add eax, [esp+78h+var_38]
.text:00426B0F mov ecx, [esp+78h+var_20]
.text:00426B13 lea ecx, [ecx+eax*2]
.text:00426B16 add ecx, eax
.text:00426B18 add ecx, edi
.text:00426B1A mov edi, [esp+78h+var_8]
.text:00426B1E add ecx, [esp+78h+var_34]
.text:00426B22 mov eax, edi
.text:00426B24 add ecx, [esp+78h+var_30]
.text:00426B28 and eax, 0FFFFh
.text:00426B2D add esp, 28h
.text:00426B30 mov [esp+50h+var_4], edx
.text:00426B34 mov [esp+50h+var_C], 0
.text:00426B3C cmp eax, 8000h
.text:00426B41 mov [esp+50h+var_10], 1
.text:00426B49 jg short loc_426B53
.text:00426B4B mov [esp+50h+var_10], 0
.text:00426B53
.text:00426B53 loc_426B53: ; CODE XREF: sub_4269A0+1A9j
.text:00426B53 shrd edi, edx, 10h
.text:00426B57 shr edx, 10h
.text:00426B5A mov [esp+50h+var_2C], edx
.text:00426B5E mov edx, edi
.text:00426B60 mov edi, [esp+50h+var_2C]
.text:00426B64 and edx, 0FFFFh
.text:00426B6A add edx, [esp+50h+var_10]
.text:00426B6E cwde
.text:00426B6F cmp edx, 8000h
.text:00426B75 mov [esp+50h+var_2C], eax
.text:00426B79 jle short loc_426B8A
.text:00426B7B mov edi, 1
.text:00426B80 mov [esp+50h+var_C], 0
.text:00426B88 jmp short loc_426B90
.text:00426B8A ; ---------------------------------------------------------------------------
.text:00426B8A
.text:00426B8A loc_426B8A: ; CODE XREF: sub_4269A0+1D9j
.text:00426B8A xor edi, edi
.text:00426B8C mov [esp+50h+var_C], edi
.text:00426B90
.text:00426B90 loc_426B90: ; CODE XREF: sub_4269A0+1E8j
.text:00426B90 mov eax, [esp+50h+var_4]
.text:00426B94 and eax, 0FFFFh
.text:00426B99 add eax, edi
.text:00426B9B cmp eax, 8000h
.text:00426BA0 movsx edi, dx
.text:00426BA3 mov [esp+50h+var_C], 0
.text:00426BAB mov [esp+50h+var_10], 1
.text:00426BB3 jg short loc_426BBD
.text:00426BB5 mov [esp+50h+var_10], 0
.text:00426BBD
.text:00426BBD loc_426BBD: ; CODE XREF: sub_4269A0+213j
.text:00426BBD cmp ecx, 8
.text:00426BC0 movsx edx, ax
.text:00426BC3 jge short loc_426BF0
.text:00426BC5 mov eax, [esp+50h+var_4]
.text:00426BC9 imul edx, ecx
.text:00426BCC shr eax, 10h
.text:00426BCF add ax, word ptr [esp+50h+var_10]
.text:00426BD4 mov edi, 8
.text:00426BD9 cwde
.text:00426BDA sub edi, ecx
.text:00426BDC imul eax, edi
.text:00426BDF add eax, edx
.text:00426BE1 cdq
.text:00426BE2 and edx, 7
.text:00426BE5 add eax, edx
.text:00426BE7 sar eax, 3
.text:00426BEA mov [esp+50h+var_2C], eax
.text:00426BEE jmp short loc_426C33
.text:00426BF0 ; ---------------------------------------------------------------------------
.text:00426BF0
.text:00426BF0 loc_426BF0: ; CODE XREF: sub_4269A0+223j
.text:00426BF0 cmp ecx, 18h
.text:00426BF3 jge short loc_426C12
.text:00426BF5 mov eax, 18h
.text:00426BFA sub eax, ecx
.text:00426BFC imul eax, edx
.text:00426BFF add ecx, 0FFFFFFF8h
.text:00426C02 imul ecx, edi
.text:00426C05 add eax, ecx
.text:00426C07 cdq
.text:00426C08 and edx, 0Fh
.text:00426C0B add eax, edx
.text:00426C0D sar eax, 4
.text:00426C10 jmp short loc_426C2F
.text:00426C12 ; ---------------------------------------------------------------------------
.text:00426C12
.text:00426C12 loc_426C12: ; CODE XREF: sub_4269A0+253j
.text:00426C12 mov eax, 20h
.text:00426C17 sub eax, ecx
.text:00426C19 imul eax, edi
.text:00426C1C add ecx, 0FFFFFFE8h
.text:00426C1F imul ecx, [esp+50h+var_2C]
.text:00426C24 add eax, ecx
.text:00426C26 cdq
.text:00426C27 and edx, 7
.text:00426C2A add eax, edx
.text:00426C2C sar eax, 3
.text:00426C2F
.text:00426C2F loc_426C2F: ; CODE XREF: sub_4269A0+270j
.text:00426C2F mov [esp+50h+var_2C], eax
.text:00426C33
.text:00426C33 loc_426C33: ; CODE XREF: sub_4269A0+24Ej
.text:00426C33 mov ecx, [esp+50h+var_3C]
.text:00426C37 mov edx, [esp+50h+var_28]
.text:00426C3B mov edi, [esp+50h+var_18]
.text:00426C3F push esi
.text:00426C40 push ecx
.text:00426C41 mov ecx, [esp+58h+var_20]
.text:00426C45 push edx
.text:00426C46 mov edx, [esp+5Ch+var_34]
.text:00426C4A test eax, eax
.text:00426C4C mov eax, [esp+5Ch+var_24]
.text:00426C50 push eax
.text:00426C51 mov eax, [esp+60h+var_1C]
.text:00426C55 push ecx
.text:00426C56 mov ecx, [esp+64h+var_38]
.text:00426C5A push edx
.text:00426C5B mov edx, [esp+68h+var_30]
.text:00426C5F push eax
.text:00426C60 mov eax, [esp+6Ch+var_14]
.text:00426C64 push ebx
.text:00426C65 push ecx
.text:00426C66 push edi
.text:00426C67 push ebp
.text:00426C68 jle short loc_426C79
.text:00426C6A add edi, ebp
.text:00426C6C push edi
.text:00426C6D push edx
.text:00426C6E push eax
.text:00426C6F call sub_425B60
.text:00426C74 add esp, 38h
.text:00426C77 jmp short loc_426C87
.text:00426C79 ; ---------------------------------------------------------------------------
.text:00426C79
.text:00426C79 loc_426C79: ; CODE XREF: sub_4269A0+2C8j
.text:00426C79 push edx
.text:00426C7A add edi, ebp
.text:00426C7C push eax
.text:00426C7D mov edx, edi
.text:00426C7F call sub_426190
.text:00426C84 add esp, 34h
.text:00426C87
.text:00426C87 loc_426C87: ; CODE XREF: sub_4269A0+2D7j
.text:00426C87 imul eax, [esp+50h+var_2C]
.text:00426C8C mov ecx, eax
.text:00426C8E mov eax, 66666667h
.text:00426C93 imul ecx
.text:00426C95 mov eax, [esp+50h+var_3C]
.text:00426C99 sar edx, 2
.text:00426C9C mov ecx, edx
.text:00426C9E shr ecx, 1Fh
.text:00426CA1 add ecx, edx
.text:00426CA3 mov edx, [esp+50h+arg_0]
.text:00426CA7 push esi
.text:00426CA8 push eax
.text:00426CA9 mov eax, [esp+58h+var_20]
.text:00426CAD mov word_45BEC0[edx*4], cx
.text:00426CB5 mov ecx, [esp+58h+var_28]
.text:00426CB9 mov edx, [esp+58h+var_24]
.text:00426CBD push ecx
.text:00426CBE mov ecx, [esp+5Ch+var_1C]
.text:00426CC2 push edx
.text:00426CC3 mov edx, [esp+60h+var_38]
.text:00426CC7 push eax
.text:00426CC8 mov eax, [esp+64h+var_18]
.text:00426CCC push ecx
.text:00426CCD mov ecx, [esp+68h+var_14]
.text:00426CD1 push ebx
.text:00426CD2 push edx
.text:00426CD3 mov edx, [esp+70h+var_34]
.text:00426CD7 push eax
.text:00426CD8 push ebp
.text:00426CD9 push ecx
.text:00426CDA mov ecx, [esp+7Ch+var_30]
.text:00426CDE call sub_425950
.text:00426CE3 mov edx, [esp+7Ch+arg_0]
.text:00426CEA mov ecx, [esp+7Ch+var_28]
.text:00426CEE add esp, 2Ch
.text:00426CF1 push esi
.text:00426CF2 mov esi, [esp+54h+var_30]
.text:00426CF6 mov byte_45BEC2[edx*4], al
.text:00426CFD mov eax, [esp+54h+var_3C]
.text:00426D01 mov edx, [esp+54h+var_24]
.text:00426D05 push eax
.text:00426D06 mov eax, [esp+58h+var_20]
.text:00426D0A push ecx
.text:00426D0B mov ecx, [esp+5Ch+var_1C]
.text:00426D0F push edx
.text:00426D10 mov edx, [esp+60h+var_38]
.text:00426D14 push eax
.text:00426D15 mov eax, [esp+64h+var_18]
.text:00426D19 push ecx
.text:00426D1A mov ecx, [esp+68h+var_14]
.text:00426D1E push edx
.text:00426D1F push eax
.text:00426D20 push ebp
.text:00426D21 push edi
.text:00426D22 mov edi, [esp+78h+var_34]
.text:00426D26 push ecx
.text:00426D27 mov edx, ebx
.text:00426D29 call sub_425670
.text:00426D2E mov edx, [esp+7Ch+arg_0]
.text:00426D35 add esp, 2Ch
.text:00426D38 pop edi
.text:00426D39 pop esi
.text:00426D3A pop ebp
.text:00426D3B mov byte_45BEC3[edx*4], al
.text:00426D42 pop ebx
.text:00426D43 add esp, 40h
.text:00426D46 retn
.text:00426D46 sub_4269A0 endp
Houdini w32 1_CPU
build 2010-05-15
by Robert Houdart*
Code: Select all
.text:00428340 ; =============== S U B R O U T I N E =======================================
.text:00428340
.text:00428340
.text:00428340 sub_428340 proc near ; CODE XREF: sub_40FF90+CAp
.text:00428340
.text:00428340 var_48 = dword ptr -48h
.text:00428340 var_44 = dword ptr -44h
.text:00428340 var_40 = dword ptr -40h
.text:00428340 var_3C = dword ptr -3Ch
.text:00428340 var_38 = dword ptr -38h
.text:00428340 var_34 = dword ptr -34h
.text:00428340 var_30 = dword ptr -30h
.text:00428340 var_2C = dword ptr -2Ch
.text:00428340 var_28 = dword ptr -28h
.text:00428340 var_24 = dword ptr -24h
.text:00428340 var_20 = dword ptr -20h
.text:00428340 var_1C = dword ptr -1Ch
.text:00428340 var_18 = dword ptr -18h
.text:00428340 var_14 = dword ptr -14h
.text:00428340 var_10 = dword ptr -10h
.text:00428340 var_C = dword ptr -0Ch
.text:00428340 var_8 = dword ptr -8
.text:00428340 var_4 = dword ptr -4
.text:00428340
.text:00428340 push ebp
.text:00428341 mov ebp, esp
.text:00428343 and esp, 0FFFFFFF8h
.text:00428346 sub esp, 48h
.text:00428349 push ebx
.text:0042834A push ebp
.text:0042834B push esi
.text:0042834C xor eax, eax
.text:0042834E push edi
.text:0042834F mov [esp+58h+var_1C], eax
.text:00428353 mov [esp+58h+var_18], offset word_5C14FC
.text:0042835B jmp short loc_428364
.text:0042835B ; ---------------------------------------------------------------------------
.text:0042835D align 10h
.text:00428360
.text:00428360 loc_428360: ; CODE XREF: sub_428340+399j
.text:00428360 mov eax, [esp+58h+var_1C]
.text:00428364
.text:00428364 loc_428364: ; CODE XREF: sub_428340+1Bj
.text:00428364 mov ebp, eax
.text:00428366 and ebp, 80000001h
.text:0042836C jns short loc_428373
.text:0042836E dec ebp
.text:0042836F or ebp, 0FFFFFFFEh
.text:00428372 inc ebp
.text:00428373
.text:00428373 loc_428373: ; CODE XREF: sub_428340+2Cj
.text:00428373 cdq
.text:00428374 sub eax, edx
.text:00428376 sar eax, 1
.text:00428378 mov ebx, eax
.text:0042837A and ebx, 80000001h
.text:00428380 jns short loc_428387
.text:00428382 dec ebx
.text:00428383 or ebx, 0FFFFFFFEh
.text:00428386 inc ebx
.text:00428387
.text:00428387 loc_428387: ; CODE XREF: sub_428340+40j
.text:00428387 cdq
.text:00428388 sub eax, edx
.text:0042838A mov ecx, eax
.text:0042838C sar ecx, 1
.text:0042838E mov eax, 55555556h
.text:00428393 imul ecx
.text:00428395 mov eax, edx
.text:00428397 shr eax, 1Fh
.text:0042839A add eax, edx
.text:0042839C lea edx, [eax+eax*2]
.text:0042839F sub ecx, edx
.text:004283A1 mov [esp+58h+var_40], ecx
.text:004283A5 mov ecx, eax
.text:004283A7 mov eax, 55555556h
.text:004283AC imul ecx
.text:004283AE mov eax, edx
.text:004283B0 shr eax, 1Fh
.text:004283B3 add eax, edx
.text:004283B5 lea edx, [eax+eax*2]
.text:004283B8 sub ecx, edx
.text:004283BA mov edi, eax
.text:004283BC and edi, 80000001h
.text:004283C2 mov [esp+58h+var_48], ecx
.text:004283C6 jns short loc_4283CD
.text:004283C8 dec edi
.text:004283C9 or edi, 0FFFFFFFEh
.text:004283CC inc edi
.text:004283CD
.text:004283CD loc_4283CD: ; CODE XREF: sub_428340+86j
.text:004283CD cdq
.text:004283CE sub eax, edx
.text:004283D0 sar eax, 1
.text:004283D2 mov ecx, eax
.text:004283D4 and ecx, 80000001h
.text:004283DA mov [esp+58h+var_10], edi
.text:004283DE jns short loc_4283E5
.text:004283E0 dec ecx
.text:004283E1 or ecx, 0FFFFFFFEh
.text:004283E4 inc ecx
.text:004283E5
.text:004283E5 loc_4283E5: ; CODE XREF: sub_428340+9Ej
.text:004283E5 cdq
.text:004283E6 sub eax, edx
.text:004283E8 sar eax, 1
.text:004283EA mov [esp+58h+var_24], ecx
.text:004283EE mov ecx, eax
.text:004283F0 and ecx, 80000001h
.text:004283F6 jns short loc_4283FD
.text:004283F8 dec ecx
.text:004283F9 or ecx, 0FFFFFFFEh
.text:004283FC inc ecx
.text:004283FD
.text:004283FD loc_4283FD: ; CODE XREF: sub_428340+B6j
.text:004283FD cdq
.text:004283FE sub eax, edx
.text:00428400 sar eax, 1
.text:00428402 mov [esp+58h+var_30], ecx
.text:00428406 mov ecx, eax
.text:00428408 and ecx, 80000001h
.text:0042840E jns short loc_428415
.text:00428410 dec ecx
.text:00428411 or ecx, 0FFFFFFFEh
.text:00428414 inc ecx
.text:00428415
.text:00428415 loc_428415: ; CODE XREF: sub_428340+CEj
.text:00428415 cdq
.text:00428416 sub eax, edx
.text:00428418 mov [esp+58h+var_34], ecx
.text:0042841C mov ecx, eax
.text:0042841E sar ecx, 1
.text:00428420 mov eax, 55555556h
.text:00428425 imul ecx
.text:00428427 mov eax, edx
.text:00428429 shr eax, 1Fh
.text:0042842C add eax, edx
.text:0042842E lea edx, [eax+eax*2]
.text:00428431 mov esi, eax
.text:00428433 sub ecx, edx
.text:00428435 mov eax, 55555556h
.text:0042843A imul esi
.text:0042843C mov [esp+58h+var_3C], ecx
.text:00428440 mov ecx, edx
.text:00428442 shr ecx, 1Fh
.text:00428445 add ecx, edx
.text:00428447 lea eax, [ecx+ecx*2]
.text:0042844A sub esi, eax
.text:0042844C mov eax, 38E38E39h
.text:00428451 imul ecx
.text:00428453 sar edx, 1
.text:00428455 mov [esp+58h+var_44], esi
.text:00428459 mov esi, edx
.text:0042845B shr esi, 1Fh
.text:0042845E add esi, edx
.text:00428460 lea edx, [esi+esi*8]
.text:00428463 sub ecx, edx
.text:00428465 mov eax, 38E38E39h
.text:0042846A imul esi
.text:0042846C sar edx, 1
.text:0042846E mov eax, edx
.text:00428470 shr eax, 1Fh
.text:00428473 add eax, edx
.text:00428475 mov edx, [esp+58h+var_48]
.text:00428479 lea eax, [eax+eax*8]
.text:0042847C sub esi, eax
.text:0042847E mov eax, [esp+58h+var_34]
.text:00428482 add eax, [esp+58h+var_30]
.text:00428486 push ebx
.text:00428487 push edx
.text:00428488 push eax
.text:00428489 mov [esp+64h+var_2C], eax
.text:0042848D mov eax, [esp+64h+var_44]
.text:00428491 push eax
.text:00428492 mov eax, [esp+68h+var_40]
.text:00428496 mov [esp+68h+var_28], esi
.text:0042849A mov edx, [esp+68h+var_28]
.text:0042849E mov esi, [esp+68h+var_24]
.text:004284A2 push edx
.text:004284A3 mov edx, [esp+6Ch+var_3C]
.text:004284A7 push ebp
.text:004284A8 push eax
.text:004284A9 add esi, edi
.text:004284AB push esi
.text:004284AC push edx
.text:004284AD push ecx
.text:004284AE mov [esp+80h+var_20], ecx
.text:004284B2 call sub_428150
.text:004284B7 mov ecx, [esp+80h+var_48]
.text:004284BB mov [esp+80h+var_8], eax
.text:004284BF mov [esp+80h+var_4], edx
.text:004284C3 mov edx, [esp+80h+var_2C]
.text:004284C7 lea eax, [ebx+ebp]
.text:004284CA lea eax, [ecx+eax*2]
.text:004284CD add eax, [esp+80h+var_40]
.text:004284D1 add esp, 28h
.text:004284D4 lea ecx, [edx+eax*2]
.text:004284D7 add ecx, eax
.text:004284D9 mov eax, [esp+58h+var_8]
.text:004284DD movsx edx, ax
.text:004284E0 mov [esp+58h+var_14], edx
.text:004284E4 mov edx, [esp+58h+var_4]
.text:004284E8 add ecx, esi
.text:004284EA add ecx, [esp+58h+var_44]
.text:004284EE shrd eax, edx, 10h
.text:004284F2 add ecx, [esp+58h+var_3C]
.text:004284F6 shr edx, 10h
.text:004284F9 cwde
.text:004284FA xor edx, edx
.text:004284FC cmp [esp+58h+var_14], edx
.text:00428500 setl dl
.text:00428503 add eax, edx
.text:00428505 movsx edx, word ptr [esp+58h+var_4]
.text:0042850A mov [esp+58h+var_38], eax
.text:0042850E mov eax, 0
.text:00428513 sets al
.text:00428516 add edx, eax
.text:00428518 mov [esp+58h+var_C], edx
.text:0042851C cmp ecx, 8
.text:0042851F jg short loc_428558
.text:00428521 mov eax, [esp+58h+var_4]
.text:00428525 mov edi, [esp+58h+var_C]
.text:00428529 shr eax, 10h
.text:0042852C xor edx, edx
.text:0042852E test edi, edi
.text:00428530 sets dl
.text:00428533 imul edi, ecx
.text:00428536 cwde
.text:00428537 add eax, edx
.text:00428539 mov edx, 8
.text:0042853E sub edx, ecx
.text:00428540 imul eax, edx
.text:00428543 add eax, edi
.text:00428545 mov edi, [esp+58h+var_10]
.text:00428549 cdq
.text:0042854A and edx, 7
.text:0042854D add eax, edx
.text:0042854F sar eax, 3
.text:00428552 mov [esp+58h+var_38], eax
.text:00428556 jmp short loc_42859F
.text:00428558 ; ---------------------------------------------------------------------------
.text:00428558
.text:00428558 loc_428558: ; CODE XREF: sub_428340+1DFj
.text:00428558 cmp ecx, 18h
.text:0042855B jg short loc_42857C
.text:0042855D mov eax, 18h
.text:00428562 sub eax, ecx
.text:00428564 imul eax, edx
.text:00428567 add ecx, 0FFFFFFF8h
.text:0042856A imul ecx, [esp+58h+var_38]
.text:0042856F add eax, ecx
.text:00428571 cdq
.text:00428572 and edx, 0Fh
.text:00428575 add eax, edx
.text:00428577 sar eax, 4
.text:0042857A jmp short loc_42859B
.text:0042857C ; ---------------------------------------------------------------------------
.text:0042857C
.text:0042857C loc_42857C: ; CODE XREF: sub_428340+21Bj
.text:0042857C mov eax, 20h
.text:00428581 sub eax, ecx
.text:00428583 imul eax, [esp+58h+var_38]
.text:00428588 add ecx, 0FFFFFFE8h
.text:0042858B imul ecx, [esp+58h+var_14]
.text:00428590 add eax, ecx
.text:00428592 cdq
.text:00428593 and edx, 7
.text:00428596 add eax, edx
.text:00428598 sar eax, 3
.text:0042859B
.text:0042859B loc_42859B: ; CODE XREF: sub_428340+23Aj
.text:0042859B mov [esp+58h+var_38], eax
.text:0042859F
.text:0042859F loc_42859F: ; CODE XREF: sub_428340+216j
.text:0042859F test eax, eax
.text:004285A1 jle short loc_4285DB
.text:004285A3 mov eax, [esp+58h+var_48]
.text:004285A7 mov ecx, [esp+58h+var_34]
.text:004285AB mov edx, [esp+58h+var_30]
.text:004285AF push ebx
.text:004285B0 push eax
.text:004285B1 mov eax, [esp+60h+var_2C]
.text:004285B5 push ecx
.text:004285B6 mov ecx, [esp+64h+var_44]
.text:004285BA push edx
.text:004285BB mov edx, [esp+68h+var_28]
.text:004285BF push eax
.text:004285C0 mov eax, [esp+6Ch+var_40]
.text:004285C4 push ecx
.text:004285C5 mov ecx, [esp+70h+var_24]
.text:004285C9 push edx
.text:004285CA mov edx, [esp+74h+var_3C]
.text:004285CE push ebp
.text:004285CF push eax
.text:004285D0 mov eax, [esp+7Ch+var_20]
.text:004285D4 push ecx
.text:004285D5 push edi
.text:004285D6 push esi
.text:004285D7 push edx
.text:004285D8 push eax
.text:004285D9 jmp short loc_428611
.text:004285DB ; ---------------------------------------------------------------------------
.text:004285DB
.text:004285DB loc_4285DB: ; CODE XREF: sub_428340+261j
.text:004285DB mov ecx, [esp+58h+var_40]
.text:004285DF mov edx, [esp+58h+var_24]
.text:004285E3 mov eax, [esp+58h+var_3C]
.text:004285E7 push ebp
.text:004285E8 push ecx
.text:004285E9 mov ecx, [esp+60h+var_20]
.text:004285ED push edx
.text:004285EE mov edx, [esp+64h+var_48]
.text:004285F2 push edi
.text:004285F3 push esi
.text:004285F4 push eax
.text:004285F5 mov eax, [esp+70h+var_34]
.text:004285F9 push ecx
.text:004285FA mov ecx, [esp+74h+var_30]
.text:004285FE push ebx
.text:004285FF push edx
.text:00428600 mov edx, [esp+7Ch+var_2C]
.text:00428604 push eax
.text:00428605 mov eax, [esp+80h+var_44]
.text:00428609 push ecx
.text:0042860A mov ecx, [esp+84h+var_28]
.text:0042860E push edx
.text:0042860F push eax
.text:00428610 push ecx
.text:00428611
.text:00428611 loc_428611: ; CODE XREF: sub_428340+299j
.text:00428611 call sub_427B30
.text:00428616 imul eax, [esp+90h+var_38]
.text:0042861B mov ecx, eax
.text:0042861D mov eax, 66666667h
.text:00428622 imul ecx
.text:00428624 mov ecx, [esp+90h+var_18]
.text:00428628 add esp, 38h
.text:0042862B sar edx, 2
.text:0042862E push ebx
.text:0042862F mov eax, edx
.text:00428631 shr eax, 1Fh
.text:00428634 add eax, edx
.text:00428636 mov edx, [esp+5Ch+var_48]
.text:0042863A push edx
.text:0042863B mov edx, [esp+60h+var_2C]
.text:0042863F mov [ecx-4], ax
.text:00428643 mov eax, [esp+60h+var_34]
.text:00428647 mov ecx, [esp+60h+var_30]
.text:0042864B push eax
.text:0042864C mov eax, [esp+64h+var_44]
.text:00428650 push ecx
.text:00428651 mov ecx, [esp+68h+var_40]
.text:00428655 push edx
.text:00428656 mov edx, [esp+6Ch+var_24]
.text:0042865A push eax
.text:0042865B mov eax, [esp+70h+var_3C]
.text:0042865F push ebp
.text:00428660 push ecx
.text:00428661 mov ecx, [esp+78h+var_20]
.text:00428665 push edx
.text:00428666 push edi
.text:00428667 mov edi, [esp+80h+var_28]
.text:0042866B push esi
.text:0042866C push eax
.text:0042866D push ecx
.text:0042866E call sub_4279E0
.text:00428673 mov edi, [esp+8Ch+var_18]
.text:00428677 mov ecx, [esp+8Ch+var_34]
.text:0042867B add esp, 34h
.text:0042867E push ebx
.text:0042867F mov [edi-2], al
.text:00428682 mov eax, [esp+5Ch+var_48]
.text:00428686 push eax
.text:00428687 mov eax, [esp+60h+var_2C]
.text:0042868B push ecx
.text:0042868C mov ecx, [esp+64h+var_44]
.text:00428690 xor edx, edx
.text:00428692 mov [edi], dx
.text:00428695 mov edx, [esp+64h+var_30]
.text:00428699 push edx
.text:0042869A mov edx, [esp+68h+var_28]
.text:0042869E push eax
.text:0042869F mov eax, [esp+6Ch+var_40]
.text:004286A3 push ecx
.text:004286A4 mov ecx, [esp+70h+var_24]
.text:004286A8 push edx
.text:004286A9 mov edx, [esp+74h+var_10]
.text:004286AD push ebp
.text:004286AE push eax
.text:004286AF mov eax, [esp+7Ch+var_3C]
.text:004286B3 push ecx
.text:004286B4 mov ecx, [esp+80h+var_20]
.text:004286B8 push edx
.text:004286B9 push esi
.text:004286BA push eax
.text:004286BB push ecx
.text:004286BC push edi
.text:004286BD call sub_427640
.text:004286C2 inc [esp+94h+var_1C]
.text:004286C6 mov [edi-1], al
.text:004286C9 add edi, 6
.text:004286CC add esp, 3Ch
.text:004286CF mov [esp+58h+var_18], edi
.text:004286D3 cmp edi, offset dword_82867C
.text:004286D9 jl loc_428360
.text:004286DF pop edi
.text:004286E0 pop esi
.text:004286E1 pop ebp
.text:004286E2 pop ebx
.text:004286E3 mov esp, ebp
.text:004286E5 pop ebp
.text:004286E6 retn
.text:004286E6 sub_428340 endp
RobboLito 009 Source Code values.c
Code: Select all
static void Material_calculation(int c)
{
int white_queen, black_queen, white_rook, black_rook, white_light, black_light, white_dark, black_dark,
white_knight, black_knight, white_pawn, black_pawn, n, value, white_bishop, black_bishop;
int ca, white_load, black_load, phase, va1, va2, va3, va4;
uint64 va;
n = c;
white_queen = n % 2;
n /= 2;
black_queen = n % 2;
n /= 2;
white_rook = n % 3;
n /= 3;
black_rook = n % 3;
n /= 3;
white_light = n % 2;
n /= 2;
white_dark = n % 2;
n /= 2;
black_light = n % 2;
n /= 2;
black_dark = n % 2;
n /= 2;
white_knight = n % 3;
n /= 3;
black_knight = n % 3;
n /= 3;
white_pawn = n % 9;
n /= 9;
black_pawn = n % 9;
white_bishop = white_light + white_dark;
black_bishop = black_light + black_dark;
va =
value_value(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen,
black_pawn, black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
phase =
PHASE_MINOR * (white_knight + white_bishop + black_knight + black_bishop)
+ PHASE_ROOK * (white_rook + black_rook) + PHASE_QUEEN * (white_queen + black_queen);
va1 = va & 0xffff;
va2 = ((va >> 16) & 0xffff) + (va1 > 0x8000);
va1 = (sint16)va1;
va3 = ((va >> 32) & 0xffff) + (va2 > 0x8000);
va2 = (sint16)va2;
va4 = ((va >> 48) & 0xffff) + (va3 > 0x8000);
va3 = (sint16)va3;
va4 = (sint16)va4;
if (phase < 8)
{
va4 *= 8 - phase;
va3 *= phase;
va = va3 + va4;
value = ((int)va) / 8;
}
else if (phase < 24)
{
va3 *= 24 - phase;
va2 *= phase - 8;
va = va2 + va3;
value = ((int)va) / 16;
}
else
{
va2 *= 32 - phase;
va1 *= phase - 24;
va = va1 + va2;
value = ((int)va) / 8;
}
white_load =
load_white(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen, black_pawn,
black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
black_load =
load_black(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen, black_pawn,
black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
if (value > 0)
ca = white_load;
else
ca = black_load;
value *= ca;
value /= 10;
MATERIAL[c].value = value;
MATERIAL[c].sign =
sign_initialization(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen,
black_pawn, black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
MATERIAL[c].flags =
flags_initialization(white_pawn, white_knight, white_bishop, white_light, white_dark, white_rook, white_queen,
black_pawn, black_knight, black_bishop, black_light, black_dark, black_rook, black_queen);
}
*Modified