Function at 0x533490
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x53386a
sub esp, 0x4c
mov eax, dword [esp + 0x5c]
shl eax, 6
movzx edx, byte [esp + 0x68]
test dl, dl
je 0x5334bc
or eax, 0x20
mov edx, dword [esp + 0x60]
cmp edx, 0x1f
jl 0x533809
mov ebx, dword [esp + 0x54]
lea ebp, [ebx + 1]
mov esi, dword [esp + 0x58]
cmp ebp, esi
ja 0x5337c2
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x54], ebp
or eax, 0x1f
mov byte [ecx + ebx], al
mov eax, edx
sar edx, 0x1f
mov dword [esp + 0x2c], edx
mov ebx, edx
mov edi, eax
xor eax, eax
mov dword [esp + 0x28], eax
mov eax, edi
jmp 0x533525
shr eax, 7
mov ebx, edx
shl edx, 0x19
or eax, edx
sar ebx, 7
mov edx, dword [esp + 0x28]
inc edx
mov ebp, dword [esp + 0x54]
mov edi, dword [esp + 0x60]
mov dword [esp + 0x28], edx
mov edx, ebx
mov ebx, dword [esp + 0x2c]
test edx, edx
xchg edi, ebx
setg bl
xchg edi, ebx
test eax, eax
seta bl
test edx, edx
xchg ebp, ebx
sete bl
xchg ebp, ebx
and ebp, ebx
or edi, ebp
xchg edi, eax
test al, al
xchg edi, eax
jne 0x533501
mov eax, dword [esp + 0x28]
dec eax
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x60]
mov ebp, dword [esp + 0x54]
jmp 0x533571
mov byte [edi + edx], bl
mov edx, edi
lea edi, [ebp - 1]
mov ebx, dword [esp + 0x60]
mov ebp, esi
mov esi, eax
mov ecx, edx
mov edx, dword [esp + 0x2c]
mov eax, edi
test eax, eax
jl 0x53365f
mov dword [esp + 0x30], eax
mov dword [esp + 0x48], ebp
mov dword [esp + 0x44], esi
lea edi, [eax + eax*2]
lea esi, [eax + edi*2 - 0x20]
mov dword [esp + 0x40], esi
cmp esi, 0x20
sbb ebp, ebp
xchg esi, ebx
neg ebx
xchg esi, ebx
cmp esi, 0x20
sbb ebx, ebx
lea edi, [eax + edi*2]
mov dword [esp + 0x3c], edi
cmp edi, 0x20
sbb eax, eax
shr edi, 5
cmp edi, 1
sbb edi, edi
mov dword [esp + 0x38], edi
xchg ebp, ebx
not ebx
xchg ebp, ebx
mov edi, dword [esp + 0x40]
or ebp, edi
mov edi, ecx
mov ecx, esi
mov esi, edx
shl edx, cl
and edx, ebx
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x60]
shr ebx, cl
and ebx, eax
or ebx, edx
mov ecx, ebp
mov eax, esi
sar esi, cl
mov edx, dword [esp + 0x38]
xor edx, 0xffffffff
and edx, esi
or edx, ebx
mov ebx, edx
and edx, 0x7f
mov ebp, dword [esp + 0x30]
test ebp, ebp
je 0x53365b
or ebx, 0xffffff80
mov edx, dword [esp + 0x48]
lea esi, [edx + 1]
mov ecx, eax
mov eax, dword [esp + 0x44]
cmp esi, eax
jbe 0x533559
mov byte [esp + 0x22], bl
lea ecx, [0x5a5da0]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], esi
call fcn.00445360
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea esi, [eax + 1]
mov edx, dword [esp + 0x48]
movzx ebx, byte [esp + 0x22]
mov ebp, dword [esp + 0x30]
mov eax, ecx
mov ecx, dword [esp + 0x2c]
jmp 0x533559
mov ebx, edx
jmp 0x5335fd
mov dword [esp + 0x54], ebp
mov eax, dword [esp + 0x64]
cmp eax, 0x80
jl 0x53377d
mov edx, eax
mov ebx, 1
jmp 0x53367f
inc ebx
sar eax, 8
cmp eax, 0xff
jg 0x53367b
lea eax, [ebp + 1]
cmp eax, esi
ja 0x53373d
or ebx, 0xffffff80
mov byte [ecx + ebp], bl
nop
mov ebx, edx
mov ebp, 1
jmp 0x5336a5
inc ebp
sar edx, 8
cmp edx, 0xff
jg 0x5336a1
jmp 0x5336c0
mov byte [edi + eax], bl
mov eax, dword [esp + 0x48]
mov ebx, edx
mov eax, ebp
mov ecx, edi
mov ebp, dword [esp + 0x48]
test ebp, ebp
jle 0x53372d
lea edx, [ebp - 1]
mov dword [esp + 0x48], edx
shl edx, 3
cmp edx, 0x20
sbb edi, edi
lea ebp, [eax + 1]
xchg edi, ebx
not ebx
xchg edi, ebx
or edx, edi
mov edi, ecx
mov ecx, edx
mov edx, ebx
sar ebx, cl
cmp esi, ebp
jae 0x5336af
mov dword [esp + 0x34], eax
mov dword [esp + 0x44], ebx
lea ecx, [0x5a5da0]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ebp
call fcn.00445360
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
lea ebp, [eax + 1]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x44]
jmp 0x5336af
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], esi
add esp, 0x4c
ret
mov dword [esp + 0x24], ebx
lea edx, [0x5a5da0]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
call fcn.00445360
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
inc eax
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x54]
jmp 0x533691
lea edx, [ebp + 1]
cmp esi, edx
jb 0x53378b
mov byte [ecx + ebp], al
mov eax, edx
jmp 0x53372d
lea eax, [0x5a5da0]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], edx
call fcn.00445360
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
lea edx, [eax + 1]
mov eax, dword [esp + 0x64]
mov ebp, dword [esp + 0x54]
jmp 0x533784
mov byte [esp + 0x23], al
lea eax, [0x5a5da0]
mov dword [esp], eax
mov ecx, dword [esp + 0x50]
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ebp
call fcn.00445360
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
lea ebp, [eax + 1]
movzx eax, byte [esp + 0x23]
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x54]
jmp 0x5334e0
or eax, edx
mov edx, dword [esp + 0x54]
lea ebx, [edx + 1]
mov ebp, dword [esp + 0x58]
cmp ebp, ebx
jb 0x53382a
mov ecx, dword [esp + 0x50]
mov byte [ecx + edx], al
mov esi, ebp
mov ebp, ebx
jmp 0x53365f
mov byte [esp + 0x23], al
lea eax, [0x5a5da0]
mov dword [esp], eax
mov ecx, dword [esp + 0x50]
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ebx
call fcn.00445360
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea ebx, [eax + 1]
movzx eax, byte [esp + 0x23]
mov edx, dword [esp + 0x54]
jmp 0x53381e
call fcn.0045ccc0
jmp fcn.00533490