Function at 0x555d70
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x18
mov eax, dword [esp + 0x38]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x2c]
push ebx
push ebp
push esi
mov eax, dword [eax + ecx*4]
mov esi, 1
mov dword [esp + 0x14], eax
mov ebp, edx
mov eax, dword [esp + 0x40]
push edi
mov dword [esp + 0x1c], ebp
mov eax, dword [eax + ecx*4]
cmp eax, esi
mov dword [esp + 0x10], eax
cmovg esi, eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
test eax, 0xffff0000
je 0x555dbf
sar eax, 0x10
mov ecx, eax
call fcn.0053dee0
jmp 0x555dc9
mov ecx, eax
call fcn.0053dee0
add eax, 0x10
lea ebx, [eax - 1]
mov eax, 0x1fffffff
mov ecx, ebx
cdq
shl esi, cl
mov ecx, esi
movzx esi, si
sar ecx, 0x10
idiv ecx
mov edi, eax
movsx edx, di
imul ecx, edx
imul esi, edx
sar esi, 0x10
add esi, ecx
mov ecx, edi
sar ecx, 0xf
neg esi
shl esi, 3
inc ecx
sar ecx, 1
imul ecx, esi
movzx eax, si
imul eax, edx
sar esi, 0x10
imul esi, edx
shl edi, 0x10
sar eax, 0x10
add ecx, eax
add ecx, esi
add ecx, edi
mov edi, 0xe
sub edi, ebx
mov dword [esp + 0x48], ecx
test edi, edi
jg 0x555e69
mov eax, dword [esp + 0x48]
neg edi
mov ecx, edi
mov esi, SysReAllocString
mov edx, SysReAllocString
sar esi, cl
sar edx, cl
cmp esi, edx
jle 0x555e50
cmp eax, esi
jg 0x555e63
cmp eax, edx
mov esi, eax
cmovl esi, edx
shl esi, cl
jmp 0x555e78
cmp eax, edx
jle 0x555e5c
mov esi, edx
mov ecx, edi
shl esi, cl
jmp 0x555e78
cmp eax, esi
cmovl eax, esi
mov esi, eax
mov ecx, edi
shl esi, cl
jmp 0x555e78
cmp edi, 0x20
jge 0x555e76
mov esi, ecx
mov ecx, edi
sar esi, cl
jmp 0x555e78
xor esi, esi
mov ecx, dword [ebp + 0x1114]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x48], esi
cmp eax, ecx
je 0x555e99
push ecx
mov edx, eax
call fcn.005550c0
add esp, 4
mov edi, eax
jmp 0x555e9e
mov edi, 0x10000
mov ecx, dword [esp + 0x14]
mov eax, esi
sar eax, 7
inc eax
mov dword [esp + 0x44], edi
sar eax, 1
mov ecx, dword [ecx + 0x1204]
mov dword [esp + 0x24], ecx
test ecx, ecx
jle 0x555f16
mov ebx, dword [esp + 0x30]
mov ecx, eax
mov edi, dword [esp + 0x24]
sar ecx, 0xf
inc ecx
movsx esi, ax
mov eax, dword [esp + 0x2c]
sar ecx, 1
sub eax, ebx
mov dword [esp + 0x20], ecx
mov ebp, ecx
mov dword [esp + 0x2c], eax
nop
mov edx, dword [eax + ebx]
lea ebx, [ebx + 4]
movzx ecx, dx
mov eax, edx
imul ecx, esi
sar eax, 0x10
imul eax, esi
imul edx, ebp
sar ecx, 0x10
add ecx, eax
mov eax, dword [esp + 0x2c]
add ecx, edx
mov dword [ebx - 4], ecx
sub edi, 1
jne 0x555ee0
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x1c]
cmp dword [ebp + 0x1118], 0
mov eax, dword [esp + 0x10]
mov dword [ebp + 0x1114], eax
je 0x555f9b
cmp dword [esp + 0x3c], 0
jne 0x555f49
movsx eax, word [esp + 0x40]
movzx ecx, si
sar esi, 0x10
imul ecx, eax
imul esi, eax
sar ecx, 0x10
add esi, ecx
shl esi, 2
mov eax, dword [ebp + 0x1108]
mov ebx, eax
sub ebx, dword [esp + 0x18]
sub ebx, 2
cmp ebx, eax
jge 0x555f9b
mov edi, dword [esp + 0x38]
movzx eax, si
mov dword [esp + 0x3c], eax
sar esi, 0x10
lea ebx, [ebx]
mov ecx, dword [esp + 0x34]
mov edx, eax
mov eax, esi
movsx ecx, word [ecx + ebx*2]
imul edx, ecx
imul eax, ecx
sar edx, 0x10
add edx, eax
mov eax, dword [esp + 0x3c]
mov dword [edi + ebx*4], edx
inc ebx
cmp ebx, dword [ebp + 0x1108]
jl 0x555f70
mov edi, dword [esp + 0x44]
cmp edi, 0x10000
je 0x55612d
mov edx, dword [esp + 0x14]
mov eax, dword [ebp + 0x110c]
mov ecx, eax
movzx ebx, di
sub ecx, dword [edx + 0x1208]
mov dword [esp + 0x3c], ecx
cmp ecx, eax
jge 0x55600f
mov eax, edi
lea esi, [ecx*4 + 0x500]
sar eax, 0x10
add esi, ebp
mov dword [esp + 0x48], eax
mov edx, dword [esi]
lea esi, [esi + 4]
movsx ecx, word [esi - 4]
sar edx, 0xf
mov eax, ecx
inc edx
imul eax, ebx
sar edx, 1
imul edx, edi
sar eax, 0x10
add edx, eax
mov eax, dword [esp + 0x48]
imul eax, ecx
add edx, eax
mov eax, dword [esp + 0x3c]
inc eax
mov dword [esi - 4], edx
mov dword [esp + 0x3c], eax
cmp eax, dword [ebp + 0x110c]
jl 0x555fd6
cmp dword [esp + 0x4c], 2
jne 0x556073
cmp dword [ebp + 0x1118], 0
jne 0x556073
mov eax, dword [ebp + 0x1108]
mov esi, eax
sub esi, dword [esp + 0x18]
sub esi, 2
cmp esi, eax
jge 0x556073
mov eax, edi
sar eax, 0x10
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x38]
nop
mov edx, dword [eax + esi*4]
movsx ecx, word [eax + esi*4]
mov eax, ebx
sar edx, 0xf
inc edx
imul eax, ecx
sar edx, 1
imul edx, edi
sar eax, 0x10
add edx, eax
mov eax, dword [esp + 0x3c]
imul eax, ecx
add edx, eax
mov eax, dword [esp + 0x38]
mov dword [eax + esi*4], edx
inc esi
cmp esi, dword [ebp + 0x1108]
jl 0x556040
mov ecx, dword [ebp + 0x1100]
mov esi, edi
movsx edx, word [ebp + 0x1100]
sar ecx, 0xf
mov eax, edx
inc ecx
sar esi, 0x10
sar ecx, 1
imul eax, ebx
imul ecx, edi
imul edx, esi
mov dword [esp + 0x48], esi
lea esi, [ebp + 0xf00]
mov dword [esp + 0x3c], 0x20
sar eax, 0x10
add ecx, eax
add ecx, edx
mov dword [ebp + 0x1100], ecx
mov ebp, dword [esp + 0x48]
lea esp, [esp]
mov edx, dword [esi]
lea esi, [esi + 4]
movsx ecx, word [esi - 4]
sar edx, 0xf
mov eax, ecx
inc edx
imul eax, ebx
sar edx, 1
imul edx, edi
sar eax, 0x10
add edx, eax
mov eax, ebp
imul eax, ecx
add edx, eax
sub dword [esp + 0x3c], 1
mov dword [esi - 4], edx
jne 0x5560c0
mov esi, dword [esp + 0x1c]
mov ebp, 0x10
add esi, 0x10c0
lea esp, [esp]
mov edx, dword [esi]
lea esi, [esi + 4]
movsx ecx, word [esi - 4]
sar edx, 0xf
mov eax, ecx
inc edx
imul eax, ebx
sar edx, 1
imul edx, edi
sar eax, 0x10
add edx, eax
mov eax, dword [esp + 0x48]
imul eax, ecx
add edx, eax
mov dword [esi - 4], edx
sub ebp, 1
jne 0x556100
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret