RobboLito 0.09 w32
Aug 4 2010 19:40:41
basic windows version by kranium, improved by sentinel
Code: Select all
.text:0040AC20 ; =============== S U B R O U T I N E =======================================
.text:0040AC20
.text:0040AC20 ; Attributes: bp-based frame
.text:0040AC20
.text:0040AC20 sub_40AC20 proc near ; CODE XREF: sub_411840+51p
.text:0040AC20 ; sub_411840+1CCp ...
.text:0040AC20
.text:0040AC20 var_10 = dword ptr -10h
.text:0040AC20 var_C = dword ptr -0Ch
.text:0040AC20 var_8 = qword ptr -8
.text:0040AC20 arg_0 = dword ptr 8
.text:0040AC20 arg_4 = dword ptr 0Ch
.text:0040AC20
.text:0040AC20 push ebp
.text:0040AC21 mov ebp, esp
.text:0040AC23 sub esp, 10h
.text:0040AC26 push ebx
.text:0040AC27 mov ebx, dword_73E940
.text:0040AC2D movzx eax, byte ptr [ebx+1Ah]
.text:0040AC31 push esi
.text:0040AC32 mov esi, dword ptr qword_780EA8+4
.text:0040AC38 push edi
.text:0040AC39 test eax, eax
.text:0040AC3B jz loc_40ACCD
.text:0040AC41 mov edx, dword ptr qword_780EA8
.text:0040AC47 mov edi, esi
.text:0040AC49 shrd edx, edi, 9
.text:0040AC4D and edx, dword_5F5FC0[eax*8]
.text:0040AC54 shr edi, 9
.text:0040AC57 and edi, dword_5F5FC4[eax*8]
.text:0040AC5E and edx, 7F7F7F7Fh
.text:0040AC64 and edi, 7F7F7Fh
.text:0040AC6A or edx, edi
.text:0040AC6C jz short loc_40AC87
.text:0040AC6E lea edx, [eax+9]
.text:0040AC71 shl edx, 6
.text:0040AC74 or edx, dword_44919C
.text:0040AC7A or edx, eax
.text:0040AC7C or edx, 3000h
.text:0040AC82 mov [ecx], edx
.text:0040AC84 add ecx, 4
.text:0040AC87
.text:0040AC87 loc_40AC87: ; CODE XREF: sub_40AC20+4Cj
.text:0040AC87 mov edx, dword ptr qword_780EA8
.text:0040AC8D mov edi, esi
.text:0040AC8F shrd edx, edi, 7
.text:0040AC93 and edx, dword_5F5FC0[eax*8]
.text:0040AC9A shr edi, 7
.text:0040AC9D and edi, dword_5F5FC4[eax*8]
.text:0040ACA4 and edx, 0FEFEFEFEh
.text:0040ACAA and edi, 0FEFEFEh
.text:0040ACB0 or edx, edi
.text:0040ACB2 jz short loc_40ACCD
.text:0040ACB4 lea edx, [eax+7]
.text:0040ACB7 shl edx, 6
.text:0040ACBA or edx, dword_44919C
.text:0040ACC0 or edx, eax
.text:0040ACC2 or edx, 3000h
.text:0040ACC8 mov [ecx], edx
.text:0040ACCA add ecx, 4
.text:0040ACCD
.text:0040ACCD loc_40ACCD: ; CODE XREF: sub_40AC20+1Bj
.text:0040ACCD ; sub_40AC20+92j
.text:0040ACCD mov edx, [ebx+28h]
.text:0040ACD0 mov edi, [ebx+2Ch]
.text:0040ACD3 mov eax, [ebp+arg_0]
.text:0040ACD6 mov ebx, [ebp+arg_4]
.text:0040ACD9 and edx, eax
.text:0040ACDB and edi, ebx
.text:0040ACDD or edx, edi
.text:0040ACDF jz loc_40B29C
.text:0040ACE5 mov edi, dword ptr qword_780EA8
.text:0040ACEB mov edx, esi
.text:0040ACED shrd edi, edx, 9
.text:0040ACF1 shr edx, 9
.text:0040ACF4 and edi, eax
.text:0040ACF6 and edi, 7F7F7F00h
.text:0040ACFC and edx, ebx
.text:0040ACFE and edx, 7F7F7Fh
.text:0040AD04 mov eax, edi
.text:0040AD06 or eax, edx
.text:0040AD08 mov [ebp+var_10], edi
.text:0040AD0B mov [ebp+var_C], edx
.text:0040AD0E jz short loc_40AD63
.text:0040AD10
.text:0040AD10 loc_40AD10: ; CODE XREF: sub_40AC20+13Bj
.text:0040AD10 mov eax, [ebp+var_10]
.text:0040AD13 test eax, eax
.text:0040AD15 jz short loc_40AD1C
.text:0040AD17 bsf eax, eax
.text:0040AD1A jmp short loc_40AD23
.text:0040AD1C ; ---------------------------------------------------------------------------
.text:0040AD1C
.text:0040AD1C loc_40AD1C: ; CODE XREF: sub_40AC20+F5j
.text:0040AD1C bsf eax, [ebp+var_C]
.text:0040AD20 add eax, 20h
.text:0040AD23
.text:0040AD23 loc_40AD23: ; CODE XREF: sub_40AC20+FAj
.text:0040AD23 movzx esi, byte_780E20[eax]
.text:0040AD2A mov dword ptr [ebp+var_8+4], eax
.text:0040AD2D add eax, 9
.text:0040AD30 shl eax, 6
.text:0040AD33 or eax, dword_449198[esi*4]
.text:0040AD3A add ecx, 4
.text:0040AD3D or eax, dword ptr [ebp+var_8+4]
.text:0040AD40 mov esi, edx
.text:0040AD42 mov [ecx-4], eax
.text:0040AD45 mov eax, edi
.text:0040AD47 add eax, 0FFFFFFFFh
.text:0040AD4A adc esi, 0FFFFFFFFh
.text:0040AD4D and edi, eax
.text:0040AD4F and edx, esi
.text:0040AD51 mov eax, edi
.text:0040AD53 or eax, edx
.text:0040AD55 mov [ebp+var_10], edi
.text:0040AD58 mov [ebp+var_C], edx
.text:0040AD5B jnz short loc_40AD10
.text:0040AD5D mov esi, dword ptr qword_780EA8+4
.text:0040AD63
.text:0040AD63 loc_40AD63: ; CODE XREF: sub_40AC20+EEj
.text:0040AD63 mov edx, dword ptr qword_780EA8
.text:0040AD69 shrd edx, esi, 7
.text:0040AD6D and edx, [ebp+arg_0]
.text:0040AD70 shr esi, 7
.text:0040AD73 and edx, 0FEFEFE00h
.text:0040AD79 and esi, ebx
.text:0040AD7B and esi, 0FEFEFEh
.text:0040AD81 mov eax, edx
.text:0040AD83 or eax, esi
.text:0040AD85 mov [ebp+var_10], edx
.text:0040AD88 mov [ebp+var_C], esi
.text:0040AD8B jz short loc_40ADDD
.text:0040AD8D lea ecx, [ecx+0]
.text:0040AD90
.text:0040AD90 loc_40AD90: ; CODE XREF: sub_40AC20+1BBj
.text:0040AD90 mov eax, [ebp+var_10]
.text:0040AD93 test eax, eax
.text:0040AD95 jz short loc_40AD9C
.text:0040AD97 bsf eax, eax
.text:0040AD9A jmp short loc_40ADA3
.text:0040AD9C ; ---------------------------------------------------------------------------
.text:0040AD9C
.text:0040AD9C loc_40AD9C: ; CODE XREF: sub_40AC20+175j
.text:0040AD9C bsf eax, [ebp+var_C]
.text:0040ADA0 add eax, 20h
.text:0040ADA3
.text:0040ADA3 loc_40ADA3: ; CODE XREF: sub_40AC20+17Aj
.text:0040ADA3 movzx edi, byte_780E20[eax]
.text:0040ADAA mov dword ptr [ebp+var_8+4], eax
.text:0040ADAD add eax, 7
.text:0040ADB0 shl eax, 6
.text:0040ADB3 or eax, dword_449198[edi*4]
.text:0040ADBA add ecx, 4
.text:0040ADBD or eax, dword ptr [ebp+var_8+4]
.text:0040ADC0 mov edi, esi
.text:0040ADC2 mov [ecx-4], eax
.text:0040ADC5 mov eax, edx
.text:0040ADC7 add eax, 0FFFFFFFFh
.text:0040ADCA adc edi, 0FFFFFFFFh
.text:0040ADCD and edx, eax
.text:0040ADCF and esi, edi
.text:0040ADD1 mov eax, edx
.text:0040ADD3 or eax, esi
.text:0040ADD5 mov [ebp+var_10], edx
.text:0040ADD8 mov [ebp+var_C], esi
.text:0040ADDB jnz short loc_40AD90
.text:0040ADDD
.text:0040ADDD loc_40ADDD: ; CODE XREF: sub_40AC20+16Bj
.text:0040ADDD mov eax, dword ptr qword_780EB0
.text:0040ADE2 mov edx, dword ptr qword_780EB0+4
.text:0040ADE8 mov dword ptr [ebp+var_8], eax
.text:0040ADEB or eax, edx
.text:0040ADED mov dword ptr [ebp+var_8+4], edx
.text:0040ADF0 jz loc_40AE99
.text:0040ADF6
.text:0040ADF6 loc_40ADF6: ; CODE XREF: sub_40AC20+273j
.text:0040ADF6 mov eax, dword ptr [ebp+var_8]
.text:0040ADF9 test eax, eax
.text:0040ADFB jz short loc_40AE02
.text:0040ADFD bsf eax, eax
.text:0040AE00 jmp short loc_40AE09
.text:0040AE02 ; ---------------------------------------------------------------------------
.text:0040AE02
.text:0040AE02 loc_40AE02: ; CODE XREF: sub_40AC20+1DBj
.text:0040AE02 bsf eax, dword ptr [ebp+var_8+4]
.text:0040AE06 add eax, 20h
.text:0040AE09
.text:0040AE09 loc_40AE09: ; CODE XREF: sub_40AC20+1E0j
.text:0040AE09 mov edx, dword_5F7720[eax*8]
.text:0040AE10 and edx, [ebp+arg_0]
.text:0040AE13 mov esi, dword_5F7724[eax*8]
.text:0040AE1A and esi, ebx
.text:0040AE1C mov edi, edx
.text:0040AE1E or edi, esi
.text:0040AE20 mov [ebp+var_10], edx
.text:0040AE23 mov [ebp+var_C], esi
.text:0040AE26 jz short loc_40AE77
.text:0040AE28 mov edi, eax
.text:0040AE2A shl edi, 6
.text:0040AE2D lea ecx, [ecx+0]
.text:0040AE30
.text:0040AE30 loc_40AE30: ; CODE XREF: sub_40AC20+252j
.text:0040AE30 mov eax, [ebp+var_10]
.text:0040AE33 test eax, eax
.text:0040AE35 jz short loc_40AE3C
.text:0040AE37 bsf eax, eax
.text:0040AE3A jmp short loc_40AE43
.text:0040AE3C ; ---------------------------------------------------------------------------
.text:0040AE3C
.text:0040AE3C loc_40AE3C: ; CODE XREF: sub_40AC20+215j
.text:0040AE3C bsf eax, [ebp+var_C]
.text:0040AE40 add eax, 20h
.text:0040AE43
.text:0040AE43 loc_40AE43: ; CODE XREF: sub_40AC20+21Aj
.text:0040AE43 movzx ebx, byte_780E20[eax]
.text:0040AE4A mov ebx, dword_4491D8[ebx*4]
.text:0040AE51 or ebx, edi
.text:0040AE53 or ebx, eax
.text:0040AE55 mov [ecx], ebx
.text:0040AE57 mov eax, edx
.text:0040AE59 add ecx, 4
.text:0040AE5C add eax, 0FFFFFFFFh
.text:0040AE5F mov ebx, esi
.text:0040AE61 adc ebx, 0FFFFFFFFh
.text:0040AE64 and edx, eax
.text:0040AE66 and esi, ebx
.text:0040AE68 mov eax, edx
.text:0040AE6A or eax, esi
.text:0040AE6C mov [ebp+var_10], edx
.text:0040AE6F mov [ebp+var_C], esi
.text:0040AE72 jnz short loc_40AE30
.text:0040AE74 mov ebx, [ebp+arg_4]
.text:0040AE77
.text:0040AE77 loc_40AE77: ; CODE XREF: sub_40AC20+206j
.text:0040AE77 mov eax, dword ptr [ebp+var_8]
.text:0040AE7A mov edx, dword ptr [ebp+var_8+4]
.text:0040AE7D mov esi, eax
.text:0040AE7F add esi, 0FFFFFFFFh
.text:0040AE82 mov edi, edx
.text:0040AE84 adc edi, 0FFFFFFFFh
.text:0040AE87 and eax, esi
.text:0040AE89 and edx, edi
.text:0040AE8B mov dword ptr [ebp+var_8], eax
.text:0040AE8E or eax, edx
.text:0040AE90 mov dword ptr [ebp+var_8+4], edx
.text:0040AE93 jnz loc_40ADF6
.text:0040AE99
.text:0040AE99 loc_40AE99: ; CODE XREF: sub_40AC20+1D0j
.text:0040AE99 mov eax, dword ptr qword_780EC8
.text:0040AE9E or eax, dword ptr qword_780EC0
.text:0040AEA4 mov edx, dword ptr qword_780EC8+4
.text:0040AEAA or edx, dword ptr qword_780EC0+4
.text:0040AEB0 mov dword ptr [ebp+var_8], eax
.text:0040AEB3 or eax, edx
.text:0040AEB5 mov dword ptr [ebp+var_8+4], edx
.text:0040AEB8 jz loc_40AFAF
.text:0040AEBE mov edi, edi
.text:0040AEC0
.text:0040AEC0 loc_40AEC0: ; CODE XREF: sub_40AC20+389j
.text:0040AEC0 mov eax, dword ptr [ebp+var_8]
.text:0040AEC3 test eax, eax
.text:0040AEC5 jz short loc_40AECC
.text:0040AEC7 bsf eax, eax
.text:0040AECA jmp short loc_40AED3
.text:0040AECC ; ---------------------------------------------------------------------------
.text:0040AECC
.text:0040AECC loc_40AECC: ; CODE XREF: sub_40AC20+2A5j
.text:0040AECC bsf eax, dword ptr [ebp+var_8+4]
.text:0040AED0 add eax, 20h
.text:0040AED3
.text:0040AED3 loc_40AED3: ; CODE XREF: sub_40AC20+2AAj
.text:0040AED3 movd xmm1, dword_73F120[eax*4]
.text:0040AEDC movq xmm0, qword_780EF8
.text:0040AEE4 psrlq xmm0, xmm1
.text:0040AEE8 movd xmm1, dword_73F020[eax*4]
.text:0040AEF1 movd esi, xmm0
.text:0040AEF5 movq xmm0, qword_780EF0
.text:0040AEFD and esi, 3Fh
.text:0040AF00 mov edx, eax
.text:0040AF02 shl edx, 6
.text:0040AF05 add esi, edx
.text:0040AF07 psrlq xmm0, xmm1
.text:0040AF0B movd edi, xmm0
.text:0040AF0F and edi, 3Fh
.text:0040AF12 add edi, edx
.text:0040AF14 mov edx, dword_723C80[esi*8]
.text:0040AF1B or edx, dword_71BC80[edi*8]
.text:0040AF22 mov esi, dword_723C84[esi*8]
.text:0040AF29 or esi, dword_71BC84[edi*8]
.text:0040AF30 and edx, [ebp+arg_0]
.text:0040AF33 and esi, ebx
.text:0040AF35 mov edi, edx
.text:0040AF37 or edi, esi
.text:0040AF39 mov [ebp+var_10], edx
.text:0040AF3C mov [ebp+var_C], esi
.text:0040AF3F jz short loc_40AF8D
.text:0040AF41 mov edi, eax
.text:0040AF43 shl edi, 6
.text:0040AF46
.text:0040AF46 loc_40AF46: ; CODE XREF: sub_40AC20+368j
.text:0040AF46 mov eax, [ebp+var_10]
.text:0040AF49 test eax, eax
.text:0040AF4B jz short loc_40AF52
.text:0040AF4D bsf eax, eax
.text:0040AF50 jmp short loc_40AF59
.text:0040AF52 ; ---------------------------------------------------------------------------
.text:0040AF52
.text:0040AF52 loc_40AF52: ; CODE XREF: sub_40AC20+32Bj
.text:0040AF52 bsf eax, [ebp+var_C]
.text:0040AF56 add eax, 20h
.text:0040AF59
.text:0040AF59 loc_40AF59: ; CODE XREF: sub_40AC20+330j
.text:0040AF59 movzx ebx, byte_780E20[eax]
.text:0040AF60 mov ebx, dword_449258[ebx*4]
.text:0040AF67 or ebx, edi
.text:0040AF69 or ebx, eax
.text:0040AF6B mov [ecx], ebx
.text:0040AF6D mov eax, edx
.text:0040AF6F add ecx, 4
.text:0040AF72 add eax, 0FFFFFFFFh
.text:0040AF75 mov ebx, esi
.text:0040AF77 adc ebx, 0FFFFFFFFh
.text:0040AF7A and edx, eax
.text:0040AF7C and esi, ebx
.text:0040AF7E mov eax, edx
.text:0040AF80 or eax, esi
.text:0040AF82 mov [ebp+var_10], edx
.text:0040AF85 mov [ebp+var_C], esi
.text:0040AF88 jnz short loc_40AF46
.text:0040AF8A mov ebx, [ebp+arg_4]
.text:0040AF8D
.text:0040AF8D loc_40AF8D: ; CODE XREF: sub_40AC20+31Fj
.text:0040AF8D mov eax, dword ptr [ebp+var_8]
.text:0040AF90 mov edx, dword ptr [ebp+var_8+4]
.text:0040AF93 mov esi, eax
.text:0040AF95 add esi, 0FFFFFFFFh
.text:0040AF98 mov edi, edx
.text:0040AF9A adc edi, 0FFFFFFFFh
.text:0040AF9D and eax, esi
.text:0040AF9F and edx, edi
.text:0040AFA1 mov dword ptr [ebp+var_8], eax
.text:0040AFA4 or eax, edx
.text:0040AFA6 mov dword ptr [ebp+var_8+4], edx
.text:0040AFA9 jnz loc_40AEC0
.text:0040AFAF
.text:0040AFAF loc_40AFAF: ; CODE XREF: sub_40AC20+298j
.text:0040AFAF mov eax, dword ptr qword_780ED0
.text:0040AFB4 mov edx, dword ptr qword_780ED0+4
.text:0040AFBA mov dword ptr [ebp+var_8], eax
.text:0040AFBD or eax, edx
.text:0040AFBF mov dword ptr [ebp+var_8+4], edx
.text:0040AFC2 jz loc_40B0B9
.text:0040AFC8
.text:0040AFC8 loc_40AFC8: ; CODE XREF: sub_40AC20+493j
.text:0040AFC8 mov eax, dword ptr [ebp+var_8]
.text:0040AFCB test eax, eax
.text:0040AFCD jz short loc_40AFD4
.text:0040AFCF bsf eax, eax
.text:0040AFD2 jmp short loc_40AFDB
.text:0040AFD4 ; ---------------------------------------------------------------------------
.text:0040AFD4
.text:0040AFD4 loc_40AFD4: ; CODE XREF: sub_40AC20+3ADj
.text:0040AFD4 bsf eax, dword ptr [ebp+var_8+4]
.text:0040AFD8 add eax, 20h
.text:0040AFDB
.text:0040AFDB loc_40AFDB: ; CODE XREF: sub_40AC20+3B2j
.text:0040AFDB movd xmm1, dword_73F320[eax*4]
.text:0040AFE4 movq xmm0, qword_780EE8
.text:0040AFEC psrlq xmm0, xmm1
.text:0040AFF0 movd xmm1, dword_73F220[eax*4]
.text:0040AFF9 movd esi, xmm0
.text:0040AFFD movq xmm0, qword_780EE0
.text:0040B005 and esi, 3Fh
.text:0040B008 mov edx, eax
.text:0040B00A shl edx, 6
.text:0040B00D add esi, edx
.text:0040B00F psrlq xmm0, xmm1
.text:0040B013 movd edi, xmm0
.text:0040B017 and edi, 3Fh
.text:0040B01A add edi, edx
.text:0040B01C mov edx, dword_733C80[esi*8]
.text:0040B023 or edx, dword_72BC80[edi*8]
.text:0040B02A mov esi, dword_733C84[esi*8]
.text:0040B031 or esi, dword_72BC84[edi*8]
.text:0040B038 and edx, [ebp+arg_0]
.text:0040B03B and esi, ebx
.text:0040B03D mov edi, edx
.text:0040B03F or edi, esi
.text:0040B041 mov [ebp+var_10], edx
.text:0040B044 mov [ebp+var_C], esi
.text:0040B047 jz short loc_40B097
.text:0040B049 mov edi, eax
.text:0040B04B shl edi, 6
.text:0040B04E mov edi, edi
.text:0040B050
.text:0040B050 loc_40B050: ; CODE XREF: sub_40AC20+472j
.text:0040B050 mov eax, [ebp+var_10]
.text:0040B053 test eax, eax
.text:0040B055 jz short loc_40B05C
.text:0040B057 bsf eax, eax
.text:0040B05A jmp short loc_40B063
.text:0040B05C ; ---------------------------------------------------------------------------
.text:0040B05C
.text:0040B05C loc_40B05C: ; CODE XREF: sub_40AC20+435j
.text:0040B05C bsf eax, [ebp+var_C]
.text:0040B060 add eax, 20h
.text:0040B063
.text:0040B063 loc_40B063: ; CODE XREF: sub_40AC20+43Aj
.text:0040B063 movzx ebx, byte_780E20[eax]
.text:0040B06A mov ebx, dword_4492D8[ebx*4]
.text:0040B071 or ebx, edi
.text:0040B073 or ebx, eax
.text:0040B075 mov [ecx], ebx
.text:0040B077 mov eax, edx
.text:0040B079 add ecx, 4
.text:0040B07C add eax, 0FFFFFFFFh
.text:0040B07F mov ebx, esi
.text:0040B081 adc ebx, 0FFFFFFFFh
.text:0040B084 and edx, eax
.text:0040B086 and esi, ebx
.text:0040B088 mov eax, edx
.text:0040B08A or eax, esi
.text:0040B08C mov [ebp+var_10], edx
.text:0040B08F mov [ebp+var_C], esi
.text:0040B092 jnz short loc_40B050
.text:0040B094 mov ebx, [ebp+arg_4]
.text:0040B097
.text:0040B097 loc_40B097: ; CODE XREF: sub_40AC20+427j
.text:0040B097 mov eax, dword ptr [ebp+var_8]
.text:0040B09A mov edx, dword ptr [ebp+var_8+4]
.text:0040B09D mov esi, eax
.text:0040B09F add esi, 0FFFFFFFFh
.text:0040B0A2 mov edi, edx
.text:0040B0A4 adc edi, 0FFFFFFFFh
.text:0040B0A7 and eax, esi
.text:0040B0A9 and edx, edi
.text:0040B0AB mov dword ptr [ebp+var_8], eax
.text:0040B0AE or eax, edx
.text:0040B0B0 mov dword ptr [ebp+var_8+4], edx
.text:0040B0B3 jnz loc_40AFC8
.text:0040B0B9
.text:0040B0B9 loc_40B0B9: ; CODE XREF: sub_40AC20+3A2j
.text:0040B0B9 mov eax, dword ptr qword_780ED8
.text:0040B0BE mov edx, dword ptr qword_780ED8+4
.text:0040B0C4 mov dword ptr [ebp+var_8], eax
.text:0040B0C7 or eax, edx
.text:0040B0C9 mov dword ptr [ebp+var_8+4], edx
.text:0040B0CC jz loc_40B21C
.text:0040B0D2
.text:0040B0D2 loc_40B0D2: ; CODE XREF: sub_40AC20+5F6j
.text:0040B0D2 mov eax, dword ptr [ebp+var_8]
.text:0040B0D5 test eax, eax
.text:0040B0D7 jz short loc_40B0DE
.text:0040B0D9 bsf eax, eax
.text:0040B0DC jmp short loc_40B0E5
.text:0040B0DE ; ---------------------------------------------------------------------------
.text:0040B0DE
.text:0040B0DE loc_40B0DE: ; CODE XREF: sub_40AC20+4B7j
.text:0040B0DE bsf eax, dword ptr [ebp+var_8+4]
.text:0040B0E2 add eax, 20h
.text:0040B0E5
.text:0040B0E5 loc_40B0E5: ; CODE XREF: sub_40AC20+4BCj
.text:0040B0E5 movd xmm1, dword_73F320[eax*4]
.text:0040B0EE movq xmm0, qword_780EE8
.text:0040B0F6 psrlq xmm0, xmm1
.text:0040B0FA movd xmm1, dword_73F220[eax*4]
.text:0040B103 movd esi, xmm0
.text:0040B107 movq xmm0, qword_780EE0
.text:0040B10F and esi, 3Fh
.text:0040B112 psrlq xmm0, xmm1
.text:0040B116 movd xmm1, dword_73F120[eax*4]
.text:0040B11F mov edi, eax
.text:0040B121 shl edi, 6
.text:0040B124 add esi, edi
.text:0040B126 mov edx, dword_733C80[esi*8]
.text:0040B12D mov esi, dword_733C84[esi*8]
.text:0040B134 movd ebx, xmm0
.text:0040B138 movq xmm0, qword_780EF8
.text:0040B140 and ebx, 3Fh
.text:0040B143 add ebx, edi
.text:0040B145 or edx, dword_72BC80[ebx*8]
.text:0040B14C or esi, dword_72BC84[ebx*8]
.text:0040B153 psrlq xmm0, xmm1
.text:0040B157 movd xmm1, dword_73F020[eax*4]
.text:0040B160 movd ebx, xmm0
.text:0040B164 movq xmm0, qword_780EF0
.text:0040B16C and ebx, 3Fh
.text:0040B16F add ebx, edi
.text:0040B171 or edx, dword_723C80[ebx*8]
.text:0040B178 or esi, dword_723C84[ebx*8]
.text:0040B17F psrlq xmm0, xmm1
.text:0040B183 movd ebx, xmm0
.text:0040B187 and ebx, 3Fh
.text:0040B18A add ebx, edi
.text:0040B18C or edx, dword_71BC80[ebx*8]
.text:0040B193 or esi, dword_71BC84[ebx*8]
.text:0040B19A and edx, [ebp+arg_0]
.text:0040B19D mov ebx, [ebp+arg_4]
.text:0040B1A0 and esi, ebx
.text:0040B1A2 mov edi, edx
.text:0040B1A4 or edi, esi
.text:0040B1A6 mov [ebp+var_10], edx
.text:0040B1A9 mov [ebp+var_C], esi
.text:0040B1AC jz short loc_40B1FA
.text:0040B1AE mov edi, eax
.text:0040B1B0 shl edi, 6
.text:0040B1B3
.text:0040B1B3 loc_40B1B3: ; CODE XREF: sub_40AC20+5D5j
.text:0040B1B3 mov eax, [ebp+var_10]
.text:0040B1B6 test eax, eax
.text:0040B1B8 jz short loc_40B1BF
.text:0040B1BA bsf eax, eax
.text:0040B1BD jmp short loc_40B1C6
.text:0040B1BF ; ---------------------------------------------------------------------------
.text:0040B1BF
.text:0040B1BF loc_40B1BF: ; CODE XREF: sub_40AC20+598j
.text:0040B1BF bsf eax, [ebp+var_C]
.text:0040B1C3 add eax, 20h
.text:0040B1C6
.text:0040B1C6 loc_40B1C6: ; CODE XREF: sub_40AC20+59Dj
.text:0040B1C6 movzx ebx, byte_780E20[eax]
.text:0040B1CD mov ebx, dword_449318[ebx*4]
.text:0040B1D4 or ebx, edi
.text:0040B1D6 or ebx, eax
.text:0040B1D8 mov [ecx], ebx
.text:0040B1DA mov eax, edx
.text:0040B1DC add ecx, 4
.text:0040B1DF add eax, 0FFFFFFFFh
.text:0040B1E2 mov ebx, esi
.text:0040B1E4 adc ebx, 0FFFFFFFFh
.text:0040B1E7 and edx, eax
.text:0040B1E9 and esi, ebx
.text:0040B1EB mov eax, edx
.text:0040B1ED or eax, esi
.text:0040B1EF mov [ebp+var_10], edx
.text:0040B1F2 mov [ebp+var_C], esi
.text:0040B1F5 jnz short loc_40B1B3
.text:0040B1F7 mov ebx, [ebp+arg_4]
.text:0040B1FA
.text:0040B1FA loc_40B1FA: ; CODE XREF: sub_40AC20+58Cj
.text:0040B1FA mov eax, dword ptr [ebp+var_8]
.text:0040B1FD mov edx, dword ptr [ebp+var_8+4]
.text:0040B200 mov esi, eax
.text:0040B202 add esi, 0FFFFFFFFh
.text:0040B205 mov edi, edx
.text:0040B207 adc edi, 0FFFFFFFFh
.text:0040B20A and eax, esi
.text:0040B20C and edx, edi
.text:0040B20E mov dword ptr [ebp+var_8], eax
.text:0040B211 or eax, edx
.text:0040B213 mov dword ptr [ebp+var_8+4], edx
.text:0040B216 jnz loc_40B0D2
.text:0040B21C
.text:0040B21C loc_40B21C: ; CODE XREF: sub_40AC20+4ACj
.text:0040B21C mov eax, dword_780EB8
.text:0040B221 test eax, eax
.text:0040B223 jz short loc_40B22A
.text:0040B225 bsf eax, eax
.text:0040B228 jmp short loc_40B234
.text:0040B22A ; ---------------------------------------------------------------------------
.text:0040B22A
.text:0040B22A loc_40B22A: ; CODE XREF: sub_40AC20+603j
.text:0040B22A bsf eax, dword_780EBC
.text:0040B231 add eax, 20h
.text:0040B234
.text:0040B234 loc_40B234: ; CODE XREF: sub_40AC20+608j
.text:0040B234 mov edx, dword_73C700[eax*8]
.text:0040B23B and edx, [ebp+arg_0]
.text:0040B23E mov esi, dword_73C704[eax*8]
.text:0040B245 and esi, ebx
.text:0040B247 mov edi, edx
.text:0040B249 or edi, esi
.text:0040B24B mov [ebp+var_10], edx
.text:0040B24E mov [ebp+var_C], esi
.text:0040B251 jz short loc_40B29C
.text:0040B253 mov edi, eax
.text:0040B255 shl edi, 6
.text:0040B258
.text:0040B258 loc_40B258: ; CODE XREF: sub_40AC20+67Aj
.text:0040B258 mov eax, [ebp+var_10]
.text:0040B25B test eax, eax
.text:0040B25D jz short loc_40B264
.text:0040B25F bsf eax, eax
.text:0040B262 jmp short loc_40B26B
.text:0040B264 ; ---------------------------------------------------------------------------
.text:0040B264
.text:0040B264 loc_40B264: ; CODE XREF: sub_40AC20+63Dj
.text:0040B264 bsf eax, [ebp+var_C]
.text:0040B268 add eax, 20h
.text:0040B26B
.text:0040B26B loc_40B26B: ; CODE XREF: sub_40AC20+642j
.text:0040B26B movzx ebx, byte_780E20[eax]
.text:0040B272 mov ebx, dword_449218[ebx*4]
.text:0040B279 or ebx, edi
.text:0040B27B or ebx, eax
.text:0040B27D mov [ecx], ebx
.text:0040B27F mov eax, edx
.text:0040B281 add ecx, 4
.text:0040B284 add eax, 0FFFFFFFFh
.text:0040B287 mov ebx, esi
.text:0040B289 adc ebx, 0FFFFFFFFh
.text:0040B28C and edx, eax
.text:0040B28E and esi, ebx
.text:0040B290 mov eax, edx
.text:0040B292 or eax, esi
.text:0040B294 mov [ebp+var_10], edx
.text:0040B297 mov [ebp+var_C], esi
.text:0040B29A jnz short loc_40B258
.text:0040B29C
.text:0040B29C loc_40B29C: ; CODE XREF: sub_40AC20+BFj
.text:0040B29C ; sub_40AC20+631j
.text:0040B29C mov eax, dword ptr qword_780EA8
.text:0040B2A1 and eax, 0FF00h
.text:0040B2A6 xor edx, edx
.text:0040B2A8 mov dword ptr [ebp+var_8], eax
.text:0040B2AB or eax, edx
.text:0040B2AD mov dword ptr [ebp+var_8+4], edx
.text:0040B2B0 jz loc_40B44C
.text:0040B2B6
.text:0040B2B6 loc_40B2B6: ; CODE XREF: sub_40AC20+826j
.text:0040B2B6 mov eax, dword ptr [ebp+var_8]
.text:0040B2B9 test eax, eax
.text:0040B2BB jz short loc_40B2C2
.text:0040B2BD bsf eax, eax
.text:0040B2C0 jmp short loc_40B2C9
.text:0040B2C2 ; ---------------------------------------------------------------------------
.text:0040B2C2
.text:0040B2C2 loc_40B2C2: ; CODE XREF: sub_40AC20+69Bj
.text:0040B2C2 bsf eax, dword ptr [ebp+var_8+4]
.text:0040B2C6 add eax, 20h
.text:0040B2C9
.text:0040B2C9 loc_40B2C9: ; CODE XREF: sub_40AC20+6A0j
.text:0040B2C9 lea esi, [eax-8]
.text:0040B2CC cmp byte_780E20[esi], 0
.text:0040B2D3 jnz short loc_40B317
.text:0040B2D5 mov edx, eax
.text:0040B2D7 or edx, 0FF6001C0h
.text:0040B2DD shl edx, 6
.text:0040B2E0 or edx, esi
.text:0040B2E2 mov [ecx], edx
.text:0040B2E4 mov edx, dword_5F7720[esi*8]
.text:0040B2EB mov edi, dword_5F7724[esi*8]
.text:0040B2F2 and edx, dword_780E78
.text:0040B2F8 and edi, dword_780E7C
.text:0040B2FE add ecx, 4
.text:0040B301 or edx, edi
.text:0040B303 jz short loc_40B317
.text:0040B305 mov edx, eax
.text:0040B307 or edx, 0FF080100h
.text:0040B30D shl edx, 6
.text:0040B310 or edx, esi
.text:0040B312 mov [ecx], edx
.text:0040B314 add ecx, 4
.text:0040B317
.text:0040B317 loc_40B317: ; CODE XREF: sub_40AC20+6B3j
.text:0040B317 ; sub_40AC20+6E3j
.text:0040B317 lea esi, [eax-9]
.text:0040B31A cmp eax, 8
.text:0040B31D jz loc_40B3A2
.text:0040B323 mov edx, dword_5F5FC0[esi*8]
.text:0040B32A mov edi, dword_5F5FC4[esi*8]
.text:0040B331 and edx, [ebp+arg_0]
.text:0040B334 and edi, [ebp+arg_4]
.text:0040B337 or edx, edi
.text:0040B339 jz short loc_40B3A2
.text:0040B33B movzx ebx, byte_780E20[esi]
.text:0040B342 mov edi, dword_449198[ebx*4]
.text:0040B349 mov edx, eax
.text:0040B34B or edx, 1C0h
.text:0040B351 shl edx, 6
.text:0040B354 add edi, 28000000h
.text:0040B35A or edx, edi
.text:0040B35C or edx, esi
.text:0040B35E mov [ecx], edx
.text:0040B360 mov edx, dword_5F7720[esi*8]
.text:0040B367 mov edi, dword_5F7724[esi*8]
.text:0040B36E and edx, dword_780E78
.text:0040B374 and edi, dword_780E7C
.text:0040B37A add ecx, 4
.text:0040B37D or edx, edi
.text:0040B37F jz short loc_40B3A2
.text:0040B381 mov edi, dword_449198[ebx*4]
.text:0040B388 mov edx, eax
.text:0040B38A or edx, 100h
.text:0040B390 shl edx, 6
.text:0040B393 add edi, 1A000000h
.text:0040B399 or edx, edi
.text:0040B39B or edx, esi
.text:0040B39D mov [ecx], edx
.text:0040B39F add ecx, 4
.text:0040B3A2
.text:0040B3A2 loc_40B3A2: ; CODE XREF: sub_40AC20+6FDj
.text:0040B3A2 ; sub_40AC20+719j ...
.text:0040B3A2 lea esi, [eax-7]
.text:0040B3A5 cmp eax, 0Fh
.text:0040B3A8 jz loc_40B42A
.text:0040B3AE mov edx, dword_5F5FC0[esi*8]
.text:0040B3B5 mov edi, dword_5F5FC4[esi*8]
.text:0040B3BC and edx, [ebp+arg_0]
.text:0040B3BF and edi, [ebp+arg_4]
.text:0040B3C2 or edx, edi
.text:0040B3C4 jz short loc_40B42A
.text:0040B3C6 movzx ebx, byte_780E20[esi]
.text:0040B3CD mov edi, dword_449198[ebx*4]
.text:0040B3D4 mov edx, eax
.text:0040B3D6 or edx, 1C0h
.text:0040B3DC shl edx, 6
.text:0040B3DF add edi, 28000000h
.text:0040B3E5 or edx, edi
.text:0040B3E7 or edx, esi
.text:0040B3E9 mov [ecx], edx
.text:0040B3EB mov edx, dword_5F7720[esi*8]
.text:0040B3F2 mov edi, dword_5F7724[esi*8]
.text:0040B3F9 and edx, dword_780E78
.text:0040B3FF and edi, dword_780E7C
.text:0040B405 add ecx, 4
.text:0040B408 or edx, edi
.text:0040B40A jz short loc_40B42A
.text:0040B40C mov edx, dword_449198[ebx*4]
.text:0040B413 or eax, 100h
.text:0040B418 shl eax, 6
.text:0040B41B add edx, 1A000000h
.text:0040B421 or eax, edx
.text:0040B423 or eax, esi
.text:0040B425 mov [ecx], eax
.text:0040B427 add ecx, 4
.text:0040B42A
.text:0040B42A loc_40B42A: ; CODE XREF: sub_40AC20+788j
.text:0040B42A ; sub_40AC20+7A4j ...
.text:0040B42A mov eax, dword ptr [ebp+var_8]
.text:0040B42D mov edx, dword ptr [ebp+var_8+4]
.text:0040B430 mov esi, eax
.text:0040B432 add esi, 0FFFFFFFFh
.text:0040B435 mov edi, edx
.text:0040B437 adc edi, 0FFFFFFFFh
.text:0040B43A and eax, esi
.text:0040B43C and edx, edi
.text:0040B43E mov dword ptr [ebp+var_8], eax
.text:0040B441 or eax, edx
.text:0040B443 mov dword ptr [ebp+var_8+4], edx
.text:0040B446 jnz loc_40B2B6
.text:0040B44C
.text:0040B44C loc_40B44C: ; CODE XREF: sub_40AC20+690j
.text:0040B44C pop edi
.text:0040B44D pop esi
.text:0040B44E mov eax, ecx
.text:0040B450 mov dword ptr [ecx], 0
.text:0040B456 pop ebx
.text:0040B457 mov esp, ebp
.text:0040B459 pop ebp
.text:0040B45A retn
.text:0040B45A sub_40AC20 endp
build 2010-05-15
by Robert Houdart*
Code: Select all
.text:0040A6E0 sub_40A6E0 proc near ; CODE XREF: sub_411C80+5Bp
.text:0040A6E0 ; sub_411C80+24Dp ...
.text:0040A6E0
.text:0040A6E0 var_18 = dword ptr -18h
.text:0040A6E0 var_C = dword ptr -0Ch
.text:0040A6E0 var_8 = dword ptr -8
.text:0040A6E0 arg_0 = dword ptr 4
.text:0040A6E0 arg_4 = dword ptr 8
.text:0040A6E0
.text:0040A6E0 mov ecx, dword_5854F0
.text:0040A6E6 movzx ecx, byte ptr [ecx+1Ah]
.text:0040A6EA sub esp, 18h
.text:0040A6ED push ebx
.text:0040A6EE push ebp
.text:0040A6EF push esi
.text:0040A6F0 mov esi, dword ptr qword_585468
.text:0040A6F6 push edi
.text:0040A6F7 test ecx, ecx
.text:0040A6F9 jz loc_40A797
.text:0040A6FF mov edi, dword ptr qword_585468+4
.text:0040A705 mov edx, esi
.text:0040A707 and edx, 0FEFEFEFEh
.text:0040A70D and edi, 0FEFEFEh
.text:0040A713 shld edi, edx, 7
.text:0040A717 and edi, dword ptr (qword_828A78+4)[ecx*8]
.text:0040A71E shl edx, 7
.text:0040A721 and edx, dword ptr qword_828A78[ecx*8]
.text:0040A728 or edx, edi
.text:0040A72A jz short loc_40A74B
.text:0040A72C lea edx, [ecx-7]
.text:0040A72F shl edx, 6
.text:0040A732 add edx, ecx
.text:0040A734 or edx, dword_9313F4
.text:0040A73A or edx, 3000h
.text:0040A740 mov [eax], edx
.text:0040A742 mov esi, dword ptr qword_585468
.text:0040A748 add eax, 4
.text:0040A74B
.text:0040A74B loc_40A74B: ; CODE XREF: sub_40A6E0+4Aj
.text:0040A74B mov edi, dword ptr qword_585468+4
.text:0040A751 mov edx, esi
.text:0040A753 and edx, 7F7F7F7Fh
.text:0040A759 and edi, 0FFFF7F7Fh
.text:0040A75F shld edi, edx, 9
.text:0040A763 and edi, dword ptr (qword_828A78+4)[ecx*8]
.text:0040A76A shl edx, 9
.text:0040A76D and edx, dword ptr qword_828A78[ecx*8]
.text:0040A774 or edx, edi
.text:0040A776 jz short loc_40A797
.text:0040A778 lea edx, [ecx-9]
.text:0040A77B shl edx, 6
.text:0040A77E add edx, ecx
.text:0040A780 or edx, dword_9313F4
.text:0040A786 or edx, 3000h
.text:0040A78C mov [eax], edx
.text:0040A78E mov esi, dword ptr qword_585468
.text:0040A794 add eax, 4
.text:0040A797
.text:0040A797 loc_40A797: ; CODE XREF: sub_40A6E0+19j
.text:0040A797 ; sub_40A6E0+96j
.text:0040A797 mov edx, dword_5854F0
.text:0040A79D mov ecx, [edx+20h]
.text:0040A7A0 mov edx, [edx+24h]
.text:0040A7A3 and ecx, [esp+28h+arg_0]
.text:0040A7A7 and edx, [esp+28h+arg_4]
.text:0040A7AB or ecx, edx
.text:0040A7AD jz loc_40AC0C
.text:0040A7B3 mov edi, dword ptr qword_585468+4
.text:0040A7B9 mov ebp, [esp+28h+arg_0]
.text:0040A7BD mov ecx, esi
.text:0040A7BF and ecx, 0FEFEFEFEh
.text:0040A7C5 and edi, 0FEFEh
.text:0040A7CB shld edi, ecx, 7
.text:0040A7CF shl ecx, 7
.text:0040A7D2 mov edx, ecx
.text:0040A7D4 mov ecx, edi
.text:0040A7D6 and ecx, [esp+28h+arg_4]
.text:0040A7DA and edx, ebp
.text:0040A7DC mov edi, edx
.text:0040A7DE or edi, ecx
.text:0040A7E0 jz short loc_40A826
.text:0040A7E2
.text:0040A7E2 loc_40A7E2: ; CODE XREF: sub_40A6E0+13Ej
.text:0040A7E2 bsf esi, edx
.text:0040A7E5 jnz short loc_40A7F1
.text:0040A7E7 bsf esi, ecx
.text:0040A7EA mov [esp+28h+var_18], esi
.text:0040A7EE add esi, 20h
.text:0040A7F1
.text:0040A7F1 loc_40A7F1: ; CODE XREF: sub_40A6E0+105j
.text:0040A7F1 mov edi, edx
.text:0040A7F3 add edi, 0FFFFFFFFh
.text:0040A7F6 mov ebx, ecx
.text:0040A7F8 adc ebx, 0FFFFFFFFh
.text:0040A7FB and ecx, ebx
.text:0040A7FD lea ebx, [esi-7]
.text:0040A800 and edx, edi
.text:0040A802 movzx edi, byte_585380[esi]
.text:0040A809 shl ebx, 6
.text:0040A80C add ebx, esi
.text:0040A80E or ebx, dword_9313D0[edi*4]
.text:0040A815 mov esi, edx
.text:0040A817 mov [eax], ebx
.text:0040A819 add eax, 4
.text:0040A81C or esi, ecx
.text:0040A81E jnz short loc_40A7E2
.text:0040A820 mov esi, dword ptr qword_585468
.text:0040A826
.text:0040A826 loc_40A826: ; CODE XREF: sub_40A6E0+100j
.text:0040A826 mov ecx, dword ptr qword_585468+4
.text:0040A82C and esi, 7F7F7F7Fh
.text:0040A832 and ecx, 7F7Fh
.text:0040A838 shld ecx, esi, 9
.text:0040A83C and ecx, [esp+28h+arg_4]
.text:0040A840 shl esi, 9
.text:0040A843 mov edx, esi
.text:0040A845 and edx, ebp
.text:0040A847 mov esi, edx
.text:0040A849 or esi, ecx
.text:0040A84B jz short loc_40A88B
.text:0040A84D
.text:0040A84D loc_40A84D: ; CODE XREF: sub_40A6E0+1A9j
.text:0040A84D bsf esi, edx
.text:0040A850 jnz short loc_40A85C
.text:0040A852 bsf esi, ecx
.text:0040A855 mov [esp+28h+var_18], esi
.text:0040A859 add esi, 20h
.text:0040A85C
.text:0040A85C loc_40A85C: ; CODE XREF: sub_40A6E0+170j
.text:0040A85C mov edi, edx
.text:0040A85E add edi, 0FFFFFFFFh
.text:0040A861 mov ebx, ecx
.text:0040A863 adc ebx, 0FFFFFFFFh
.text:0040A866 and ecx, ebx
.text:0040A868 lea ebx, [esi-9]
.text:0040A86B and edx, edi
.text:0040A86D movzx edi, byte_585380[esi]
.text:0040A874 shl ebx, 6
.text:0040A877 add ebx, esi
.text:0040A879 or ebx, dword_9313D0[edi*4]
.text:0040A880 mov esi, edx
.text:0040A882 mov [eax], ebx
.text:0040A884 add eax, 4
.text:0040A887 or esi, ecx
.text:0040A889 jnz short loc_40A84D
.text:0040A88B
.text:0040A88B loc_40A88B: ; CODE XREF: sub_40A6E0+16Bj
.text:0040A88B cmp byte_585401, 0FFh
.text:0040A892 mov edi, offset byte_585401
.text:0040A897 jz short loc_40A90C
.text:0040A899 lea esp, [esp+0]
.text:0040A8A0
.text:0040A8A0 loc_40A8A0: ; CODE XREF: sub_40A6E0+22Aj
.text:0040A8A0 movzx esi, byte ptr [edi]
.text:0040A8A3 mov edx, dword_8F2178[esi*8]
.text:0040A8AA mov ecx, dword_8F217C[esi*8]
.text:0040A8B1 and ecx, [esp+28h+arg_4]
.text:0040A8B5 and edx, ebp
.text:0040A8B7 inc edi
.text:0040A8B8 mov ebx, edx
.text:0040A8BA or ebx, ecx
.text:0040A8BC mov [esp+28h+var_C], edi
.text:0040A8C0 jz short loc_40A907
.text:0040A8C2 shl esi, 6
.text:0040A8C5 mov edi, esi
.text:0040A8C7
.text:0040A8C7 loc_40A8C7: ; CODE XREF: sub_40A6E0+21Dj
.text:0040A8C7 bsf esi, edx
.text:0040A8CA jnz short loc_40A8D6
.text:0040A8CC bsf esi, ecx
.text:0040A8CF mov [esp+28h+var_18], esi
.text:0040A8D3 add esi, 20h
.text:0040A8D6
.text:0040A8D6 loc_40A8D6: ; CODE XREF: sub_40A6E0+1EAj
.text:0040A8D6 mov ebx, edx
.text:0040A8D8 add ebx, 0FFFFFFFFh
.text:0040A8DB mov ebp, ecx
.text:0040A8DD adc ebp, 0FFFFFFFFh
.text:0040A8E0 and edx, ebx
.text:0040A8E2 movzx ebx, byte_585380[esi]
.text:0040A8E9 add esi, edi
.text:0040A8EB or esi, dword_931410[ebx*4]
.text:0040A8F2 and ecx, ebp
.text:0040A8F4 mov [eax], esi
.text:0040A8F6 mov esi, edx
.text:0040A8F8 add eax, 4
.text:0040A8FB or esi, ecx
.text:0040A8FD jnz short loc_40A8C7
.text:0040A8FF mov ebp, [esp+28h+arg_0]
.text:0040A903 mov edi, [esp+28h+var_C]
.text:0040A907
.text:0040A907 loc_40A907: ; CODE XREF: sub_40A6E0+1E0j
.text:0040A907 cmp byte ptr [edi], 0FFh
.text:0040A90A jnz short loc_40A8A0
.text:0040A90C
.text:0040A90C loc_40A90C: ; CODE XREF: sub_40A6E0+1B7j
.text:0040A90C cmp byte_58540C, 0FFh
.text:0040A913 mov ebx, offset byte_58540C
.text:0040A918 jz loc_40A9CC
.text:0040A91E mov edi, edi
.text:0040A920
.text:0040A920 loc_40A920: ; CODE XREF: sub_40A6E0+2E6j
.text:0040A920 movzx esi, byte ptr [ebx]
.text:0040A923 mov ecx, dword_926270[esi*8]
.text:0040A92A and ecx, dword ptr qword_5854E0
.text:0040A930 mov edx, dword_926274[esi*8]
.text:0040A937 and edx, dword ptr qword_5854E0+4
.text:0040A93D mov edi, ds:dword_438B00[esi*8]
.text:0040A944 imul edx, ds:dword_438B04[esi*8]
.text:0040A94C imul edi, ecx
.text:0040A94F mov ecx, ds:dword_438F00[esi*4]
.text:0040A956 xor edx, edi
.text:0040A958 shr edx, cl
.text:0040A95A inc ebx
.text:0040A95B add edx, dword_8F2378[esi*4]
.text:0040A962 mov edi, dword_926D00[edx*8]
.text:0040A969 mov ecx, dword_926D04[edx*8]
.text:0040A970 and ecx, [esp+28h+arg_4]
.text:0040A974 and edi, ebp
.text:0040A976 mov edx, edi
.text:0040A978 or edx, ecx
.text:0040A97A jz short loc_40A9C3
.text:0040A97C shl esi, 6
.text:0040A97F mov [esp+28h+var_18], esi
.text:0040A983
.text:0040A983 loc_40A983: ; CODE XREF: sub_40A6E0+2DDj
.text:0040A983 bsf edx, edi
.text:0040A986 jnz short loc_40A992
.text:0040A988 bsf edx, ecx
.text:0040A98B mov [esp+28h+var_C], edx
.text:0040A98F add edx, 20h
.text:0040A992
.text:0040A992 loc_40A992: ; CODE XREF: sub_40A6E0+2A6j
.text:0040A992 mov esi, edi
.text:0040A994 add esi, 0FFFFFFFFh
.text:0040A997 mov ebp, ecx
.text:0040A999 adc ebp, 0FFFFFFFFh
.text:0040A99C and ecx, ebp
.text:0040A99E mov ebp, [esp+28h+var_18]
.text:0040A9A2 and edi, esi
.text:0040A9A4 movzx esi, byte_585380[edx]
.text:0040A9AB add ebp, edx
.text:0040A9AD or ebp, dword_931490[esi*4]
.text:0040A9B4 mov edx, edi
.text:0040A9B6 mov [eax], ebp
.text:0040A9B8 add eax, 4
.text:0040A9BB or edx, ecx
.text:0040A9BD jnz short loc_40A983
.text:0040A9BF mov ebp, [esp+28h+arg_0]
.text:0040A9C3
.text:0040A9C3 loc_40A9C3: ; CODE XREF: sub_40A6E0+29Aj
.text:0040A9C3 cmp byte ptr [ebx], 0FFh
.text:0040A9C6 jnz loc_40A920
.text:0040A9CC
.text:0040A9CC loc_40A9CC: ; CODE XREF: sub_40A6E0+238j
.text:0040A9CC cmp byte_585417, 0FFh
.text:0040A9D3 mov ebx, offset byte_585417
.text:0040A9D8 jz loc_40AA8C
.text:0040A9DE mov edi, edi
.text:0040A9E0
.text:0040A9E0 loc_40A9E0: ; CODE XREF: sub_40A6E0+3A6j
.text:0040A9E0 movzx esi, byte ptr [ebx]
.text:0040A9E3 mov ecx, dword_829CB8[esi*8]
.text:0040A9EA and ecx, dword ptr qword_5854E0
.text:0040A9F0 mov edx, dword_829CBC[esi*8]
.text:0040A9F7 and edx, dword ptr qword_5854E0+4
.text:0040A9FD mov edi, ds:dword_438D00[esi*8]
.text:0040AA04 imul edx, ds:dword_438D04[esi*8]
.text:0040AA0C imul edi, ecx
.text:0040AA0F mov ecx, ds:dword_439000[esi*4]
.text:0040AA16 xor edx, edi
.text:0040AA18 shr edx, cl
.text:0040AA1A inc ebx
.text:0040AA1B add edx, dword_8FBB68[esi*4]
.text:0040AA22 mov edi, dword_829EF8[edx*8]
.text:0040AA29 mov ecx, dword_829EFC[edx*8]
.text:0040AA30 and ecx, [esp+28h+arg_4]
.text:0040AA34 and edi, ebp
.text:0040AA36 mov edx, edi
.text:0040AA38 or edx, ecx
.text:0040AA3A jz short loc_40AA83
.text:0040AA3C shl esi, 6
.text:0040AA3F mov [esp+28h+var_18], esi
.text:0040AA43
.text:0040AA43 loc_40AA43: ; CODE XREF: sub_40A6E0+39Dj
.text:0040AA43 bsf edx, edi
.text:0040AA46 jnz short loc_40AA52
.text:0040AA48 bsf edx, ecx
.text:0040AA4B mov [esp+28h+var_C], edx
.text:0040AA4F add edx, 20h
.text:0040AA52
.text:0040AA52 loc_40AA52: ; CODE XREF: sub_40A6E0+366j
.text:0040AA52 mov esi, edi
.text:0040AA54 add esi, 0FFFFFFFFh
.text:0040AA57 mov ebp, ecx
.text:0040AA59 adc ebp, 0FFFFFFFFh
.text:0040AA5C and ecx, ebp
.text:0040AA5E mov ebp, [esp+28h+var_18]
.text:0040AA62 and edi, esi
.text:0040AA64 movzx esi, byte_585380[edx]
.text:0040AA6B add ebp, edx
.text:0040AA6D or ebp, dword_931510[esi*4]
.text:0040AA74 mov edx, edi
.text:0040AA76 mov [eax], ebp
.text:0040AA78 add eax, 4
.text:0040AA7B or edx, ecx
.text:0040AA7D jnz short loc_40AA43
.text:0040AA7F mov ebp, [esp+28h+arg_0]
.text:0040AA83
.text:0040AA83 loc_40AA83: ; CODE XREF: sub_40A6E0+35Aj
.text:0040AA83 cmp byte ptr [ebx], 0FFh
.text:0040AA86 jnz loc_40A9E0
.text:0040AA8C
.text:0040AA8C loc_40AA8C: ; CODE XREF: sub_40A6E0+2F8j
.text:0040AA8C cmp byte_585422, 0FFh
.text:0040AA93 mov ebx, offset byte_585422
.text:0040AA98 jz loc_40AB9C
.text:0040AA9E
.text:0040AA9E loc_40AA9E: ; CODE XREF: sub_40A6E0+4B6j
.text:0040AA9E movzx edx, byte ptr [ebx]
.text:0040AAA1 mov ecx, dword_926270[edx*8]
.text:0040AAA8 and ecx, dword ptr qword_5854E0
.text:0040AAAE mov edi, dword_926274[edx*8]
.text:0040AAB5 and edi, dword ptr qword_5854E0+4
.text:0040AABB mov ebp, dword_829CB8[edx*8]
.text:0040AAC2 imul edi, ds:dword_438B04[edx*8]
.text:0040AACA and ebp, dword ptr qword_5854E0
.text:0040AAD0 mov esi, dword_829CBC[edx*8]
.text:0040AAD7 and esi, dword ptr qword_5854E0+4
.text:0040AADD mov [esp+28h+var_8], ecx
.text:0040AAE1 mov ecx, ds:dword_438B00[edx*8]
.text:0040AAE8 imul esi, ds:dword_438D04[edx*8]
.text:0040AAF0 imul ecx, [esp+28h+var_8]
.text:0040AAF5 xor edi, ecx
.text:0040AAF7 mov ecx, ds:dword_438F00[edx*4]
.text:0040AAFE shr edi, cl
.text:0040AB00 mov ecx, ds:dword_438D00[edx*8]
.text:0040AB07 imul ecx, ebp
.text:0040AB0A add edi, dword_8F2378[edx*4]
.text:0040AB11 xor esi, ecx
.text:0040AB13 mov ecx, ds:dword_439000[edx*4]
.text:0040AB1A mov ebp, dword_926D00[edi*8]
.text:0040AB21 shr esi, cl
.text:0040AB23 mov ecx, dword_926D04[edi*8]
.text:0040AB2A inc ebx
.text:0040AB2B add esi, dword_8FBB68[edx*4]
.text:0040AB32 or ebp, dword_829EF8[esi*8]
.text:0040AB39 or ecx, dword_829EFC[esi*8]
.text:0040AB40 and ebp, [esp+28h+arg_0]
.text:0040AB44 and ecx, [esp+28h+arg_4]
.text:0040AB48 mov esi, ebp
.text:0040AB4A or esi, ecx
.text:0040AB4C jz short loc_40AB93
.text:0040AB4E shl edx, 6
.text:0040AB51 mov [esp+28h+var_18], edx
.text:0040AB55
.text:0040AB55 loc_40AB55: ; CODE XREF: sub_40A6E0+4B1j
.text:0040AB55 bsf esi, ebp
.text:0040AB58 jnz short loc_40AB66
.text:0040AB5A bsf edx, ecx
.text:0040AB5D mov esi, edx
.text:0040AB5F mov [esp+28h+var_C], edx
.text:0040AB63 add esi, 20h
.text:0040AB66
.text:0040AB66 loc_40AB66: ; CODE XREF: sub_40A6E0+478j
.text:0040AB66 mov edx, ebp
.text:0040AB68 add edx, 0FFFFFFFFh
.text:0040AB6B mov edi, ecx
.text:0040AB6D adc edi, 0FFFFFFFFh
.text:0040AB70 and ecx, edi
.text:0040AB72 mov edi, [esp+28h+var_18]
.text:0040AB76 and ebp, edx
.text:0040AB78 movzx edx, byte_585380[esi]
.text:0040AB7F add edi, esi
.text:0040AB81 or edi, dword_931550[edx*4]
.text:0040AB88 mov edx, ebp
.text:0040AB8A mov [eax], edi
.text:0040AB8C add eax, 4
.text:0040AB8F or edx, ecx
.text:0040AB91 jnz short loc_40AB55
.text:0040AB93
.text:0040AB93 loc_40AB93: ; CODE XREF: sub_40A6E0+46Cj
.text:0040AB93 cmp byte ptr [ebx], 0FFh
.text:0040AB96 jnz loc_40AA9E
.text:0040AB9C
.text:0040AB9C loc_40AB9C: ; CODE XREF: sub_40A6E0+3B8j
.text:0040AB9C mov ecx, dword_5854F0
.text:0040ABA2 mov edx, [ecx+28h]
.text:0040ABA5 movzx esi, byte_5854E8
.text:0040ABAC mov ecx, [ecx+2Ch]
.text:0040ABAF not edx
.text:0040ABB1 and edx, dword_926678[esi*8]
.text:0040ABB8 not ecx
.text:0040ABBA and ecx, dword_92667C[esi*8]
.text:0040ABC1 and edx, [esp+28h+arg_0]
.text:0040ABC5 and ecx, [esp+28h+arg_4]
.text:0040ABC9 mov edi, edx
.text:0040ABCB or edi, ecx
.text:0040ABCD jz short loc_40AC0C
.text:0040ABCF shl esi, 6
.text:0040ABD2 mov edi, esi
.text:0040ABD4
.text:0040ABD4 loc_40ABD4: ; CODE XREF: sub_40A6E0+52Aj
.text:0040ABD4 bsf esi, edx
.text:0040ABD7 jnz short loc_40ABE3
.text:0040ABD9 bsf esi, ecx
.text:0040ABDC mov [esp+28h+var_C], esi
.text:0040ABE0 add esi, 20h
.text:0040ABE3
.text:0040ABE3 loc_40ABE3: ; CODE XREF: sub_40A6E0+4F7j
.text:0040ABE3 mov ebx, edx
.text:0040ABE5 add ebx, 0FFFFFFFFh
.text:0040ABE8 mov ebp, ecx
.text:0040ABEA adc ebp, 0FFFFFFFFh
.text:0040ABED and edx, ebx
.text:0040ABEF movzx ebx, byte_585380[esi]
.text:0040ABF6 add esi, edi
.text:0040ABF8 or esi, dword_931450[ebx*4]
.text:0040ABFF and ecx, ebp
.text:0040AC01 mov [eax], esi
.text:0040AC03 mov esi, edx
.text:0040AC05 add eax, 4
.text:0040AC08 or esi, ecx
.text:0040AC0A jnz short loc_40ABD4
.text:0040AC0C
.text:0040AC0C loc_40AC0C: ; CODE XREF: sub_40A6E0+CDj
.text:0040AC0C ; sub_40A6E0+4EDj
.text:0040AC0C mov ebx, dword ptr qword_585468+4
.text:0040AC12 xor ebp, ebp
.text:0040AC14 and ebx, 0FF0000h
.text:0040AC1A mov ecx, ebp
.text:0040AC1C or ecx, ebx
.text:0040AC1E jz loc_40ADB1
.text:0040AC24
.text:0040AC24 loc_40AC24: ; CODE XREF: sub_40A6E0+6C1j
.text:0040AC24 bsf ecx, ebp
.text:0040AC27 jnz short loc_40AC35
.text:0040AC29 bsf edx, ebx
.text:0040AC2C mov ecx, edx
.text:0040AC2E mov [esp+28h+var_C], edx
.text:0040AC32 add ecx, 20h
.text:0040AC35
.text:0040AC35 loc_40AC35: ; CODE XREF: sub_40A6E0+547j
.text:0040AC35 mov edx, ebp
.text:0040AC37 add edx, 0FFFFFFFFh
.text:0040AC3A mov esi, ebx
.text:0040AC3C adc esi, 0FFFFFFFFh
.text:0040AC3F and ebp, edx
.text:0040AC41 and ebx, esi
.text:0040AC43 cmp byte ptr dword_585388[ecx], 0
.text:0040AC4A mov [esp+28h+var_18], ebp
.text:0040AC4E jnz short loc_40AC8F
.text:0040AC50 mov edx, ecx
.text:0040AC52 shl edx, 6
.text:0040AC55 lea edi, [edx+ecx+8]
.text:0040AC59 mov edx, edi
.text:0040AC5B or edx, 0D8007000h
.text:0040AC61 mov [eax], edx
.text:0040AC63 mov edx, dword_8F21B8[ecx*8]
.text:0040AC6A mov esi, dword_8F21BC[ecx*8]
.text:0040AC71 and edx, dword ptr qword_5854B8
.text:0040AC77 and esi, dword ptr qword_5854B8+4
.text:0040AC7D add eax, 4
.text:0040AC80 or edx, esi
.text:0040AC82 jz short loc_40AC8F
.text:0040AC84 or edi, 0C2004000h
.text:0040AC8A mov [eax], edi
.text:0040AC8C add eax, 4
.text:0040AC8F
.text:0040AC8F loc_40AC8F: ; CODE XREF: sub_40A6E0+56Ej
.text:0040AC8F ; sub_40A6E0+5A2j
.text:0040AC8F cmp ecx, 30h
.text:0040AC92 jz loc_40AD18
.text:0040AC98 mov edx, dword ptr qword_828AB0[ecx*8]
.text:0040AC9F mov esi, dword ptr (qword_828AB0+4)[ecx*8]
.text:0040ACA6 and edx, [esp+28h+arg_0]
.text:0040ACAA and esi, [esp+28h+arg_4]
.text:0040ACAE or edx, esi
.text:0040ACB0 jz short loc_40AD18
.text:0040ACB2 movzx edi, byte_585387[ecx]
.text:0040ACB9 mov edx, ecx
.text:0040ACBB shl edx, 6
.text:0040ACBE lea ebp, [edx+ecx+7]
.text:0040ACC2 mov edx, dword_9313D0[edi*4]
.text:0040ACC9 add edx, 28000000h
.text:0040ACCF or edx, ebp
.text:0040ACD1 or edx, 7000h
.text:0040ACD7 mov [eax], edx
.text:0040ACD9 mov edx, dword_8F21B0[ecx*8]
.text:0040ACE0 mov esi, dword_8F21B4[ecx*8]
.text:0040ACE7 and edx, dword ptr qword_5854B8
.text:0040ACED and esi, dword ptr qword_5854B8+4
.text:0040ACF3 add eax, 4
.text:0040ACF6 or edx, esi
.text:0040ACF8 jz short loc_40AD14
.text:0040ACFA mov edx, dword_9313D0[edi*4]
.text:0040AD01 add edx, 1A000000h
.text:0040AD07 or edx, ebp
.text:0040AD09 or edx, 4000h
.text:0040AD0F mov [eax], edx
.text:0040AD11 add eax, 4
.text:0040AD14
.text:0040AD14 loc_40AD14: ; CODE XREF: sub_40A6E0+618j
.text:0040AD14 mov ebp, [esp+28h+var_18]
.text:0040AD18
.text:0040AD18 loc_40AD18: ; CODE XREF: sub_40A6E0+5B2j
.text:0040AD18 ; sub_40A6E0+5D0j
.text:0040AD18 cmp ecx, 37h
.text:0040AD1B jz loc_40AD9D
.text:0040AD21 mov edx, dword ptr qword_828AC0[ecx*8]
.text:0040AD28 mov esi, dword ptr (qword_828AC0+4)[ecx*8]
.text:0040AD2F and edx, [esp+28h+arg_0]
.text:0040AD33 and esi, [esp+28h+arg_4]
.text:0040AD37 or edx, esi
.text:0040AD39 jz short loc_40AD9D
.text:0040AD3B movzx esi, byte ptr (dword_585388+1)[ecx]
.text:0040AD42 mov edx, ecx
.text:0040AD44 shl edx, 6
.text:0040AD47 lea edi, [edx+ecx+9]
.text:0040AD4B mov edx, dword_9313D0[esi*4]
.text:0040AD52 add edx, 28000000h
.text:0040AD58 or edx, edi
.text:0040AD5A or edx, 7000h
.text:0040AD60 mov [eax], edx
.text:0040AD62 mov edx, dword_8F21C0[ecx*8]
.text:0040AD69 mov ecx, dword_8F21C4[ecx*8]
.text:0040AD70 and edx, dword ptr qword_5854B8
.text:0040AD76 and ecx, dword ptr qword_5854B8+4
.text:0040AD7C add eax, 4
.text:0040AD7F or edx, ecx
.text:0040AD81 jz short loc_40AD9D
.text:0040AD83 mov ecx, dword_9313D0[esi*4]
.text:0040AD8A add ecx, 1A000000h
.text:0040AD90 or ecx, edi
.text:0040AD92 or ecx, 4000h
.text:0040AD98 mov [eax], ecx
.text:0040AD9A add eax, 4
.text:0040AD9D
.text:0040AD9D loc_40AD9D: ; CODE XREF: sub_40A6E0+63Bj
.text:0040AD9D ; sub_40A6E0+659j ...
.text:0040AD9D mov edx, ebp
.text:0040AD9F or edx, ebx
.text:0040ADA1 jnz loc_40AC24
.text:0040ADA7 mov [eax], edx
.text:0040ADA9 pop edi
.text:0040ADAA pop esi
.text:0040ADAB pop ebp
.text:0040ADAC pop ebx
.text:0040ADAD add esp, 18h
.text:0040ADB0 retn
.text:0040ADB1 ; ---------------------------------------------------------------------------
.text:0040ADB1
.text:0040ADB1 loc_40ADB1: ; CODE XREF: sub_40A6E0+53Ej
.text:0040ADB1 pop edi
.text:0040ADB2 pop esi
.text:0040ADB3 mov [eax], ebp
.text:0040ADB5 pop ebp
.text:0040ADB6 pop ebx
.text:0040ADB7 add esp, 18h
.text:0040ADBA retn
.text:0040ADBA sub_40A6E0 endp
.text:0040ADBA
.text:0040ADBA ; ---------------------------------------------------------------------------
.text:0040ADBB align 10h
.text:0040ADC0
.text:0040ADC0 ; =============== S U B R O U T I N E =======================================
.text:0040ADC0
.text:0040ADC0
.text:0040ADC0 sub_40ADC0 proc near ; CODE XREF: sub_4120A0+5Bp
.text:0040ADC0 ; sub_4120A0+24Dp ...
.text:0040ADC0
.text:0040ADC0 var_18 = dword ptr -18h
.text:0040ADC0 var_C = dword ptr -0Ch
.text:0040ADC0 var_8 = dword ptr -8
.text:0040ADC0 arg_0 = qword ptr 4
.text:0040ADC0
.text:0040ADC0 mov ecx, dword_5854F0
.text:0040ADC6 movzx edx, byte ptr [ecx+1Ah]
.text:0040ADCA mov ecx, dword ptr qword_5854A8+4
.text:0040ADD0 sub esp, 18h
.text:0040ADD3 push ebx
.text:0040ADD4 push ebp
.text:0040ADD5 push esi
.text:0040ADD6 push edi
.text:0040ADD7 test edx, edx
.text:0040ADD9 jz loc_40AE7F
.text:0040ADDF mov esi, dword ptr qword_5854A8
.text:0040ADE5 mov edi, ecx
.text:0040ADE7 shrd esi, edi, 9
.text:0040ADEB and esi, dword ptr qword_828A78[edx*8]
.text:0040ADF2 shr edi, 9
.text:0040ADF5 and edi, dword ptr (qword_828A78+4)[edx*8]
.text:0040ADFC and esi, 7F7F7F7Fh
.text:0040AE02 and edi, offset byte_7F7F7F
.text:0040AE08 or esi, edi
.text:0040AE0A jz short loc_40AE2F
.text:0040AE0C mov ecx, edx
.text:0040AE0E shl ecx, 6
.text:0040AE11 lea ecx, [ecx+edx+240h]
.text:0040AE18 or ecx, dword_9315D4
.text:0040AE1E or ecx, 3000h
.text:0040AE24 mov [eax], ecx
.text:0040AE26 mov ecx, dword ptr qword_5854A8+4
.text:0040AE2C add eax, 4
.text:0040AE2F
.text:0040AE2F loc_40AE2F: ; CODE XREF: sub_40ADC0+4Aj
.text:0040AE2F mov esi, dword ptr qword_5854A8
.text:0040AE35 mov edi, ecx
.text:0040AE37 shrd esi, edi, 7
.text:0040AE3B and esi, dword ptr qword_828A78[edx*8]
.text:0040AE42 shr edi, 7
.text:0040AE45 and edi, dword ptr (qword_828A78+4)[edx*8]
.text:0040AE4C and esi, 0FEFEFEFEh
.text:0040AE52 and edi, 0FEFEFEh
.text:0040AE58 or esi, edi
.text:0040AE5A jz short loc_40AE7F
.text:0040AE5C mov ecx, edx
.text:0040AE5E shl ecx, 6
.text:0040AE61 lea edx, [ecx+edx+1C0h]
.text:0040AE68 or edx, dword_9315D4
.text:0040AE6E or edx, 3000h
.text:0040AE74 mov [eax], edx
.text:0040AE76 mov ecx, dword ptr qword_5854A8+4
.text:0040AE7C add eax, 4
.text:0040AE7F
.text:0040AE7F loc_40AE7F: ; CODE XREF: sub_40ADC0+19j
.text:0040AE7F ; sub_40ADC0+9Aj
.text:0040AE7F mov esi, dword_5854F0
.text:0040AE85 mov edx, [esi+28h]
.text:0040AE88 mov esi, [esi+2Ch]
.text:0040AE8B and edx, dword ptr [esp+28h+arg_0]
.text:0040AE8F and esi, dword ptr [esp+28h+arg_0+4]
.text:0040AE93 or edx, esi
.text:0040AE95 jz loc_40B2FC
.text:0040AE9B mov esi, dword ptr qword_5854A8
.text:0040AEA1 mov ebp, dword ptr [esp+28h+arg_0]
.text:0040AEA5 mov edx, ecx
.text:0040AEA7 shrd esi, edx, 9
.text:0040AEAB shr edx, 9
.text:0040AEAE and edx, dword ptr [esp+28h+arg_0+4]
.text:0040AEB2 and esi, ebp
.text:0040AEB4 and esi, 7F7F7F00h
.text:0040AEBA and edx, offset byte_7F7F7F
.text:0040AEC0 mov edi, esi
.text:0040AEC2 or edi, edx
.text:0040AEC4 jz short loc_40AF0F
.text:0040AEC6
.text:0040AEC6 loc_40AEC6: ; CODE XREF: sub_40ADC0+147j
.text:0040AEC6 bsf ecx, esi
.text:0040AEC9 jnz short loc_40AED5
.text:0040AECB bsf ecx, edx
.text:0040AECE mov [esp+28h+var_18], ecx
.text:0040AED2 add ecx, 20h
.text:0040AED5
.text:0040AED5 loc_40AED5: ; CODE XREF: sub_40ADC0+109j
.text:0040AED5 mov edi, esi
.text:0040AED7 add edi, 0FFFFFFFFh
.text:0040AEDA mov ebx, edx
.text:0040AEDC adc ebx, 0FFFFFFFFh
.text:0040AEDF and edx, ebx
.text:0040AEE1 mov ebx, ecx
.text:0040AEE3 and esi, edi
.text:0040AEE5 movzx edi, byte_585380[ecx]
.text:0040AEEC shl ebx, 6
.text:0040AEEF lea ecx, [ebx+ecx+240h]
.text:0040AEF6 or ecx, dword_9315D0[edi*4]
.text:0040AEFD add eax, 4
.text:0040AF00 mov [eax-4], ecx
.text:0040AF03 mov ecx, esi
.text:0040AF05 or ecx, edx
.text:0040AF07 jnz short loc_40AEC6
.text:0040AF09 mov ecx, dword ptr qword_5854A8+4
.text:0040AF0F
.text:0040AF0F loc_40AF0F: ; CODE XREF: sub_40ADC0+104j
.text:0040AF0F mov edx, dword ptr qword_5854A8
.text:0040AF15 shrd edx, ecx, 7
.text:0040AF19 shr ecx, 7
.text:0040AF1C and ecx, dword ptr [esp+28h+arg_0+4]
.text:0040AF20 and edx, ebp
.text:0040AF22 and edx, 0FEFEFE00h
.text:0040AF28 and ecx, 0FEFEFEh
.text:0040AF2E mov esi, edx
.text:0040AF30 or esi, ecx
.text:0040AF32 jz short loc_40AF77
.text:0040AF34
.text:0040AF34 loc_40AF34: ; CODE XREF: sub_40ADC0+1B5j
.text:0040AF34 bsf esi, edx
.text:0040AF37 jnz short loc_40AF43
.text:0040AF39 bsf esi, ecx
.text:0040AF3C mov [esp+28h+var_18], esi
.text:0040AF40 add esi, 20h
.text:0040AF43
.text:0040AF43 loc_40AF43: ; CODE XREF: sub_40ADC0+177j
.text:0040AF43 mov edi, edx
.text:0040AF45 add edi, 0FFFFFFFFh
.text:0040AF48 mov ebx, ecx
.text:0040AF4A adc ebx, 0FFFFFFFFh
.text:0040AF4D and ecx, ebx
.text:0040AF4F mov ebx, esi
.text:0040AF51 and edx, edi
.text:0040AF53 movzx edi, byte_585380[esi]
.text:0040AF5A shl ebx, 6
.text:0040AF5D lea esi, [ebx+esi+1C0h]
.text:0040AF64 or esi, dword_9315D0[edi*4]
.text:0040AF6B add eax, 4
.text:0040AF6E mov [eax-4], esi
.text:0040AF71 mov esi, edx
.text:0040AF73 or esi, ecx
.text:0040AF75 jnz short loc_40AF34
.text:0040AF77
.text:0040AF77 loc_40AF77: ; CODE XREF: sub_40ADC0+172j
.text:0040AF77 cmp byte_58542C, 0FFh
.text:0040AF7E mov edi, offset byte_58542C
.text:0040AF83 jz short loc_40AFF1
.text:0040AF85
.text:0040AF85 loc_40AF85: ; CODE XREF: sub_40ADC0+22Fj
.text:0040AF85 movzx esi, byte ptr [edi]
.text:0040AF88 mov edx, dword_8F2178[esi*8]
.text:0040AF8F mov ecx, dword_8F217C[esi*8]
.text:0040AF96 and ecx, dword ptr [esp+28h+arg_0+4]
.text:0040AF9A and edx, ebp
.text:0040AF9C inc edi
.text:0040AF9D mov ebx, edx
.text:0040AF9F or ebx, ecx
.text:0040AFA1 mov [esp+28h+var_C], edi
.text:0040AFA5 jz short loc_40AFEC
.text:0040AFA7 shl esi, 6
.text:0040AFAA mov edi, esi
.text:0040AFAC
.text:0040AFAC loc_40AFAC: ; CODE XREF: sub_40ADC0+222j
.text:0040AFAC bsf esi, edx
.text:0040AFAF jnz short loc_40AFBB
.text:0040AFB1 bsf esi, ecx
.text:0040AFB4 mov [esp+28h+var_18], esi
.text:0040AFB8 add esi, 20h
.text:0040AFBB
.text:0040AFBB loc_40AFBB: ; CODE XREF: sub_40ADC0+1EFj
.text:0040AFBB mov ebx, edx
.text:0040AFBD add ebx, 0FFFFFFFFh
.text:0040AFC0 mov ebp, ecx
.text:0040AFC2 adc ebp, 0FFFFFFFFh
.text:0040AFC5 and edx, ebx
.text:0040AFC7 movzx ebx, byte_585380[esi]
.text:0040AFCE add esi, edi
.text:0040AFD0 or esi, dword_931610[ebx*4]
.text:0040AFD7 and ecx, ebp
.text:0040AFD9 mov [eax], esi
.text:0040AFDB mov esi, edx
.text:0040AFDD add eax, 4
.text:0040AFE0 or esi, ecx
.text:0040AFE2 jnz short loc_40AFAC
.text:0040AFE4 mov ebp, dword ptr [esp+28h+arg_0]
.text:0040AFE8 mov edi, [esp+28h+var_C]
.text:0040AFEC
.text:0040AFEC loc_40AFEC: ; CODE XREF: sub_40ADC0+1E5j
.text:0040AFEC cmp byte ptr [edi], 0FFh
.text:0040AFEF jnz short loc_40AF85
.text:0040AFF1
.text:0040AFF1 loc_40AFF1: ; CODE XREF: sub_40ADC0+1C3j
.text:0040AFF1 cmp byte_585437, 0FFh
.text:0040AFF8 mov ebx, offset byte_585437
.text:0040AFFD jz loc_40B0BC
.text:0040B003 jmp short loc_40B010
.text:0040B003 ; ---------------------------------------------------------------------------
.text:0040B005 align 10h
.text:0040B010
.text:0040B010 loc_40B010: ; CODE XREF: sub_40ADC0+243j
.text:0040B010 ; sub_40ADC0+2F6j
.text:0040B010 movzx esi, byte ptr [ebx]
.text:0040B013 mov ecx, dword_926270[esi*8]
.text:0040B01A and ecx, dword ptr qword_5854E0
.text:0040B020 mov edx, dword_926274[esi*8]
.text:0040B027 and edx, dword ptr qword_5854E0+4
.text:0040B02D mov edi, ds:dword_438B00[esi*8]
.text:0040B034 imul edx, ds:dword_438B04[esi*8]
.text:0040B03C imul edi, ecx
.text:0040B03F mov ecx, ds:dword_438F00[esi*4]
.text:0040B046 xor edx, edi
.text:0040B048 shr edx, cl
.text:0040B04A inc ebx
.text:0040B04B add edx, dword_8F2378[esi*4]
.text:0040B052 mov edi, dword_926D00[edx*8]
.text:0040B059 mov ecx, dword_926D04[edx*8]
.text:0040B060 and ecx, dword ptr [esp+28h+arg_0+4]
.text:0040B064 and edi, ebp
.text:0040B066 mov edx, edi
.text:0040B068 or edx, ecx
.text:0040B06A jz short loc_40B0B3
.text:0040B06C shl esi, 6
.text:0040B06F mov [esp+28h+var_18], esi
.text:0040B073
.text:0040B073 loc_40B073: ; CODE XREF: sub_40ADC0+2EDj
.text:0040B073 bsf edx, edi
.text:0040B076 jnz short loc_40B082
.text:0040B078 bsf edx, ecx
.text:0040B07B mov [esp+28h+var_C], edx
.text:0040B07F add edx, 20h
.text:0040B082
.text:0040B082 loc_40B082: ; CODE XREF: sub_40ADC0+2B6j
.text:0040B082 mov esi, edi
.text:0040B084 add esi, 0FFFFFFFFh
.text:0040B087 mov ebp, ecx
.text:0040B089 adc ebp, 0FFFFFFFFh
.text:0040B08C and ecx, ebp
.text:0040B08E mov ebp, [esp+28h+var_18]
.text:0040B092 and edi, esi
.text:0040B094 movzx esi, byte_585380[edx]
.text:0040B09B add ebp, edx
.text:0040B09D or ebp, dword_931690[esi*4]
.text:0040B0A4 mov edx, edi
.text:0040B0A6 mov [eax], ebp
.text:0040B0A8 add eax, 4
.text:0040B0AB or edx, ecx
.text:0040B0AD jnz short loc_40B073
.text:0040B0AF mov ebp, dword ptr [esp+28h+arg_0]
.text:0040B0B3
.text:0040B0B3 loc_40B0B3: ; CODE XREF: sub_40ADC0+2AAj
.text:0040B0B3 cmp byte ptr [ebx], 0FFh
.text:0040B0B6 jnz loc_40B010
.text:0040B0BC
.text:0040B0BC loc_40B0BC: ; CODE XREF: sub_40ADC0+23Dj
.text:0040B0BC cmp byte_585442, 0FFh
.text:0040B0C3 mov ebx, offset byte_585442
.text:0040B0C8 jz loc_40B17C
.text:0040B0CE mov edi, edi
.text:0040B0D0
.text:0040B0D0 loc_40B0D0: ; CODE XREF: sub_40ADC0+3B6j
.text:0040B0D0 movzx esi, byte ptr [ebx]
.text:0040B0D3 mov ecx, dword_829CB8[esi*8]
.text:0040B0DA and ecx, dword ptr qword_5854E0
.text:0040B0E0 mov edx, dword_829CBC[esi*8]
.text:0040B0E7 and edx, dword ptr qword_5854E0+4
.text:0040B0ED mov edi, ds:dword_438D00[esi*8]
.text:0040B0F4 imul edx, ds:dword_438D04[esi*8]
.text:0040B0FC imul edi, ecx
.text:0040B0FF mov ecx, ds:dword_439000[esi*4]
.text:0040B106 xor edx, edi
.text:0040B108 shr edx, cl
.text:0040B10A inc ebx
.text:0040B10B add edx, dword_8FBB68[esi*4]
.text:0040B112 mov edi, dword_829EF8[edx*8]
.text:0040B119 mov ecx, dword_829EFC[edx*8]
.text:0040B120 and ecx, dword ptr [esp+28h+arg_0+4]
.text:0040B124 and edi, ebp
.text:0040B126 mov edx, edi
.text:0040B128 or edx, ecx
.text:0040B12A jz short loc_40B173
.text:0040B12C shl esi, 6
.text:0040B12F mov [esp+28h+var_18], esi
.text:0040B133
.text:0040B133 loc_40B133: ; CODE XREF: sub_40ADC0+3ADj
.text:0040B133 bsf edx, edi
.text:0040B136 jnz short loc_40B142
.text:0040B138 bsf edx, ecx
.text:0040B13B mov [esp+28h+var_C], edx
.text:0040B13F add edx, 20h
.text:0040B142
.text:0040B142 loc_40B142: ; CODE XREF: sub_40ADC0+376j
.text:0040B142 mov esi, edi
.text:0040B144 add esi, 0FFFFFFFFh
.text:0040B147 mov ebp, ecx
.text:0040B149 adc ebp, 0FFFFFFFFh
.text:0040B14C and ecx, ebp
.text:0040B14E mov ebp, [esp+28h+var_18]
.text:0040B152 and edi, esi
.text:0040B154 movzx esi, byte_585380[edx]
.text:0040B15B add ebp, edx
.text:0040B15D or ebp, dword_931710[esi*4]
.text:0040B164 mov edx, edi
.text:0040B166 mov [eax], ebp
.text:0040B168 add eax, 4
.text:0040B16B or edx, ecx
.text:0040B16D jnz short loc_40B133
.text:0040B16F mov ebp, dword ptr [esp+28h+arg_0]
.text:0040B173
.text:0040B173 loc_40B173: ; CODE XREF: sub_40ADC0+36Aj
.text:0040B173 cmp byte ptr [ebx], 0FFh
.text:0040B176 jnz loc_40B0D0
.text:0040B17C
.text:0040B17C loc_40B17C: ; CODE XREF: sub_40ADC0+308j
.text:0040B17C cmp byte_58544D, 0FFh
.text:0040B183 mov ebx, offset byte_58544D
.text:0040B188 jz loc_40B28C
.text:0040B18E
.text:0040B18E loc_40B18E: ; CODE XREF: sub_40ADC0+4C6j
.text:0040B18E movzx edx, byte ptr [ebx]
.text:0040B191 mov ecx, dword_926270[edx*8]
.text:0040B198 and ecx, dword ptr qword_5854E0
.text:0040B19E mov edi, dword_926274[edx*8]
.text:0040B1A5 and edi, dword ptr qword_5854E0+4
.text:0040B1AB mov ebp, dword_829CB8[edx*8]
.text:0040B1B2 imul edi, ds:dword_438B04[edx*8]
.text:0040B1BA and ebp, dword ptr qword_5854E0
.text:0040B1C0 mov esi, dword_829CBC[edx*8]
.text:0040B1C7 and esi, dword ptr qword_5854E0+4
.text:0040B1CD mov [esp+28h+var_8], ecx
.text:0040B1D1 mov ecx, ds:dword_438B00[edx*8]
.text:0040B1D8 imul esi, ds:dword_438D04[edx*8]
.text:0040B1E0 imul ecx, [esp+28h+var_8]
.text:0040B1E5 xor edi, ecx
.text:0040B1E7 mov ecx, ds:dword_438F00[edx*4]
.text:0040B1EE shr edi, cl
.text:0040B1F0 mov ecx, ds:dword_438D00[edx*8]
.text:0040B1F7 imul ecx, ebp
.text:0040B1FA add edi, dword_8F2378[edx*4]
.text:0040B201 xor esi, ecx
.text:0040B203 mov ecx, ds:dword_439000[edx*4]
.text:0040B20A mov ebp, dword_926D00[edi*8]
.text:0040B211 shr esi, cl
.text:0040B213 mov ecx, dword_926D04[edi*8]
.text:0040B21A inc ebx
.text:0040B21B add esi, dword_8FBB68[edx*4]
.text:0040B222 or ebp, dword_829EF8[esi*8]
.text:0040B229 or ecx, dword_829EFC[esi*8]
.text:0040B230 and ebp, dword ptr [esp+28h+arg_0]
.text:0040B234 and ecx, dword ptr [esp+28h+arg_0+4]
.text:0040B238 mov esi, ebp
.text:0040B23A or esi, ecx
.text:0040B23C jz short loc_40B283
.text:0040B23E shl edx, 6
.text:0040B241 mov [esp+28h+var_18], edx
.text:0040B245
.text:0040B245 loc_40B245: ; CODE XREF: sub_40ADC0+4C1j
.text:0040B245 bsf esi, ebp
.text:0040B248 jnz short loc_40B256
.text:0040B24A bsf edx, ecx
.text:0040B24D mov esi, edx
.text:0040B24F mov [esp+28h+var_C], edx
.text:0040B253 add esi, 20h
.text:0040B256
.text:0040B256 loc_40B256: ; CODE XREF: sub_40ADC0+488j
.text:0040B256 mov edx, ebp
.text:0040B258 add edx, 0FFFFFFFFh
.text:0040B25B mov edi, ecx
.text:0040B25D adc edi, 0FFFFFFFFh
.text:0040B260 and ecx, edi
.text:0040B262 mov edi, [esp+28h+var_18]
.text:0040B266 and ebp, edx
.text:0040B268 movzx edx, byte_585380[esi]
.text:0040B26F add edi, esi
.text:0040B271 or edi, dword_931750[edx*4]
.text:0040B278 mov edx, ebp
.text:0040B27A mov [eax], edi
.text:0040B27C add eax, 4
.text:0040B27F or edx, ecx
.text:0040B281 jnz short loc_40B245
.text:0040B283
.text:0040B283 loc_40B283: ; CODE XREF: sub_40ADC0+47Cj
.text:0040B283 cmp byte ptr [ebx], 0FFh
.text:0040B286 jnz loc_40B18E
.text:0040B28C
.text:0040B28C loc_40B28C: ; CODE XREF: sub_40ADC0+3C8j
.text:0040B28C mov ecx, dword_5854F0
.text:0040B292 mov edx, [ecx+20h]
.text:0040B295 movzx esi, byte_5854E9
.text:0040B29C mov ecx, [ecx+24h]
.text:0040B29F not edx
.text:0040B2A1 and edx, dword_926678[esi*8]
.text:0040B2A8 not ecx
.text:0040B2AA and ecx, dword_92667C[esi*8]
.text:0040B2B1 and edx, dword ptr [esp+28h+arg_0]
.text:0040B2B5 and ecx, dword ptr [esp+28h+arg_0+4]
.text:0040B2B9 mov edi, edx
.text:0040B2BB or edi, ecx
.text:0040B2BD jz short loc_40B2FC
.text:0040B2BF shl esi, 6
.text:0040B2C2 mov edi, esi
.text:0040B2C4
.text:0040B2C4 loc_40B2C4: ; CODE XREF: sub_40ADC0+53Aj
.text:0040B2C4 bsf esi, edx
.text:0040B2C7 jnz short loc_40B2D3
.text:0040B2C9 bsf esi, ecx
.text:0040B2CC mov [esp+28h+var_C], esi
.text:0040B2D0 add esi, 20h
.text:0040B2D3
.text:0040B2D3 loc_40B2D3: ; CODE XREF: sub_40ADC0+507j
.text:0040B2D3 mov ebx, edx
.text:0040B2D5 add ebx, 0FFFFFFFFh
.text:0040B2D8 mov ebp, ecx
.text:0040B2DA adc ebp, 0FFFFFFFFh
.text:0040B2DD and edx, ebx
.text:0040B2DF movzx ebx, byte_585380[esi]
.text:0040B2E6 add esi, edi
.text:0040B2E8 or esi, dword_931650[ebx*4]
.text:0040B2EF and ecx, ebp
.text:0040B2F1 mov [eax], esi
.text:0040B2F3 mov esi, edx
.text:0040B2F5 add eax, 4
.text:0040B2F8 or esi, ecx
.text:0040B2FA jnz short loc_40B2C4
.text:0040B2FC
.text:0040B2FC loc_40B2FC: ; CODE XREF: sub_40ADC0+D5j
.text:0040B2FC ; sub_40ADC0+4FDj
.text:0040B2FC mov ebp, dword ptr qword_5854A8
.text:0040B302 and ebp, 0FF00h
.text:0040B308 xor ebx, ebx
.text:0040B30A mov ecx, ebp
.text:0040B30C or ecx, ebx
.text:0040B30E jz loc_40B4A1
.text:0040B314
.text:0040B314 loc_40B314: ; CODE XREF: sub_40ADC0+6D1j
.text:0040B314 bsf ecx, ebp
.text:0040B317 jnz short loc_40B325
.text:0040B319 bsf edx, ebx
.text:0040B31C mov ecx, edx
.text:0040B31E mov [esp+28h+var_C], edx
.text:0040B322 add ecx, 20h
.text:0040B325
.text:0040B325 loc_40B325: ; CODE XREF: sub_40ADC0+557j
.text:0040B325 mov edx, ebp
.text:0040B327 add edx, 0FFFFFFFFh
.text:0040B32A mov esi, ebx
.text:0040B32C adc esi, 0FFFFFFFFh
.text:0040B32F and ebp, edx
.text:0040B331 and ebx, esi
.text:0040B333 cmp byte_585378[ecx], 0
.text:0040B33A mov [esp+28h+var_18], ebp
.text:0040B33E jnz short loc_40B37F
.text:0040B340 mov edx, ecx
.text:0040B342 shl edx, 6
.text:0040B345 lea edi, [edx+ecx-8]
.text:0040B349 mov edx, edi
.text:0040B34B or edx, 0D8007000h
.text:0040B351 mov [eax], edx
.text:0040B353 mov edx, dword_8F2138[ecx*8]
.text:0040B35A mov esi, dword_8F213C[ecx*8]
.text:0040B361 and edx, dword ptr qword_585478
.text:0040B367 and esi, dword ptr qword_585478+4
.text:0040B36D add eax, 4
.text:0040B370 or edx, esi
.text:0040B372 jz short loc_40B37F
.text:0040B374 or edi, 0C2004000h
.text:0040B37A mov [eax], edi
.text:0040B37C add eax, 4
.text:0040B37F
.text:0040B37F loc_40B37F: ; CODE XREF: sub_40ADC0+57Ej
.text:0040B37F ; sub_40ADC0+5B2j
.text:0040B37F cmp ecx, 8
.text:0040B382 jz loc_40B408
.text:0040B388 mov edx, dword_828A30[ecx*8]
.text:0040B38F mov esi, dword_828A34[ecx*8]
.text:0040B396 and edx, dword ptr [esp+28h+arg_0]
.text:0040B39A and esi, dword ptr [esp+28h+arg_0+4]
.text:0040B39E or edx, esi
.text:0040B3A0 jz short loc_40B408
.text:0040B3A2 movzx edi, byte_585377[ecx]
.text:0040B3A9 mov edx, ecx
.text:0040B3AB shl edx, 6
.text:0040B3AE lea ebp, [edx+ecx-9]
.text:0040B3B2 mov edx, dword_9315D0[edi*4]
.text:0040B3B9 add edx, 28000000h
.text:0040B3BF or edx, ebp
.text:0040B3C1 or edx, 7000h
.text:0040B3C7 mov [eax], edx
.text:0040B3C9 mov edx, dword_8F2130[ecx*8]
.text:0040B3D0 mov esi, dword_8F2134[ecx*8]
.text:0040B3D7 and edx, dword ptr qword_585478
.text:0040B3DD and esi, dword ptr qword_585478+4
.text:0040B3E3 add eax, 4
.text:0040B3E6 or edx, esi
.text:0040B3E8 jz short loc_40B404
.text:0040B3EA mov edx, dword_9315D0[edi*4]
.text:0040B3F1 add edx, 1A000000h
.text:0040B3F7 or edx, ebp
.text:0040B3F9 or edx, 4000h
.text:0040B3FF mov [eax], edx
.text:0040B401 add eax, 4
.text:0040B404
.text:0040B404 loc_40B404: ; CODE XREF: sub_40ADC0+628j
.text:0040B404 mov ebp, [esp+28h+var_18]
.text:0040B408
.text:0040B408 loc_40B408: ; CODE XREF: sub_40ADC0+5C2j
.text:0040B408 ; sub_40ADC0+5E0j
.text:0040B408 cmp ecx, 0Fh
.text:0040B40B jz loc_40B48D
.text:0040B411 mov edx, dword_828A40[ecx*8]
.text:0040B418 mov esi, dword_828A44[ecx*8]
.text:0040B41F and edx, dword ptr [esp+28h+arg_0]
.text:0040B423 and esi, dword ptr [esp+28h+arg_0+4]
.text:0040B427 or edx, esi
.text:0040B429 jz short loc_40B48D
.text:0040B42B movzx esi, byte_585379[ecx]
.text:0040B432 mov edx, ecx
.text:0040B434 shl edx, 6
.text:0040B437 lea edi, [edx+ecx-7]
.text:0040B43B mov edx, dword_9315D0[esi*4]
.text:0040B442 add edx, 28000000h
.text:0040B448 or edx, edi
.text:0040B44A or edx, 7000h
.text:0040B450 mov [eax], edx
.text:0040B452 mov edx, dword_8F2140[ecx*8]
.text:0040B459 mov ecx, dword_8F2144[ecx*8]
.text:0040B460 and edx, dword ptr qword_585478
.text:0040B466 and ecx, dword ptr qword_585478+4
.text:0040B46C add eax, 4
.text:0040B46F or edx, ecx
.text:0040B471 jz short loc_40B48D
.text:0040B473 mov ecx, dword_9315D0[esi*4]
.text:0040B47A add ecx, 1A000000h
.text:0040B480 or ecx, edi
.text:0040B482 or ecx, 4000h
.text:0040B488 mov [eax], ecx
.text:0040B48A add eax, 4
.text:0040B48D
.text:0040B48D loc_40B48D: ; CODE XREF: sub_40ADC0+64Bj
.text:0040B48D ; sub_40ADC0+669j ...
.text:0040B48D mov edx, ebp
.text:0040B48F or edx, ebx
.text:0040B491 jnz loc_40B314
.text:0040B497 mov [eax], edx
.text:0040B499 pop edi
.text:0040B49A pop esi
.text:0040B49B pop ebp
.text:0040B49C pop ebx
.text:0040B49D add esp, 18h
.text:0040B4A0 retn
.text:0040B4A1 ; ---------------------------------------------------------------------------
.text:0040B4A1
.text:0040B4A1 loc_40B4A1: ; CODE XREF: sub_40ADC0+54Ej
.text:0040B4A1 pop edi
.text:0040B4A2 pop esi
.text:0040B4A3 pop ebp
.text:0040B4A4 mov [eax], ebx
.text:0040B4A6 pop ebx
.text:0040B4A7 add esp, 18h
.text:0040B4AA retn
.text:0040B4AA sub_40ADC0 endp
Code: Select all
type_move_list *capture_black(type_move_list *LIST, uint64 cel)
{
uint64 U, T;
int square, ai;
if ((cel &DYNAMIC->black_attacks) == 0)
goto TAG_NOT;
T = ((bitboard_black_pawn & ~FILEa) >> 9) & (~RANK1) &cel;
while (T)
{
ai = LSB(T);
ADD(LIST, ((ai + 9) << 6) | ai);
bit_free(ai, T);
}
T = ((bitboard_black_pawn & ~FILEh) >> 7) & (~RANK1) &cel;
while (T)
{
ai = LSB(T);
ADD(LIST, ((ai + 7) << 6) | ai);
bit_free(ai, T);
}
for (U = bitboard_black_knight; U; bit_free(square, U))
{
square = LSB(U);
T = attack_knight[square] & cel;
ANNEX_AI(T);
}
for (U = bitboard_black_bishop; U; bit_free(square, U))
{
square = LSB(U);
T = attack_bishop(square) & cel;
ANNEX_AI(T);
}
for (U = bitboard_black_rook; U; bit_free(square, U))
{
square = LSB(U);
T = attack_rook(square) & cel;
ANNEX_AI(T);
}
for (U = bitboard_black_queen; U; bit_free(square, U))
{
square = LSB(U);
T = attack_queen(square) & cel;
ANNEX_AI(T);
}
square = LSB(bitboard_black_king);
T = attack_king[square] & cel & ~DYNAMIC->white_attacks;
ANNEX_AI(T);
TAG_NOT:
for (U = bitboard_black_pawn & RANK2; U; bit_free(square, U))
{
square = LSB(U);
ai = square - 8;
if (SQUARE[ai] == 0)
ADD(LIST, flag_promotion_queen | (square << 6) | ai);
ai = square - 9;
if (square != A2 && square_fixed[ai] & cel)
ADD(LIST, flag_promotion_queen | (square << 6) | ai);
ai = square - 7;
if (square != H2 && square_fixed[ai] & cel)
ADD(LIST, flag_promotion_queen | (square << 6) | ai);
}
LIST->move = 0;
return LIST;
}