Function at 0x429f1c
Capabilities:
Encrypt data using rc4 prga
Inspect section memory permissions

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x90
mov esi, dword [esp + 0xa4]
mov ebx, dword [esp + 0xa8]
test ebx, ebx
jle 0x42a28f
xor ecx, ecx
xor eax, eax
movsx edx, word [esi + eax*2]
add ecx, edx
shl edx, 0xc
mov dword [esp + eax*4 + 0x30], edx
mov edx, eax
lea eax, [eax + 1]
cmp ebx, eax
jne 0x429f40
mov dword [esp + 0x24], edx
cmp ecx, 0xfff
jle 0x429f6f
xor eax, eax
add esp, 0x90
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, edx
test edx, edx
je 0x42a28f
add eax, 0x3fffffff
add eax, eax
add eax, eax
add eax, 0x30
add eax, esp
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0x40000000
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 4]
lea edx, [eax + 0xffef9e]
cmp edx, 0x1ffdf3c
ja 0x429f62
shl eax, 7
neg eax
mov edi, eax
mov dword [esp + 0x14], eax
imul edi
mov ebx, 0x40000000
sub ebx, edx
mov eax, dword [esp + 0x2c]
imul ebx
add edx, edx
lea eax, [edx + edx]
mov dword [esp + 0x2c], eax
cmp eax, 0x1a36d
jle 0x429f62
bsr eax, ebx
xor eax, 0x1f
mov ebp, eax
mov eax, 0x3e
sub eax, ebp
mov dword [esp], eax
lea ecx, [ebp - 1]
shl ebx, cl
mov esi, ebx
sar esi, 0x10
mov eax, 0x1fffffff
xor edx, edx
idiv esi
movsx edi, ax
movzx ebx, bx
imul ebx, edi
sar ebx, 0x10
imul esi, edi
add esi, ebx
mov edx, 0x20000000
sub edx, esi
add edx, edx
add edx, edx
add edx, edx
movzx esi, dx
imul esi, edi
sar esi, 0x10
mov ebx, edx
sar ebx, 0x10
imul ebx, edi
add ebx, esi
mov esi, eax
shl esi, 0x10
add esi, ebx
sar eax, 0xf
add eax, 1
sar eax, 1
imul eax, edx
add eax, esi
mov edx, 0x3d
sub edx, ecx
mov ecx, edx
mov edi, dword [esp]
sub ecx, edi
test ecx, ecx
jle 0x42a277
sar eax, cl
mov edi, dword [esp + 0x24]
lea edx, [edi + 1]
sar edx, 1
mov dword [esp + 0x20], edx
mov dword [esp + 8], eax
sar eax, 0x1f
mov dword [esp + 0xc], eax
mov eax, 0x1f
sub eax, ebp
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
xor ebp, ebp
jmp 0x42a1d8
add ecx, 0x80000000
mov dword [esp], accept
mov dword [esp + 4], 0xffffffff
test ecx, esi
js 0x42a0af
mov ebx, esi
sub ebx, eax
mov ecx, ebx
sar ecx, 0x1f
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov eax, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov ebx, eax
mov ecx, dword [esp + 4]
imul ebx, ecx
mov eax, dword [esp]
imul edx, eax
add ebx, edx
mul dword [esp + 8]
add edx, ebx
movzx ecx, byte [esp + 0x18]
shrd eax, edx, cl
sar edx, cl
mov ebx, edx
sar ebx, 0x1f
test cl, 0x20
cmovne eax, edx
cmovne edx, ebx
mov ecx, eax
mov ebx, edx
add ecx, 1
adc ebx, 0
shrd ecx, ebx, 1
sar ebx, 1
mov eax, ecx
mov edx, ebx
add eax, 0x80000000
adc edx, 0
cmp edx, 0
ja 0x429f62
mov dword [esp + ebp*4 + 0x30], ecx
mov eax, esi
imul dword [esp + 0x14]
mov ecx, eax
mov ebx, edx
shrd ecx, edx, 0x1e
sar ebx, 0x1e
add ecx, 1
adc ebx, 0
shrd ecx, ebx, 1
mov esi, ecx
mov eax, edi
sub eax, ecx
mov dword [esp + 0x1c], eax
js 0x42a237
add esi, 0x80000000
mov dword [esp], accept
mov dword [esp + 4], 0xffffffff
test esi, edi
js 0x42a163
mov eax, edi
sub eax, ecx
mov edi, eax
sar edi, 0x1f
mov dword [esp], eax
mov dword [esp + 4], edi
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0xc]
mov ecx, ebx
mov eax, dword [esp + 4]
imul ecx, eax
mov edx, esi
mov eax, dword [esp]
imul edx, eax
add ecx, edx
mul ebx
add edx, ecx
movzx ecx, byte [esp + 0x18]
shrd eax, edx, cl
sar edx, cl
mov ebx, edx
sar ebx, 0x1f
test cl, 0x20
cmovne eax, edx
cmovne edx, ebx
add eax, 1
adc edx, 0
shrd eax, edx, 1
sar edx, 1
mov ecx, eax
mov ebx, edx
add ecx, 0x80000000
adc ebx, 0
cmp ebx, 0
ja 0x429f62
mov edi, dword [esp + 0x10]
mov dword [edi], eax
add ebp, 1
sub edi, 4
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x20]
cmp ebp, eax
jge 0x42a265
mov esi, dword [esp + ebp*4 + 0x30]
mov eax, dword [esp + 0x10]
mov edi, dword [eax]
mov eax, dword [esp + 0x14]
imul edi
shrd eax, edx, 0x1e
sar edx, 0x1e
add eax, 1
adc edx, 0
shrd eax, edx, 1
mov ecx, eax
mov ebx, esi
sub ebx, eax
mov dword [esp + 0x1c], ebx
jns 0x42a086
lea ebx, [esi - 0x80000000]
mov dword [esp], accept
mov dword [esp + 4], 0
test ebx, eax
js 0x42a0af
mov eax, dword [esp + 0x1c]
cdq
mov dword [esp], eax
mov dword [esp + 4], edx
jmp 0x42a0af
add edi, 0x80000000
mov dword [esp], accept
mov dword [esp + 4], 0
test edi, ecx
js 0x42a163
mov eax, dword [esp + 0x1c]
cdq
mov dword [esp], eax
mov dword [esp + 4], edx
jmp 0x42a163
sub dword [esp + 0x28], 4
sub dword [esp + 0x24], 1
jne 0x429f93
jmp 0x42a29e
mov ecx, edi
sub ecx, edx
mov edx, accept
sar edx, cl
cmp eax, edx
jle 0x42a2e3
mov eax, edx
shl eax, cl
jmp 0x42a054
lea eax, [ebx - 1]
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], 0x40000000
mov eax, dword [esp + 0x24]
mov eax, dword [esp + eax*4 + 0x30]
add eax, 0xffef9e
cmp eax, 0x1ffdf3c
ja 0x429f62
mov edx, dword [esp + 0x30]
shl edx, 7
neg edx
mov eax, edx
imul edx
mov eax, 0x40000000
sub eax, edx
imul dword [esp + 0x2c]
lea eax, [edx + edx]
add eax, eax
cmp eax, 0x1a36d
jg 0x429f64
jmp 0x429f62
mov edx, accept
sar edx, cl
cmp edx, eax
cmovge eax, edx
shl eax, cl
jmp 0x42a054