Function at 0x4a1f4a
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
mov esi, ecx
mov ecx, dword [ebp + 8]
push edi
test ecx, ecx
je 0x4a22b0
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x4a22b0
push ebx
lea ebx, [esi + 0x308]
cmp dword [ebx], 0
mov dword [ebp - 4], ebx
je 0x4a22ba
cmp edi, dword [ebx]
jb 0x4a2296
push dword [ebx]
mov eax, esi
sub eax, dword [ebx]
add eax, 0x308
push eax
push ecx
call fcn.005406f0
sub edi, dword [ebx]
add esp, 0xc
mov eax, dword [ebp + 8]
add eax, dword [ebx]
lea ebx, [esi + 0x2c8]
mov cl, byte [ebx]
mov dword [ebp + 8], eax
mov dl, byte [esi + 0x2c9]
movzx eax, cl
add cl, cl
shr eax, 7
mov dword [ebp + 0xc], eax
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2ca]
mov byte [ebx], al
mov al, cl
shr al, 7
add cl, cl
or al, dl
mov dl, byte [esi + 0x2cb]
mov byte [esi + 0x2c9], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2cc]
mov byte [esi + 0x2ca], al
mov al, cl
shr al, 7
add cl, cl
or al, dl
mov dl, byte [esi + 0x2cd]
mov byte [esi + 0x2cb], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2ce]
mov byte [esi + 0x2cc], al
mov al, cl
shr al, 7
add cl, cl
or al, dl
mov dl, byte [esi + 0x2cf]
mov byte [esi + 0x2cd], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2d0]
mov byte [esi + 0x2ce], al
mov al, cl
shr al, 7
add cl, cl
or al, dl
mov dl, byte [esi + 0x2d1]
mov byte [esi + 0x2cf], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2d2]
mov byte [esi + 0x2d0], al
mov al, cl
shr al, 7
or al, dl
mov dl, byte [esi + 0x2d3]
mov byte [esi + 0x2d1], al
mov al, dl
shr al, 7
add cl, cl
or al, cl
add dl, dl
mov byte [esi + 0x2d2], al
mov cl, byte [esi + 0x2d4]
mov al, cl
add cl, cl
shr al, 7
or al, dl
mov dl, byte [esi + 0x2d5]
mov byte [esi + 0x2d3], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2d6]
mov byte [esi + 0x2d4], al
mov al, cl
shr al, 7
add cl, cl
or al, dl
mov dl, byte [esi + 0x2d7]
mov byte [esi + 0x2d5], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2d8]
mov byte [esi + 0x2d6], al
mov al, cl
shr al, 7
add cl, cl
or al, dl
mov dl, byte [esi + 0x2d9]
mov byte [esi + 0x2d7], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2da]
mov byte [esi + 0x2d8], al
mov al, cl
shr al, 7
add cl, cl
or al, dl
mov dl, byte [esi + 0x2db]
mov byte [esi + 0x2d9], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2dc]
mov byte [esi + 0x2da], al
mov al, cl
shr al, 7
add cl, cl
or dl, al
mov byte [esi + 0x2db], dl
mov dl, byte [esi + 0x2dd]
mov al, dl
add dl, dl
shr al, 7
or al, cl
mov cl, byte [esi + 0x2de]
mov byte [esi + 0x2dc], al
mov al, cl
shr al, 7
add cl, cl
or al, dl
mov dl, byte [esi + 0x2df]
mov byte [esi + 0x2dd], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2e0]
mov byte [esi + 0x2de], al
mov al, cl
shr al, 7
or al, dl
mov dl, byte [esi + 0x2e1]
mov byte [esi + 0x2df], al
mov al, dl
mov bl, byte [esi + 0x2e6]
shr al, 7
add cl, cl
or al, cl
add dl, dl
mov cl, byte [esi + 0x2e2]
mov byte [esi + 0x2e0], al
mov al, cl
shr al, 7
add cl, cl
or al, dl
mov dl, byte [esi + 0x2e3]
mov byte [esi + 0x2e1], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov cl, byte [esi + 0x2e4]
mov byte [esi + 0x2e2], al
mov al, cl
shr al, 7
add cl, cl
or al, dl
mov dl, byte [esi + 0x2e5]
mov byte [esi + 0x2e3], al
mov al, dl
shr al, 7
add dl, dl
or al, cl
mov byte [esi + 0x2e4], al
mov al, bl
shr al, 7
add bl, bl
or al, dl
mov dl, byte [esi + 0x2e7]
mov byte [esi + 0x2e5], al
mov cl, dl
shr cl, 7
add dl, dl
or cl, bl
mov ebx, dword [ebp + 0xc]
mov al, bl
shl al, 2
xor cl, al
mov al, bl
shl al, 3
or al, bl
mov byte [esi + 0x2e6], cl
shl al, 2
or al, bl
lea ebx, [esi + 0x21c]
xor al, dl
mov ecx, ebx
mov byte [esi + 0x2e7], al
call fcn.004a1c55
push 0x20
lea eax, [esi + 0x2c8]
push eax
call fcn.004a1c96
lea eax, [esi + 0x2e8]
mov ecx, ebx
push eax
call fcn.004a1d06
mov ebx, dword [ebp - 4]
mov ecx, dword [ebp + 8]
push 0x20
pop eax
mov dword [ebx], eax
cmp edi, eax
jae 0x4a1f83
test edi, edi
je 0x4a22af
sub esi, dword [ebx]
push edi
add esi, 0x308
push esi
push ecx
call fcn.005406f0
add esp, 0xc
sub dword [ebx], edi
pop ebx
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret 8
push 0x5fa37c
lea eax, [ebp + 8]
mov dword [ebp + 8], str.PRNG_has_not_been_seeded
push eax
call fcn.005491a6
int3