Function at 0x10001910
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, eax
mov eax, edx
push esi
lea edx, [edi + 3]
push ebx
sub esp, 0x58
test edi, edi
mov dword [ebp - 0x30], ecx
cmovns edx, edi
sar edx, 2
test eax, eax
mov esi, edx
mov dword [ebp - 0x38], edx
lea edx, [eax + 3]
cmovns edx, eax
sar edx, 2
mov dword [ebp - 0x48], edx
imul esi, edx
cmp eax, 3
jle 0x10001ba8
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
mov ebx, esi
xor esi, esi
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x20], 0
shl eax, 2
mov dword [ebp - 0x18], esi
lea edx, [edx + ecx - 4]
mov dword [ebp - 0x4c], eax
mov eax, 4
mov dword [ebp - 0x3c], edx
mov edx, eax
cmp edi, 3
jle 0x10001b99
mov esi, dword [ebp - 0x3c]
lea eax, [ebx - 1]
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x40], edx
add esi, edx
mov edx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x1c], esi
mov esi, dword [ebp - 0x38]
sub ebx, esi
mov dword [ebp - 0x2c], ebx
test eax, eax
jne 0x10001b7d
lea esi, cs:[esi]
nop
mov eax, dword [ebp - 0x18]
add eax, 1
cmp eax, dword [ebp + 8]
jge 0x10001da4
mov eax, dword [ebp - 0x18]
mov edi, dword [ebp - 0x30]
movzx ebx, byte [edi + eax]
lea esi, [eax + 2]
movzx eax, byte [edi + eax + 1]
mov dword [ebp - 0x28], esi
mov ecx, ebx
or cl, al
jne 0x10001bb0
cmp edx, 0xffffffff
je 0x10001ba8
mov esi, dword [ebp - 0x18]
shl eax, 8
or eax, ebx
lea ebx, [esi + 3]
cmp ebx, dword [ebp + 8]
jge 0x10001dee
mov esi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x28]
add dword [ebp - 0x18], 4
movzx ecx, word [esi + edi]
movzx ebx, byte [esi + ebx]
mov edi, eax
mov esi, eax
shr di, 2
not esi
mov word [ebp - 0x14], cx
mov ecx, eax
not edi
and esi, 1
shr cx, 3
mov byte [ebp - 0x31], bl
mov ebx, eax
and edi, 1
not ecx
shr bx, 1
movzx edi, byte [ebp + edi - 0x14]
and ecx, 1
not ebx
movzx ecx, byte [ebp + ecx - 0x14]
and ebx, 1
movzx ebx, byte [ebp + ebx - 0x14]
shl ecx, 8
or ecx, edi
mov edi, dword [ebp - 0x24]
shl ecx, 8
or ecx, ebx
movzx ebx, byte [ebp + esi - 0x14]
mov esi, dword [ebp + 0xc]
shl ecx, 8
or ecx, ebx
mov ebx, eax
mov dword [esi + edi - 4], ecx
mov ecx, eax
mov edi, eax
mov esi, eax
shr cx, 7
shr di, 6
shr si, 5
not ecx
not edi
shr bx, 4
and ecx, 1
and edi, 1
not esi
not ebx
movzx ecx, byte [ebp + ecx - 0x14]
movzx edi, byte [ebp + edi - 0x14]
and esi, 1
and ebx, 1
movzx esi, byte [ebp + esi - 0x14]
movzx ebx, byte [ebp + ebx - 0x14]
shl ecx, 8
or ecx, edi
mov edi, dword [ebp - 0x1c]
shl ecx, 8
or ecx, esi
mov esi, eax
shl ecx, 8
shr si, 9
or ecx, ebx
mov ebx, eax
not esi
shr bx, 8
mov dword [edi], ecx
mov ecx, eax
and esi, 1
not ebx
movzx esi, byte [ebp + esi - 0x14]
and ebx, 1
shr cx, 0xa
mov edi, ecx
mov ecx, eax
movzx ebx, byte [ebp + ebx - 0x14]
shr cx, 0xb
not edi
not ecx
and edi, 1
and ecx, 1
movzx edi, byte [ebp + edi - 0x14]
movzx ecx, byte [ebp + ecx - 0x14]
shl ecx, 8
or ecx, edi
mov edi, dword [ebp - 0x1c]
shl ecx, 8
or ecx, esi
mov esi, dword [ebp + 0x10]
shl ecx, 8
or ecx, ebx
mov ebx, eax
mov dword [edi + esi], ecx
mov ecx, eax
shr ax, 0xe
movzx esi, byte [ebp - 0x31]
shr bx, 0xd
xor eax, 1
shr cx, 0xc
movzx eax, ax
not ebx
shl esi, 8
not ecx
movzx eax, byte [ebp + eax - 0x14]
and ebx, 1
and ecx, 1
or esi, eax
movzx eax, byte [ebp + ebx - 0x14]
shl esi, 8
or esi, eax
movzx eax, byte [ebp + ecx - 0x14]
shl esi, 8
or esi, eax
mov eax, dword [ebp + 0x10]
mov dword [edi + eax*2], esi
add dword [ebp - 0x24], 4
mov ebx, edx
lea eax, [edx - 1]
add dword [ebp - 0x1c], 4
cmp dword [ebp - 0x2c], edx
je 0x10001b93
mov edx, eax
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x100019b0
sub dword [ebp - 0x20], 1
mov ebx, edx
lea eax, [edx - 1]
add dword [ebp - 0x24], 4
add dword [ebp - 0x1c], 4
cmp dword [ebp - 0x2c], edx
jne 0x10001b70
mov edx, dword [ebp - 0x40]
mov edi, dword [ebp - 0x44]
mov eax, dword [ebp - 0x4c]
add edx, eax
sub dword [ebp - 0x48], 1
jne 0x10001975
add esp, 0x58
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, eax
and esi, 0xfffffffc
mov ecx, esi
cmp cl, 0x84
jne 0x10001bd8
sub eax, 0x84
shl eax, 8
lea eax, [eax + ebx - 1]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x18], eax
jmp 0x10001b5e
test al, al
jns 0x100019e7
cmp al, 0x8f
jbe 0x10001d70
shl eax, 8
or eax, ebx
mov ebx, dword [ebp - 0x18]
add ebx, 9
cmp ebx, dword [ebp + 8]
jge 0x10001e07
mov esi, dword [ebp - 0x28]
mov ecx, eax
add dword [ebp - 0x18], 0xa
shr cx, 3
mov ebx, dword [edi + esi]
mov esi, dword [edi + esi + 4]
mov edi, eax
not ecx
shr di, 2
and ecx, 1
mov dword [ebp - 0x14], ebx
mov ebx, eax
not edi
movzx ecx, byte [ebp + ecx - 0x12]
not ebx
mov dword [ebp - 0x10], esi
and edi, 1
mov dword [ebp - 0x28], esi
mov esi, ebx
mov ebx, eax
movzx edi, byte [ebp + edi - 0x12]
shr bx, 1
shl ecx, 8
and esi, 1
not ebx
or ecx, edi
mov edi, dword [ebp + 0xc]
and ebx, 1
shl ecx, 8
movzx ebx, byte [ebp + ebx - 0x14]
or ecx, ebx
movzx ebx, byte [ebp + esi - 0x14]
shl ecx, 8
or ecx, ebx
mov ebx, dword [ebp - 0x24]
mov dword [edi + ebx - 4], ecx
mov edi, eax
mov ecx, eax
mov ebx, eax
shr di, 5
shr cx, 7
mov esi, edi
mov edi, eax
not ecx
shr bx, 4
shr di, 6
and ecx, 1
not esi
not ebx
not edi
movzx ecx, byte [ebp + ecx - 0x12]
and esi, 1
and ebx, 1
and edi, 1
movzx esi, byte [ebp + esi - 0x14]
movzx ebx, byte [ebp + ebx - 0x14]
movzx edi, byte [ebp + edi - 0x12]
shl ecx, 8
or ecx, edi
mov edi, dword [ebp - 0x1c]
shl ecx, 8
or ecx, esi
shl ecx, 8
or ecx, ebx
mov ebx, eax
mov dword [edi], ecx
mov ecx, eax
shr bx, 8
shr cx, 9
not ebx
mov esi, ecx
mov ecx, eax
and ebx, 1
not esi
movzx ebx, byte [ebp + ebx - 0x10]
and esi, 1
shr cx, 0xa
mov edi, ecx
mov ecx, eax
movzx esi, byte [ebp + esi - 0x10]
shr cx, 0xb
not edi
not ecx
and edi, 1
and ecx, 1
movzx edi, byte [ebp + edi - 0xe]
movzx ecx, byte [ebp + ecx - 0xe]
shl ecx, 8
or ecx, edi
mov edi, dword [ebp - 0x1c]
shl ecx, 8
or ecx, esi
mov esi, dword [ebp - 0x28]
shl ecx, 8
or ecx, ebx
mov ebx, dword [ebp + 0x10]
shr esi, 8
and esi, 0xff00
mov dword [edi + ebx], ecx
mov ecx, eax
mov ebx, eax
shr ax, 0xe
shr bx, 0xd
not eax
shr cx, 0xc
and eax, 1
not ebx
not ecx
movzx eax, byte [ebp + eax - 0xe]
and ebx, 1
and ecx, 1
or esi, eax
movzx eax, byte [ebp + ebx - 0x10]
shl esi, 8
or esi, eax
movzx eax, byte [ebp + ecx - 0x10]
shl esi, 8
or esi, eax
mov eax, dword [ebp + 0x10]
mov dword [edi + eax*2], esi
jmp 0x10001b5e
mov eax, ebx
mov esi, dword [ebp - 0x24]
shl eax, 8
or eax, ebx
shl eax, 8
or eax, ebx
shl eax, 8
or eax, ebx
mov ebx, dword [ebp + 0xc]
mov dword [ebx + esi - 4], eax
mov esi, dword [ebp - 0x1c]
mov ebx, dword [ebp + 0x10]
mov dword [esi], eax
mov dword [esi + ebx], eax
mov dword [esi + ebx*2], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x18], eax
jmp 0x10001b5e
mov esi, dword [ebp - 0x18]
test byte [0x10004018], 4
je 0x10001ba8
mov eax, dword [ebp + 8]
mov dword [esp + 0x14], eax
lea eax, [esi + 2]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.stream_ptr_out_of_bounds___d____d__n
mov dword [esp + 8], str.msvideo1_decode_8bit
mov dword [esp + 4], 0x10004018
mov dword [esp], 2
call sym._wine_dbg_log.constprop.1
add esp, 0x58
pop ebx
pop esi
pop edi
pop ebp
ret
test byte [0x10004018], 4
je 0x10001ba8
mov eax, dword [ebp + 8]
mov dword [esp + 0x14], eax
lea eax, [esi + 4]
jmp 0x10001dbe
mov esi, dword [ebp - 0x18]
test byte [0x10004018], 4
je 0x10001ba8
mov eax, dword [ebp + 8]
mov dword [esp + 0x14], eax
lea eax, [esi + 0xa]
jmp 0x10001dbe