Function at 0x1003b370
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x458
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
mov dword [ebp - 0x414], edx
mov edx, ecx
mov dword [ebp - 0x41c], edx
mov eax, dword [ebx + 8]
mov dword [ebp - 0x418], eax
mov eax, dword [ebx + 0x10]
mov esi, dword [edx + 4]
mov dword [ebp - 0x434], eax
mov eax, dword [ebx + 0x14]
mov dword [ebp - 0x410], eax
mov eax, dword [ebx + 0x18]
lea ecx, [esi - 0xb]
mov dword [ebp - 0x42c], eax
mov eax, dword [ebx + 0x1c]
cmp eax, ecx
cmova eax, ecx
xor edi, edi
mov dword [ebx + 0x1c], eax
mov byte [ebp - 0x409], 0
cmp dword [edx + 0xa4], edi
jne 0x1003b72e
lea eax, [esi - 0x10]
cmp eax, 0x3f0
ja 0x1003b72e
mov edx, dword [ebp - 0x414]
lea eax, [ebp - 0x408]
mov ecx, dword [ebp - 0x41c]
push eax
push dword [ebp - 0x410]
push dword [ebp - 0x418]
call fcn.10039da0
add esp, 0xc
mov dword [ebp - 0x414], eax
test eax, eax
jne 0x1003b6fd
movzx eax, byte [ebp - 0x407]
mov edx, 2
movzx ecx, byte [ebp - 0x408]
xor eax, 2
or ecx, eax
mov dword [ebp - 0x410], ecx
cmp esi, edx
jbe 0x1003b495
nop word [eax + eax]
mov al, byte [ebp + edx - 0x408]
inc edx
mov ah, byte [ebp - 0x409]
mov cl, al
neg cl
or cl, al
not cl
shr cl, 7
or ah, cl
mov al, ah
mov byte [ebp - 0x409], ah
neg al
or al, ah
not al
movzx eax, al
shr eax, 7
add edi, eax
cmp edx, esi
jb 0x1003b460
movzx ecx, byte [ebp - 0x409]
lea eax, [edi - 8]
neg ecx
shr eax, 0x1f
shr ecx, 0x1f
dec ecx
and ecx, 1
or ecx, eax
mov eax, dword [ebp - 0x410]
or eax, ecx
mov edx, eax
mov dword [ebp - 0x410], eax
neg edx
mov eax, esi
sub eax, edi
shr edx, 0x1f
sub eax, 3
neg edx
mov ecx, edx
not ecx
and eax, ecx
mov dword [ebp - 0x418], eax
mov eax, edx
and eax, dword [ebx + 0x1c]
and edx, 0x4100
or dword [ebp - 0x418], eax
mov eax, dword [ebx + 0x1c]
sub eax, dword [ebp - 0x418]
shr eax, 0x1f
mov edi, eax
or eax, dword [ebp - 0x410]
neg edi
neg eax
shr edi, 0x1f
mov dword [ebp - 0x414], edi
neg dword [ebp - 0x414]
and dword [ebp - 0x414], ecx
mov ecx, dword [ebp - 0x414]
and ecx, 0x4400
shr eax, 0x1f
or ecx, edx
neg eax
neg ecx
mov dword [ebp - 0x414], ecx
mov ecx, 0xb
movd xmm0, eax
pshufd xmm0, xmm0, 0
cmp esi, ecx
jbe 0x1003b61e
lea edx, [esi - 0xb]
cmp edx, 0x10
jb 0x1003b603
andps xmm0, xmmword [0x10071bd0]
and edx, 0xf
packuswb xmm0, xmm0
packuswb xmm0, xmm0
andnps xmm0, xmmword [0x10071bf0]
mov dword [ebp - 0x410], esi
sub dword [ebp - 0x410], edx
movaps xmmword [ebp - 0x450], xmm0
mov edx, dword [ebp - 0x450]
nop dword [eax]
nop dword [eax + eax]
movd xmm0, dword [ebp + ecx - 0x408]
movd xmm1, edx
andps xmm1, xmm0
movd dword [ebp + ecx - 0x408], xmm1
movd xmm0, dword [ebp + ecx - 0x404]
movd xmm1, edx
andps xmm1, xmm0
movd dword [ebp + ecx - 0x404], xmm1
movd xmm0, dword [ebp + ecx - 0x400]
movd xmm1, edx
andps xmm1, xmm0
movd dword [ebp + ecx - 0x400], xmm1
movd xmm0, dword [ebp + ecx - 0x3fc]
movd xmm1, edx
andps xmm1, xmm0
movd dword [ebp + ecx - 0x3fc], xmm1
add ecx, 0x10
cmp ecx, dword [ebp - 0x410]
jb 0x1003b590
cmp ecx, esi
jae 0x1003b61e
not al
mov dword [ebp - 0x41c], eax
mov edx, eax
nop dword [eax]
lea eax, [ebp - 0x408]
and byte [eax + ecx], dl
inc ecx
cmp ecx, esi
jb 0x1003b610
mov ecx, dword [ebx + 0x1c]
neg edi
mov eax, edi
sub esi, ecx
not eax
and edi, ecx
and eax, dword [ebp - 0x418]
or eax, edi
mov dword [ebp - 0x430], eax
lea esi, [ebp + esi - 0x408]
test ecx, ecx
je 0x1003b6df
lea edx, [ecx - 1]
mov dword [ebp - 0x418], ecx
add edx, esi
lea edi, [ecx - 1]
neg eax
mov dword [ebp - 0x428], edx
mov dword [ebp - 0x410], eax
mov ecx, eax
xor eax, eax
shr ecx, 0x1f
neg ecx
shr ecx, 0x1f
test edi, edi
je 0x1003b6bd
mov dword [ebp - 0x424], ecx
neg ecx
mov dword [ebp - 0x420], ecx
not ecx
mov dword [ebp - 0x41c], ecx
nop word [eax + eax]
mov dl, byte [eax + esi]
mov cl, byte [esi + eax + 1]
mov ch, byte [ebp - 0x41c]
and ch, cl
mov cl, byte [ebp - 0x420]
and cl, dl
or ch, cl
mov byte [eax + esi], ch
inc eax
cmp eax, edi
jb 0x1003b690
mov ecx, dword [ebp - 0x424]
mov edx, dword [ebp - 0x428]
movzx eax, byte [edx]
neg cl
and cl, al
mov eax, dword [ebp - 0x410]
inc eax
mov byte [edx], cl
sub dword [ebp - 0x418], 1
mov dword [ebp - 0x410], eax
jne 0x1003b664
mov ecx, dword [ebx + 0x1c]
push ecx
push esi
push dword [ebp - 0x42c]
call fcn.10047450
mov ecx, dword [ebp - 0x434]
add esp, 0xc
mov eax, dword [ebp - 0x430]
mov dword [ecx], eax
push 0x400
lea eax, [ebp - 0x408]
push 0
push eax
mov eax, dword [fcn.10046690]
call eax
mov eax, dword [ebp - 0x414]
add esp, 0xc
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10045387
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov ecx, dword [ebp - 4]
mov eax, 0xffffbf80
pop edi
xor ecx, ebp
pop esi
call fcn.10045387
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret