Function at 0x47dc80
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, edx
push edi
push esi
push ebx
sub esp, 0x2c
mov edx, dword [edx]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x40]
mov dword [esp + 0x1c], ecx
test edx, edx
je 0x47dca4
cmp byte [edx], 0x78
je 0x47de18
movzx eax, byte [esi]
mov byte [esp + 0x17], 0
test al, al
je 0x47de54
movzx edi, byte [esp + 0x17]
mov edx, 1
mov ecx, 1
xor ebx, ebx
mov byte [esp + 0x10], dl
xor edi, 1
lea esi, [esi]
cmp byte [esp + 0x10], 0
je 0x47dcec
cmp ebx, 0x24
mov byte [esp + 0x10], 0
jg 0x47dcec
cmp byte [ebx + str.http:__www.w3.org_XML_1998_namespace], al
sete byte [esp + 0x10]
mov edx, edi
test cl, dl
je 0x47dd02
xor ecx, ecx
cmp ebx, 0x1d
jg 0x47dd02
cmp byte [ebx + str.http:__www.w3.org_2000_xmlns_], al
sete cl
add ebx, 1
movzx eax, byte [esi + ebx]
test al, al
jne 0x47dcd0
movzx edx, byte [esp + 0x10]
cmp ebx, 0x24
movzx edi, byte [esp + 0x17]
sete al
and eax, edx
mov edx, edi
cmp dl, al
je 0x47dd43
test dl, dl
mov eax, 0x28
jne 0x47dd36
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
add esp, 0x2c
mov eax, 0x26
pop ebx
pop esi
pop edi
pop ebp
ret
cmp ebx, 0x1d
jne 0x47dd51
test cl, cl
mov eax, 0x28
jne 0x47dd2e
mov eax, dword [esp + 0x18]
mov edi, dword [eax + 0x178]
cmp byte [eax + 0x1d8], 1
sbb ebx, 0xffffffff
test edi, edi
je 0x47deb9
cmp dword [edi + 0x18], ebx
jl 0x47de87
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x178], eax
mov eax, dword [edi + 0x10]
mov dword [edi + 0x14], ebx
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + 0x1d8]
test al, al
je 0x47ddaf
mov edx, dword [edi + 0x10]
mov byte [edx + ebx - 1], al
mov eax, dword [esp + 0x1c]
mov dword [edi], ebp
mov dword [edi + 0xc], eax
mov eax, dword [ebp + 4]
mov dword [edi + 8], eax
cmp byte [esi], 0
je 0x47de60
mov dword [ebp + 4], edi
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x1c]
mov eax, dword [eax]
test ebx, ebx
mov dword [edi + 4], eax
mov eax, dword [esp + 0x44]
mov dword [eax], edi
je 0x47deb2
mov edi, dword [esp + 0x18]
xor eax, eax
mov edx, dword [edi + 0x64]
test edx, edx
je 0x47dd2e
mov ecx, dword [ebp + 4]
test ecx, ecx
cmovne eax, esi
mov dword [esp + 8], eax
mov eax, dword [ebp]
mov dword [esp + 4], eax
mov eax, dword [edi + 4]
mov dword [esp], eax
call edx
xor eax, eax
jmp 0x47dd2e
cmp byte [edx + 1], 0x6d
jne 0x47dca4
cmp byte [edx + 2], 0x6c
jne 0x47dca4
movzx eax, byte [edx + 3]
cmp al, 0x6e
je 0x47def1
test al, al
movzx eax, byte [esi]
sete dl
mov byte [esp + 0x17], dl
test al, al
jne 0x47dcb4
test dl, dl
jne 0x47dd36
xor ebx, ebx
jmp 0x47dd51
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x164]
mov dword [esp + 0x10], eax
add eax, 0x98
cmp ebp, eax
jne 0x47ddc7
mov dword [ebp + 4], 0
jmp 0x47ddca
lea edx, [ebx + 0x18]
mov dword [esp + 4], edx
mov eax, dword [edi + 0x10]
mov dword [esp + 0x10], edx
mov dword [esp], eax
mov eax, dword [esp + 0x18]
call dword [eax + 0x10]
mov edx, dword [esp + 0x10]
test eax, eax
je 0x47df19
mov dword [edi + 0x10], eax
mov dword [edi + 0x18], edx
jmp 0x47dd76
xor eax, eax
jmp 0x47dd2e
mov eax, dword [esp + 0x18]
mov dword [esp], 0x1c
call dword [eax + 0xc]
test eax, eax
mov edi, eax
je 0x47df19
mov eax, dword [esp + 0x18]
lea edx, [ebx + 0x18]
mov dword [esp], edx
mov dword [esp + 0x10], edx
call dword [eax + 0xc]
mov edx, dword [esp + 0x10]
test eax, eax
mov dword [edi + 0x10], eax
je 0x47df0f
mov dword [edi + 0x18], edx
jmp 0x47dd86
cmp byte [edx + 4], 0x73
jne 0x47dca4
cmp byte [edx + 5], 0
mov eax, 0x27
je 0x47dd2e
jmp 0x47dca4
mov eax, dword [esp + 0x18]
mov dword [esp], edi
call dword [eax + 0x14]
mov eax, 1
jmp 0x47dd2e