Function at 0x4b6d60
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
cmp dword [ebp - 0xc], 0
jne 0x4b6d89
mov ecx, 0x188
mov edx, 0x4b6ff4
mov eax, 0x4b7040
call fcn.00404718
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.004b71f4
xor eax, eax
mov dword [ebp - 0x14], eax
mov eax, pe_nt_image_headers32
call fcn.004032b4
mov byte [ebp - 0xd], al
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
and eax, 0xffff
or eax, 2
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
xor eax, 1
imul dword [ebp - 0x18]
shr eax, 8
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
mov al, byte [ebp - 0xd]
call fcn.004a4fd4
mov edx, dword [ebp - 4]
mov dword [edx + 8], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
and eax, 0xff
mov edx, dword [ebp - 4]
add dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
imul eax, dword [eax + 0xc], 0x8088405
inc eax
mov edx, dword [ebp - 4]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
shr eax, 0x18
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x10]
call fcn.004a4fd4
mov edx, dword [ebp - 4]
mov dword [edx + 0x10], eax
mov al, byte [ebp - 0x18]
xor al, byte [ebp - 0xd]
mov edx, dword [ebp - 0x14]
mov byte [ebp + edx - 0x24], al
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xa
jne 0x4b6d99
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.004b71f4
xor eax, eax
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
and eax, 0xffff
or eax, 2
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
xor eax, 1
imul dword [ebp - 0x18]
shr eax, 8
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
mov al, byte [ebp + eax - 0x24]
mov edx, dword [ebp - 4]
mov edx, dword [edx + 8]
call fcn.004a4fd4
mov edx, dword [ebp - 4]
mov dword [edx + 8], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
and eax, 0xff
mov edx, dword [ebp - 4]
add dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
imul eax, dword [eax + 0xc], 0x8088405
inc eax
mov edx, dword [ebp - 4]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
shr eax, 0x18
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x10]
call fcn.004a4fd4
mov edx, dword [ebp - 4]
mov dword [edx + 0x10], eax
mov al, byte [ebp - 0x18]
mov edx, dword [ebp - 0x14]
xor byte [ebp + edx - 0x24], al
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xa
jne 0x4b6e40
mov al, byte [ebp + 0xa]
mov byte [ebp - 0xd], al
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
and eax, 0xffff
or eax, 2
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
xor eax, 1
imul dword [ebp - 0x18]
shr eax, 8
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
mov al, byte [ebp - 0xd]
call fcn.004a4fd4
mov edx, dword [ebp - 4]
mov dword [edx + 8], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
and eax, 0xff
mov edx, dword [ebp - 4]
add dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
imul eax, dword [eax + 0xc], 0x8088405
inc eax
mov edx, dword [ebp - 4]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
shr eax, 0x18
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x10]
call fcn.004a4fd4
mov edx, dword [ebp - 4]
mov dword [edx + 0x10], eax
mov al, byte [ebp - 0x18]
xor al, byte [ebp - 0xd]
mov byte [ebp - 0x1a], al
mov al, byte [ebp + 0xb]
mov byte [ebp - 0xd], al
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
and eax, 0xffff
or eax, 2
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
xor eax, 1
imul dword [ebp - 0x18]
shr eax, 8
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
mov al, byte [ebp - 0xd]
call fcn.004a4fd4
mov edx, dword [ebp - 4]
mov dword [edx + 8], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
and eax, 0xff
mov edx, dword [ebp - 4]
add dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
imul eax, dword [eax + 0xc], 0x8088405
inc eax
mov edx, dword [ebp - 4]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
shr eax, 0x18
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x10]
call fcn.004a4fd4
mov edx, dword [ebp - 4]
mov dword [edx + 0x10], eax
mov al, byte [ebp - 0x18]
xor al, byte [ebp - 0xd]
mov byte [ebp - 0x19], al
mov eax, dword [ebp - 4]
mov byte [eax + 4], 1
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x24]
mov dword [eax], edx
mov edx, dword [ebp - 0x20]
mov dword [eax + 4], edx
mov edx, dword [ebp - 0x1c]
mov dword [eax + 8], edx
mov esp, ebp
pop ebp
ret 4