Function at 0x4181c0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push 0xfffffffffffffffe
push 0x504758
push 0x4893f0
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push esi
push edi
mov eax, dword [0x510a50]
xor dword [ebp - 8], eax
xor eax, ebp
push eax
lea eax, [ebp - 0x10]
mov dword fs:[0], eax
mov dword [ebp - 0x18], esp
xor eax, eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], eax
mov ecx, 0x86
mov eax, dword [ebp + 8]
mov esi, eax
mov edx, dword [ebp + 0xc]
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x1c], 0x218
lea esi, [eax + 0x218]
lea edi, [edx + 0x218]
mov ecx, 0x17
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x1c], 0x275
mov cx, word [eax + 0x275]
mov word [edx + 0x275], cx
mov ebx, 0x277
mov dword [ebp - 0x1c], ebx
movzx ecx, word [eax + 0x275]
test cx, cx
je 0x41827e
push ecx
mov eax, dword [eax + 0x277]
push eax
add edx, ebx
push edx
call fcn.00488b10
add esp, 0xc
mov ecx, dword [ebp + 8]
movzx ebx, word [ecx + 0x275]
add ebx, 0x277
mov dword [ebp - 0x1c], ebx
mov edx, dword [ebp + 0xc]
mov eax, ecx
mov cx, word [eax + 0x27b]
mov word [ebx + edx], cx
add ebx, 2
mov dword [ebp - 0x1c], ebx
movzx ecx, word [eax + 0x27b]
test cx, cx
je 0x4182c4
push ecx
mov eax, dword [eax + 0x27d]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
movzx eax, word [edx + 0x27b]
add ebx, eax
mov dword [ebp - 0x1c], ebx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov cx, word [eax + 0x281]
mov word [ebx + edx], cx
add ebx, 2
mov dword [ebp - 0x1c], ebx
movzx ecx, word [eax + 0x281]
test cx, cx
je 0x41830a
push ecx
mov eax, dword [eax + 0x283]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
movzx eax, word [edx + 0x281]
add ebx, eax
mov dword [ebp - 0x1c], ebx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov cx, word [eax + 0x287]
mov word [ebx + edx], cx
add ebx, 2
mov dword [ebp - 0x1c], ebx
movzx ecx, word [eax + 0x287]
test cx, cx
je 0x418350
push ecx
mov eax, dword [eax + 0x289]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
movzx eax, word [edx + 0x287]
add ebx, eax
mov dword [ebp - 0x1c], ebx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov cx, word [eax + 0x28d]
mov word [ebx + edx], cx
add ebx, 2
mov dword [ebp - 0x1c], ebx
cmp word [eax + 0x28d], 0
je 0x418424
xor ecx, ecx
mov dword [ebp - 0x20], ecx
jmp 0x418380
movzx esi, word [eax + 0x28d]
cmp ecx, esi
jge 0x418424
imul ecx, ecx, 0x86
mov dword [ebp - 0x24], ecx
mov esi, dword [eax + 0x28f]
add esi, ecx
lea edi, [ebx + edx]
mov ecx, 0x20
rep movsd dword es:[edi], dword [esi]
sub ebx, 0xffffff80
mov dword [ebp - 0x1c], ebx
mov esi, dword [eax + 0x28f]
mov ecx, dword [ebp - 0x24]
mov si, word [ecx + esi + 0x80]
mov word [ebx + edx], si
add ebx, 2
mov dword [ebp - 0x1c], ebx
mov esi, dword [eax + 0x28f]
cmp word [ecx + esi + 0x80], 0
je 0x418419
lea eax, [ecx + esi]
movzx ecx, word [eax + 0x80]
push ecx
mov eax, dword [eax + 0x82]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x28f]
mov ecx, dword [ebp - 0x24]
movzx edx, word [ecx + eax + 0x80]
add ebx, edx
mov dword [ebp - 0x1c], ebx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
jmp 0x418380
mov cx, word [eax + 0x293]
mov word [ebx + edx], cx
add ebx, 2
mov dword [ebp - 0x1c], ebx
cmp word [eax + 0x293], 0
je 0x4184f4
xor ecx, ecx
mov dword [ebp - 0x20], ecx
jmp 0x418450
movzx esi, word [eax + 0x293]
cmp ecx, esi
jge 0x4184f4
imul ecx, ecx, 0x86
mov dword [ebp - 0x24], ecx
mov esi, dword [eax + 0x295]
add esi, ecx
lea edi, [ebx + edx]
mov ecx, 0x20
rep movsd dword es:[edi], dword [esi]
sub ebx, 0xffffff80
mov dword [ebp - 0x1c], ebx
mov esi, dword [eax + 0x295]
mov ecx, dword [ebp - 0x24]
mov si, word [ecx + esi + 0x80]
mov word [ebx + edx], si
add ebx, 2
mov dword [ebp - 0x1c], ebx
mov esi, dword [eax + 0x295]
cmp word [ecx + esi + 0x80], 0
je 0x4184e9
lea eax, [ecx + esi]
movzx ecx, word [eax + 0x80]
push ecx
mov eax, dword [eax + 0x82]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x295]
mov ecx, dword [ebp - 0x24]
movzx edx, word [ecx + eax + 0x80]
add ebx, edx
mov dword [ebp - 0x1c], ebx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
jmp 0x418450
mov cx, word [eax + 0x299]
mov word [ebx + edx], cx
add ebx, 2
mov dword [ebp - 0x1c], ebx
xor ecx, ecx
mov dword [ebp - 0x20], ecx
lea ebx, [ebx]
movzx esi, word [eax + 0x299]
lea edi, [ebx + edx]
cmp ecx, esi
jge 0x4186ee
imul ecx, ecx, 0x9a
mov dword [ebp - 0x24], ecx
mov esi, dword [eax + 0x29b]
add esi, ecx
mov ecx, 0x20
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
add ebx, 0x82
mov dword [ebp - 0x1c], ebx
mov esi, dword [eax + 0x29b]
mov ecx, dword [ebp - 0x24]
mov si, word [ecx + esi + 0x82]
mov word [ebx + edx], si
add ebx, 2
mov dword [ebp - 0x1c], ebx
mov esi, dword [eax + 0x29b]
add esi, ecx
cmp word [esi + 0x82], 0
je 0x4185b6
mov eax, dword [eax + 0x29b]
add eax, ecx
movzx ecx, word [eax + 0x82]
push ecx
mov eax, dword [eax + 0x84]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 0x24]
add esi, dword [edx + 0x29b]
movzx edx, word [esi + 0x82]
add ebx, edx
mov dword [ebp - 0x1c], ebx
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov si, word [esi + 0x88]
mov word [ebx + edx], si
add ebx, 2
mov dword [ebp - 0x1c], ebx
mov esi, dword [eax + 0x29b]
add esi, ecx
cmp word [esi + 0x88], 0
je 0x41861d
mov eax, dword [eax + 0x29b]
add eax, ecx
movzx ecx, word [eax + 0x88]
push ecx
mov eax, dword [eax + 0x8a]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 0x24]
add esi, dword [edx + 0x29b]
movzx edx, word [esi + 0x88]
add ebx, edx
mov dword [ebp - 0x1c], ebx
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov si, word [esi + 0x8e]
mov word [ebx + edx], si
add ebx, 2
mov dword [ebp - 0x1c], ebx
mov esi, dword [eax + 0x29b]
add esi, ecx
cmp word [esi + 0x8e], 0
je 0x418684
mov eax, dword [eax + 0x29b]
add eax, ecx
movzx ecx, word [eax + 0x8e]
push ecx
mov eax, dword [eax + 0x90]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 0x24]
add esi, dword [edx + 0x29b]
movzx edx, word [esi + 0x8e]
add ebx, edx
mov dword [ebp - 0x1c], ebx
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov si, word [esi + 0x94]
mov word [ebx + edx], si
add ebx, 2
mov dword [ebp - 0x1c], ebx
mov esi, dword [eax + 0x29b]
cmp word [ecx + esi + 0x94], 0
je 0x4186e3
lea eax, [ecx + esi]
movzx ecx, word [eax + 0x94]
push ecx
mov eax, dword [eax + 0x96]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x29b]
mov ecx, dword [ebp - 0x24]
movzx edx, word [ecx + eax + 0x94]
add ebx, edx
mov dword [ebp - 0x1c], ebx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
jmp 0x418510
lea esi, [eax + 0x29f]
mov ecx, 0xe
rep movsd dword es:[edi], dword [esi]
add ebx, 0x38
mov dword [ebp - 0x1c], ebx
mov cx, word [eax + 0x2d7]
mov word [ebx + edx], cx
add ebx, 2
mov dword [ebp - 0x1c], ebx
movzx ecx, word [eax + 0x2d7]
test cx, cx
je 0x418753
lea ecx, [ecx + ecx*4]
shl ecx, 6
push ecx
mov eax, dword [eax + 0x2d9]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
movzx eax, word [edx + 0x2d7]
lea eax, [eax + eax*4]
shl eax, 6
add ebx, eax
mov dword [ebp - 0x1c], ebx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov cx, word [eax + 0x2dd]
mov word [ebx + edx], cx
add ebx, 2
mov dword [ebp - 0x1c], ebx
movzx ecx, word [eax + 0x2dd]
test cx, cx
je 0x4187a5
lea ecx, [ecx + ecx*4]
shl ecx, 6
push ecx
mov eax, dword [eax + 0x2df]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
movzx eax, word [edx + 0x2dd]
lea eax, [eax + eax*4]
shl eax, 6
add ebx, eax
mov dword [ebp - 0x1c], ebx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov cx, word [eax + 0x2e3]
mov word [ebx + edx], cx
add ebx, 2
mov dword [ebp - 0x1c], ebx
movzx ecx, word [eax + 0x2e3]
test cx, cx
je 0x4187f1
lea ecx, [ecx + ecx*4]
shl ecx, 6
push ecx
mov eax, dword [eax + 0x2e5]
push eax
lea ecx, [ebx + edx]
push ecx
call fcn.00488b10
add esp, 0xc
mov edx, dword [ebp + 8]
movzx eax, word [edx + 0x2e3]
lea eax, [eax + eax*4]
shl eax, 6
add ebx, eax
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 4], 0xfffffffe
mov eax, 1
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret