Function at 0x4763b0
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb0
mov eax, dword [0x5428f8]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x18]
xor ecx, ecx
push ebx
mov ebx, dword [ebp + 0x10]
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0x9c], edi
mov dword [ebp - 0xa0], esi
mov al, byte [edi + 0x1f9]
movzx edx, byte [edi + 0x1fd]
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0xac], ecx
mov dword [ebp - 0x90], edx
cmp al, 1
jne 0x4765e9
movzx eax, word [edi + 0x320]
mov dword [ebp - 0x98], eax
test eax, 0x4000
je 0x476432
movzx eax, word [edi + 0x1f4]
mov dword [ebp - 0x8c], eax
mov eax, ebx
mov dword [ebp - 0xac], 1
sub eax, dword [ebp - 0x8c]
dec esi
add esi, eax
mov dword [ebp - 0x8c], eax
test dword [ebp - 0x98], 0x2000
mov al, byte [esi]
movzx ecx, al
mov byte [ebp - 0x85], al
mov eax, ecx
mov dword [ebp - 0xa4], ecx
mov dword [ebp - 0x94], eax
mov dword [ebp - 0xa8], eax
je 0x476561
mov eax, dword [ebp - 0x8c]
mov ebx, ecx
sub ebx, dword [ebp - 0x8c]
dec eax
add ebx, edx
mov edx, 0xff
shr ebx, 0x1f
dec bl
cmp eax, edx
cmovg eax, edx
xor edx, edx
mov dword [ebp - 0x98], eax
test eax, eax
jle 0x4764d3
mov edi, eax
mov ah, byte [ebp - 0x85]
mov al, byte [esi]
lea esi, [esi - 1]
sub ecx, edx
xor al, ah
shr ecx, 0x1f
inc edx
dec cl
and cl, al
or bl, cl
mov ecx, dword [ebp - 0xa4]
cmp edx, edi
jl 0x4764b0
mov edi, dword [ebp - 0x9c]
mov eax, dword [ebp - 0x8c]
sub eax, dword [ebp - 0x90]
mov ecx, dword [ebp - 0x94]
sub eax, ecx
push 1
push dword [ebp + 0x14]
dec eax
push ecx
push eax
push dword [ebp - 0xa0]
lea eax, [ebp - 0x84]
push eax
mov eax, dword [edi + 0x48]
push edi
call eax
movzx ecx, byte [edi + 0x1fd]
mov esi, eax
lea eax, [ebp - 0x84]
push eax
push ecx
push dword [ebp - 0x8c]
push dword [ebp - 0xa0]
call fcn.00470920
or al, bl
add esp, 0x2c
not al
mov cl, al
shr cl, 4
and al, cl
movzx eax, al
mov ecx, eax
shr ecx, 2
and ecx, eax
mov eax, ecx
shr eax, 1
and eax, ecx
dec eax
add eax, esi
je 0x4765e1
pop edi
pop esi
mov eax, 0xfffffecf
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0049bafa
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0xa0]
sub ebx, edx
xor ecx, ecx
push 1
push dword [ebp + 0x14]
lea edx, [ebx - 1]
cmp eax, edx
mov dword [ebp - 0x98], edx
cmova eax, ecx
cmp dword [ebp - 0xa8], edx
mov dword [ebp - 0x94], eax
mov eax, ebx
cmovbe ecx, dword [ebp - 0xa4]
sub eax, ecx
push ecx
dec eax
push eax
push esi
lea eax, [ebp - 0x44]
push eax
mov eax, dword [edi + 0x48]
push edi
call eax
push dword [ebp - 0x90]
sub ebx, dword [ebp - 0x94]
lea ecx, [esi - 1]
add ecx, ebx
mov dword [ebp - 0x9c], eax
push ecx
lea eax, [ebp - 0x44]
push eax
call fcn.0046ae20
add esp, 0x28
test eax, eax
jne 0x47662a
cmp dword [ebp - 0x9c], eax
jne 0x47662a
mov eax, dword [ebp - 0x98]
cmp dword [ebp - 0xa8], eax
ja 0x47662a
mov ecx, dword [ebp - 0x94]
jmp 0x476642
test al, al
jne 0x476648
push 1
push dword [ebp + 0x14]
sub ebx, edx
lea eax, [ebp - 0x44]
push 0xffffffffffffffff
push ebx
push esi
push eax
mov eax, dword [edi + 0x48]
push edi
call eax
push dword [ebp - 0x90]
lea ecx, [ebx + esi]
mov dword [ebp - 0x9c], eax
push ecx
lea eax, [ebp - 0x44]
push eax
call fcn.0046ae20
add esp, 0x28
test eax, eax
jne 0x47662a
cmp dword [ebp - 0x9c], eax
je 0x476640
pop edi
pop esi
mov eax, 0xfffffecf
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0049bafa
mov esp, ebp
pop ebp
ret
xor ecx, ecx
mov edx, dword [ebp - 0x90]
cmp byte [edi + 0x1f9], 2
jne 0x47665a
movzx eax, word [edi + 0x1f6]
jmp 0x476664
mov eax, dword [ebp - 0xac]
add eax, edx
add eax, ecx
mov ecx, dword [ebp - 0xb0]
pop edi
pop esi
pop ebx
mov dword [ecx], eax
xor eax, eax
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0049bafa
mov esp, ebp
pop ebp
ret