Function at 0x46e9e0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x28
mov eax, dword [esp + 0x2c]
push ebp
push esi
push 0
push 0x4e6484
push 0x4e65c0
mov esi, ecx
push 0
push eax
mov dword [esp + 0x20], esi
call fcn.004a1065
mov ebp, eax
add esp, 0x14
test ebp, ebp
je 0x46f711
mov eax, dword [ebp + 0x10]
test eax, eax
push ebx
mov ebx, dword [esp + 0x44]
push edi
mov dword [esp + 0x18], eax
jne 0x46f094
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 0x48]
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 4]
imul edx, dword [ebx + 4]
add edx, dword [ebx]
lea eax, [eax + edx*4]
mov edx, dword [esi]
mov ecx, esi
mov dword [esp + 0x10], eax
call dword [edx + 0x48]
mov ecx, dword [esi + 4]
imul ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
mov edi, dword [esp + 0x4c]
add ecx, edx
lea edx, [eax + ecx*4]
mov al, byte [esi + 0x1a]
test al, al
mov dword [esp + 0x40], edx
jne 0x46ed15
mov al, byte [esi + 0x19]
test al, al
jne 0x46ed15
push 0x4ebdc0
push edi
call fcn.0043fba0
add esp, 8
test al, al
jne 0x46ed15
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x28]
mov ecx, dword [esp + 0x3c]
mov ecx, dword [ecx + 4]
imul ecx, dword [ebx + 4]
add ecx, dword [ebx]
add ecx, eax
mov eax, dword [ebx + 0xc]
test eax, eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], 0
jle 0x46f706
jmp 0x46eac1
mov ebx, dword [esp + 0x48]
mov ebx, dword [ebx + 8]
test ebx, ebx
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x18], ebx
jle 0x46ecc0
lea esp, [esp]
mov eax, dword [esp + 0x4c]
mov al, byte [eax]
mov ecx, dword [edx]
movzx esi, al
cmp esi, ebx
mov byte [esp + 0x44], al
jle 0x46eafb
mov al, byte [esp + 0x18]
mov byte [esp + 0x44], al
mov esi, ecx
shr esi, 0x18
mov ebp, pe_nt_image_headers32
sub ebp, esi
cmp ebp, 1
mov dword [esp + 0x20], ebp
jne 0x46eb32
movzx eax, al
test eax, eax
jle 0x46eca0
mov ecx, eax
lea ecx, [ecx]
mov esi, dword [edx]
mov dword [edi], esi
add edi, 4
add edx, 4
dec ecx
jne 0x46eb20
jmp 0x46eca0
cmp ebp, 0x100
jne 0x46eb4d
movzx eax, al
lea ecx, [eax*4]
add edi, ecx
add edx, ecx
jmp 0x46eca0
mov eax, dword [edi]
mov ebx, eax
and ebx, 0xff
imul ebx, ebp
mov esi, pe_nt_image_headers32
sub esi, ebp
mov ebp, ecx
and ebp, 0xff
imul ebp, esi
mov dword [esp + 0x1c], esi
shr ebx, 8
shr ebp, 8
add ebx, ebp
mov esi, eax
mov ebp, ecx
and esi, 0xff0000
imul esi, dword [esp + 0x20]
and eax, 0xff00
imul eax, dword [esp + 0x20]
and ebp, 0xff0000
imul ebp, dword [esp + 0x1c]
and ecx, 0xff00
imul ecx, dword [esp + 0x1c]
shr esi, 8
shr ebp, 8
shr eax, 8
and ebx, 0xff
add esi, ebp
shr ecx, 8
add eax, ecx
and esi, 0xffff0000
or ebx, esi
and eax, 0xff00
or ebx, eax
movzx eax, byte [esp + 0x44]
or ebx, 0xff000000
mov dword [edi], ebx
add edi, 4
add edx, 4
cmp eax, 1
mov dword [esp + 0x20], edi
mov dword [esp + 0x2c], eax
jle 0x46eca0
dec eax
mov dword [esp + 0x44], eax
mov eax, dword [edi]
mov ecx, dword [edx]
add edx, 4
mov ebx, eax
mov dword [esp + 0x1c], edx
mov edx, ecx
shr edx, 0x18
and ebx, 0xff
mov edi, ecx
and edi, 0xff
imul edi, edx
mov esi, pe_nt_image_headers32
sub esi, edx
imul ebx, esi
shr edi, 8
shr ebx, 8
add ebx, edi
mov edi, eax
and edi, 0xff0000
mov ebp, ecx
imul edi, esi
and eax, 0xff00
and ebp, 0xff0000
imul eax, esi
imul ebp, edx
and ecx, 0xff00
imul ecx, edx
mov edx, dword [esp + 0x1c]
shr edi, 8
shr ebp, 8
add edi, ebp
shr eax, 8
and ebx, 0xff
and edi, 0xffff0000
shr ecx, 8
or ebx, edi
mov edi, dword [esp + 0x20]
add eax, ecx
and eax, 0xff00
or ebx, eax
mov eax, dword [esp + 0x44]
or ebx, 0xff000000
mov dword [edi], ebx
add edi, 4
dec eax
mov dword [esp + 0x20], edi
mov dword [esp + 0x44], eax
jne 0x46ebf5
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x4c]
sub ebx, eax
add esi, eax
test ebx, ebx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x18], ebx
jg 0x46eae0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 4]
mov edx, dword [esp + 0x40]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x40], eax
mov eax, dword [edx + 4]
mov edx, dword [esp + 0x10]
lea edx, [edx + eax*4]
add ecx, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x48]
mov esi, dword [edx + 0xc]
inc eax
cmp eax, esi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
jl 0x46eabd
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
call dword [eax + 0x30]
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x28
ret 0x14
push 0x4ebdc0
push edi
call fcn.0043fb70
add esp, 8
test al, al
je 0x46ee9b
mov eax, dword [ebx + 0xc]
test eax, eax
mov dword [esp + 0x24], 0
jle 0x46f706
mov edi, edi
mov ecx, dword [ebx + 8]
test ecx, ecx
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x44], eax
mov dword [esp + 0x28], 0
jle 0x46ee50
nop
mov esi, dword [edx]
mov ecx, dword [eax]
mov ebp, esi
add edx, 4
shr ebp, 0x18
test ebp, ebp
mov dword [esp + 0x2c], edx
je 0x46ee35
mov ebx, ecx
shr ebx, 0x18
mov edi, 0xff
sub edi, ebx
imul edi, ebp
mov eax, 0x80808081
imul edi
add edx, edi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ebp
imul eax, eax, 0xff
add edx, ebx
mov edi, edx
cdq
idiv edi
mov ebx, ecx
and ebx, 0xff0000
mov ebp, esi
and ebp, 0xff0000
mov edx, pe_nt_image_headers32
shl edi, 0x18
sub edx, eax
imul ebp, eax
imul ebx, edx
mov dword [esp + 0x4c], eax
shr ebx, 8
shr ebp, 8
add ebx, ebp
mov eax, ecx
and eax, 0xff
mov ebp, esi
imul eax, edx
and ebp, 0xff
imul ebp, dword [esp + 0x4c]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [esp + 0x2c]
and esi, 0xff00
imul esi, dword [esp + 0x4c]
shr eax, 8
shr ebp, 8
add eax, ebp
shr ecx, 8
and ebx, 0xff0000
shr esi, 8
and eax, 0xff
or ebx, eax
mov eax, dword [esp + 0x44]
add ecx, esi
and ecx, 0xff00
or ebx, ecx
or ebx, edi
mov dword [eax], ebx
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x28]
mov esi, dword [ebx + 8]
add eax, 4
inc ecx
cmp ecx, esi
mov dword [esp + 0x44], eax
mov dword [esp + 0x28], ecx
jl 0x46ed60
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 4]
mov eax, dword [esp + 0x40]
lea ecx, [eax + edx*4]
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 4]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x10]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x24]
mov ecx, dword [ebx + 0xc]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x24], eax
jl 0x46ed40
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
call dword [eax + 0x30]
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x28
ret 0x14
mov esi, dword [edi + 0xc]
mov ecx, dword [edi]
imul ecx, esi
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 4]
sar edx, 7
imul ecx, esi
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x20], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [edi + 8]
imul ecx, esi
mov dword [esp + 0x18], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebx + 0xc]
test eax, eax
mov dword [esp + 0x2c], esi
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], 0
jle 0x46f706
jmp 0x46ef10
mov ecx, dword [esp + 0x48]
mov eax, dword [ecx + 8]
test eax, eax
mov edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x44], edi
mov dword [esp + 0x4c], 0
jle 0x46f045
mov ecx, dword [ebx]
mov esi, dword [edi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x2c]
mov eax, 0x80808081
mul edx
mov ebp, edx
add ebx, 4
shr ebp, 7
test ebp, ebp
mov dword [esp + 0x30], ebx
je 0x46f026
mov ebx, esi
shr ebx, 0x18
mov edi, 0xff
sub edi, ebx
imul edi, ebp
mov eax, 0x80808081
imul edi
add edx, edi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ebp
add edx, ebx
imul eax, eax, 0xff
mov edi, edx
cdq
idiv edi
mov ebx, ecx
and ebx, 0xff0000
mov ebp, esi
and ebp, 0xff0000
mov edx, pe_nt_image_headers32
shl edi, 0x18
imul ebx, eax
shr ebx, 8
imul ebx, dword [esp + 0x24]
sub edx, eax
imul ebp, edx
shr ebp, 8
shr ebx, 8
add ebx, ebp
mov ebp, ecx
and ebp, 0xff
imul ebp, eax
imul ebp, dword [esp + 0x20]
and ecx, 0xff00
mov dword [esp + 0x1c], eax
imul ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x18]
mov eax, esi
and eax, 0xff
and esi, 0xff00
imul eax, edx
imul esi, edx
shr ebp, 0x10
shr eax, 8
shr ecx, 0x10
and ebx, 0xff0000
add ebp, eax
shr esi, 8
and ebp, 0xff
add ecx, esi
or ebx, ebp
and ecx, 0xff00
or ebx, ecx
or ebx, edi
mov edi, dword [esp + 0x44]
mov dword [edi], ebx
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx + 8]
add edi, 4
inc eax
cmp eax, edx
mov dword [esp + 0x44], edi
mov dword [esp + 0x4c], eax
jl 0x46ef33
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 4]
mov ecx, dword [esp + 0x40]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 4]
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x10]
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
inc eax
cmp eax, edx
mov dword [esp + 0x28], eax
jl 0x46ef10
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
call dword [eax + 0x30]
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x28
ret 0x14
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 4]
imul eax, dword [ebx + 4]
mov ecx, dword [ebp + 0x14]
mov edi, dword [ebx]
add eax, ecx
add eax, edi
mov dword [esp + 0x10], eax
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x48]
mov ecx, dword [esi + 4]
imul ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
mov edi, dword [esp + 0x4c]
add ecx, edx
lea edx, [eax + ecx*4]
mov al, byte [esi + 0x1a]
test al, al
mov dword [esp + 0x40], edx
jne 0x46f38f
mov al, byte [esi + 0x19]
test al, al
jne 0x46f38f
push 0x4ebdc0
push edi
call fcn.0043fba0
add esp, 8
test al, al
jne 0x46f38f
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x28]
mov ecx, dword [esp + 0x3c]
mov ecx, dword [ecx + 4]
imul ecx, dword [ebx + 4]
add ecx, dword [ebx]
add ecx, eax
mov eax, dword [ebx + 0xc]
test eax, eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x2c], 0
jle 0x46f706
jmp 0x46f130
mov ecx, dword [esp + 0x20]
lea esp, [esp]
mov eax, dword [esp + 0x48]
mov esi, dword [eax + 8]
test esi, esi
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], esi
jle 0x46f337
nop
movzx ecx, byte [edx]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + ecx*4]
mov eax, dword [esp + 0x4c]
mov al, byte [eax]
movzx ebx, al
cmp ebx, esi
mov byte [esp + 0x44], al
jle 0x46f173
mov al, byte [esp + 0x1c]
mov byte [esp + 0x44], al
mov esi, ecx
shr esi, 0x18
mov ebp, pe_nt_image_headers32
sub ebp, esi
cmp ebp, 1
mov dword [esp + 0x28], ebp
jne 0x46f1b4
movzx eax, al
test eax, eax
jle 0x46f321
mov esi, dword [esp + 0x18]
mov ecx, eax
lea esp, [esp]
movzx ebx, byte [edx]
mov ebx, dword [esi + ebx*4]
mov dword [edi], ebx
add edi, 4
inc edx
dec ecx
jne 0x46f1a0
jmp 0x46f321
cmp ebp, 0x100
jne 0x46f1c9
movzx eax, al
lea edi, [edi + eax*4]
add edx, eax
jmp 0x46f321
mov eax, dword [edi]
mov ebx, eax
and ebx, 0xff
imul ebx, ebp
mov esi, pe_nt_image_headers32
sub esi, ebp
mov ebp, ecx
and ebp, 0xff
imul ebp, esi
mov dword [esp + 0x24], esi
shr ebx, 8
shr ebp, 8
add ebx, ebp
mov esi, eax
mov ebp, ecx
and esi, 0xff0000
imul esi, dword [esp + 0x28]
and eax, 0xff00
imul eax, dword [esp + 0x28]
and ebp, 0xff0000
imul ebp, dword [esp + 0x24]
and ecx, 0xff00
imul ecx, dword [esp + 0x24]
shr esi, 8
shr ebp, 8
shr eax, 8
and ebx, 0xff
add esi, ebp
shr ecx, 8
add eax, ecx
and esi, 0xffff0000
or ebx, esi
and eax, 0xff00
or ebx, eax
movzx eax, byte [esp + 0x44]
or ebx, 0xff000000
mov dword [edi], ebx
add edi, 4
inc edx
cmp eax, 1
mov dword [esp + 0x28], edi
mov dword [esp + 0x30], eax
jle 0x46f321
dec eax
mov dword [esp + 0x44], eax
nop
movzx ecx, byte [edx]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + ecx*4]
mov eax, dword [edi]
inc edx
mov ebx, eax
mov dword [esp + 0x24], edx
mov edx, ecx
shr edx, 0x18
and ebx, 0xff
mov edi, ecx
and edi, 0xff
imul edi, edx
mov esi, pe_nt_image_headers32
sub esi, edx
imul ebx, esi
shr edi, 8
shr ebx, 8
add ebx, edi
mov edi, eax
and edi, 0xff0000
mov ebp, ecx
imul edi, esi
and eax, 0xff00
and ebp, 0xff0000
imul eax, esi
imul ebp, edx
and ecx, 0xff00
imul ecx, edx
mov edx, dword [esp + 0x24]
shr edi, 8
shr ebp, 8
add edi, ebp
shr eax, 8
and ebx, 0xff
and edi, 0xffff0000
shr ecx, 8
or ebx, edi
mov edi, dword [esp + 0x28]
add eax, ecx
and eax, 0xff00
or ebx, eax
mov eax, dword [esp + 0x44]
or ebx, 0xff000000
mov dword [edi], ebx
add edi, 4
dec eax
mov dword [esp + 0x28], edi
mov dword [esp + 0x44], eax
jne 0x46f270
mov eax, dword [esp + 0x30]
add dword [esp + 0x4c], eax
mov esi, dword [esp + 0x1c]
sub esi, eax
test esi, esi
mov dword [esp + 0x1c], esi
jg 0x46f150
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 4]
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
lea ecx, [eax + edx*4]
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 4]
add ebx, eax
add edi, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx + 0xc]
inc eax
cmp eax, edx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x2c], eax
jl 0x46f128
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
call dword [eax + 0x30]
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x28
ret 0x14
push 0x4ebdc0
push edi
call fcn.0043fb70
add esp, 8
test al, al
je 0x46f520
mov eax, dword [ebx + 0xc]
test eax, eax
mov dword [esp + 0x28], 0
jle 0x46f706
mov edi, dword [esp + 0x48]
lea esp, [esp]
mov ecx, dword [edi + 8]
test ecx, ecx
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x44], eax
mov dword [esp + 0x2c], 0
jle 0x46f4d6
nop
movzx ecx, byte [edx]
mov esi, dword [esp + 0x18]
mov esi, dword [esi + ecx*4]
mov ecx, dword [eax]
mov ebp, esi
inc edx
shr ebp, 0x18
test ebp, ebp
mov dword [esp + 0x30], edx
je 0x46f4bb
mov ebx, ecx
shr ebx, 0x18
mov edi, 0xff
sub edi, ebx
imul edi, ebp
mov eax, 0x80808081
imul edi
add edx, edi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ebp
imul eax, eax, 0xff
add edx, ebx
mov edi, edx
cdq
idiv edi
mov ebx, ecx
and ebx, 0xff0000
mov ebp, esi
and ebp, 0xff0000
mov edx, pe_nt_image_headers32
shl edi, 0x18
sub edx, eax
imul ebp, eax
imul ebx, edx
mov dword [esp + 0x4c], eax
shr ebp, 8
shr ebx, 8
add ebx, ebp
mov eax, ecx
and eax, 0xff
mov ebp, esi
imul eax, edx
and ebp, 0xff
imul ebp, dword [esp + 0x4c]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [esp + 0x30]
and esi, 0xff00
imul esi, dword [esp + 0x4c]
shr eax, 8
shr ebp, 8
add eax, ebp
shr ecx, 8
shr esi, 8
and ebx, 0xff0000
and eax, 0xff
add ecx, esi
or ebx, eax
mov eax, dword [esp + 0x44]
and ecx, 0xff00
or ebx, ecx
or ebx, edi
mov edi, dword [esp + 0x48]
mov dword [eax], ebx
mov ecx, dword [esp + 0x2c]
mov esi, dword [edi + 8]
add eax, 4
inc ecx
cmp ecx, esi
mov dword [esp + 0x44], eax
mov dword [esp + 0x2c], ecx
jl 0x46f3e0
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 4]
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x10]
lea ecx, [eax + edx*4]
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 4]
add esi, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x40], ecx
mov ecx, dword [edi + 0xc]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], esi
mov dword [esp + 0x28], eax
jl 0x46f3c0
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
call dword [eax + 0x30]
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x28
ret 0x14
mov esi, dword [edi + 0xc]
mov ecx, dword [edi]
imul ecx, esi
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [edi + 4]
imul ecx, esi
mov dword [esp + 0x24], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 8]
sar edx, 7
imul ecx, esi
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x1c], edx
mov eax, 0x80808081
imul ecx
mov eax, dword [ebx + 0xc]
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
test eax, eax
mov dword [esp + 0x30], esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], 0
jle 0x46f706
mov edx, dword [esp + 0x48]
mov eax, dword [edx + 8]
test eax, eax
mov edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x44], edi
mov dword [esp + 0x4c], 0
jle 0x46f6cb
movzx eax, byte [ebx]
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx + eax*4]
mov esi, dword [edi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x30]
mov eax, 0x80808081
mul edx
mov ebp, edx
inc ebx
shr ebp, 7
test ebp, ebp
mov dword [esp + 0x34], ebx
je 0x46f6ac
mov ebx, esi
shr ebx, 0x18
mov edi, 0xff
sub edi, ebx
imul edi, ebp
mov eax, 0x80808081
imul edi
add edx, edi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ebp
add edx, ebx
imul eax, eax, 0xff
mov edi, edx
cdq
idiv edi
mov ebx, ecx
and ebx, 0xff0000
mov ebp, esi
and ebp, 0xff0000
mov edx, pe_nt_image_headers32
shl edi, 0x18
imul ebx, eax
shr ebx, 8
imul ebx, dword [esp + 0x28]
sub edx, eax
imul ebp, edx
shr ebp, 8
shr ebx, 8
add ebx, ebp
mov ebp, ecx
and ebp, 0xff
imul ebp, eax
imul ebp, dword [esp + 0x24]
and ecx, 0xff00
mov dword [esp + 0x20], eax
imul ecx, dword [esp + 0x20]
imul ecx, dword [esp + 0x1c]
mov eax, esi
and eax, 0xff
and esi, 0xff00
imul eax, edx
imul esi, edx
shr ebp, 0x10
shr eax, 8
shr ecx, 0x10
and ebx, 0xff0000
add ebp, eax
shr esi, 8
and ebp, 0xff
add ecx, esi
or ebx, ebp
and ecx, 0xff00
or ebx, ecx
or ebx, edi
mov edi, dword [esp + 0x44]
mov dword [edi], ebx
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx + 8]
add edi, 4
inc eax
cmp eax, edx
mov dword [esp + 0x44], edi
mov dword [esp + 0x4c], eax
jl 0x46f5b3
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 4]
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x10]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x2c]
add esi, ecx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x48]
mov ecx, dword [edx + 0xc]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], esi
mov dword [esp + 0x2c], eax
jl 0x46f590
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
call dword [eax + 0x30]
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x28
ret 0x14