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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov eax, dword [0x582e50]
mov esi, dword [ebp + 8]
mov ebx, 0xffffff9a
xor eax, ebp
test esi, esi
mov dword [ebp - 0x10], eax
je 0x4ce545
mov eax, dword [esi + 0x60]
or eax, dword [esi + 0x64]
je 0x4ce545
cmp dword [esi + 0xe0], 0
je 0x4ce02e
push esi
call fcn.004cd81f
add esp, 4
mov ecx, dword [esi + 0x48]
mov eax, dword [esi + 0x4c]
add ecx, dword [esi + 0xd8]
adc eax, dword [esi + 0xdc]
push 0
push eax
push ecx
push dword [esi + 0x30]
push esi
call fcn.004da826
add esp, 0x14
test eax, eax
je 0x4ce077
xor edx, edx
mov edi, 0x1e
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x38], 0
xor eax, eax
jmp 0x4ce234
mov edx, dword [esi + 0x30]
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
call fcn.004ce95b
add esp, 4
xor edi, edi
dec edi
test eax, eax
jne 0x4ce0a0
xor eax, eax
cmp dword [ebp - 0x1c], 0x4034b50
mov edi, 0xffffff99
cmove edi, eax
mov edx, dword [esi + 0x30]
lea eax, [ebp - 0x20]
mov ecx, esi
push eax
call fcn.004ced0b
add esp, 4
mov edx, dword [esi + 0x30]
mov ebx, eax
lea eax, [ebp - 0x24]
mov ecx, esi
push eax
call fcn.004ced0b
add esp, 4
mov edx, dword [esi + 0x30]
or eax, ebx
mov ebx, 0xffffffff
lea eax, [ebp - 0x20]
mov ecx, esi
cmovne edi, ebx
push eax
call fcn.004ced0b
add esp, 4
test eax, eax
mov edx, ebx
mov dword [ebp - 0x34], ebx
jne 0x4ce11c
test edi, edi
mov edx, edi
jne 0x4ce11c
mov eax, dword [ebp - 0x20]
mov edx, 0xffffff99
mov ecx, esi
cmp eax, dword [esi + 0x8c]
jne 0x4ce11a
cmp eax, 0xc
mov esi, ecx
ja 0x4ce113
mov ecx, 0x1101
xor edx, edx
bt ecx, eax
jb 0x4ce11c
mov edx, 0xffffff99
jmp 0x4ce11c
mov esi, ecx
mov dword [ebp - 0x30], edx
mov edx, dword [esi + 0x30]
lea eax, [ebp - 0x20]
mov ecx, esi
mov ebx, eax
push eax
call fcn.004ce95b
add esp, 4
mov edx, dword [esi + 0x30]
xor edi, edi
cmp eax, 1
mov ecx, esi
sbb edi, edi
push ebx
call fcn.004ce95b
add esp, 4
test eax, eax
mov ebx, 0xffffffff
jne 0x4ce174
not edi
or edi, dword [ebp - 0x30]
mov ebx, edi
jne 0x4ce174
mov eax, dword [ebp - 0x20]
xor ebx, ebx
cmp eax, dword [esi + 0x94]
je 0x4ce174
xor eax, eax
test byte [ebp - 0x24], 8
mov ebx, 0xffffff99
cmovne ebx, eax
mov edx, dword [esi + 0x30]
mov ecx, esi
lea eax, [ebp - 0x20]
push eax
call fcn.004ce95b
add esp, 4
mov edi, 0xffffffff
test eax, eax
mov ecx, edi
je 0x4ce2e7
mov edx, dword [esi + 0x30]
lea eax, [ebp - 0x20]
mov dword [ebp - 0x30], ecx
mov ecx, esi
push eax
call fcn.004ce95b
add esp, 4
test eax, eax
mov ebx, esi
je 0x4ce324
mov edx, dword [ebx + 0x30]
lea eax, [ebp - 0x28]
mov ecx, ebx
push eax
call fcn.004ced0b
add esp, 4
test eax, eax
jne 0x4ce1e4
test edi, edi
mov dword [ebp - 0x34], edi
jne 0x4ce1e4
mov eax, dword [ebp - 0x28]
xor ecx, ecx
cmp eax, dword [ebx + 0xa8]
mov eax, 0xffffff99
cmove eax, ecx
mov dword [ebp - 0x34], eax
mov esi, dword [ebp - 0x28]
mov edx, dword [ebx + 0x30]
lea eax, [ebp - 0x2c]
mov ecx, ebx
push eax
call fcn.004ced0b
add esp, 4
mov edx, dword [ebx + 0xd8]
mov edi, dword [ebx + 0xdc]
mov ecx, 0x1e
add edx, esi
adc edi, 0
add edx, ecx
mov dword [ebp - 0x30], edx
lea edx, [ebp - 0x2c]
adc edi, 0
mov edx, dword [edx]
mov dword [ebp - 0x3c], edi
mov edi, esi
mov esi, ebx
add edi, edx
or eax, dword [ebp - 0x34]
mov dword [ebp - 0x38], edx
sete al
xor edx, edx
add edi, ecx
setb dl
mov ebx, 0xffffff99
test al, al
je 0x4ce545
mov dword [ebp - 0x34], edx
push 0xd0
call fcn.004312f0
add esp, 4
test eax, eax
je 0x4ce540
mov ebx, eax
push 0x4000
call fcn.004312f0
add esp, 4
mov ecx, dword [ebp - 0x3c]
mov dword [ebx], eax
mov edx, dword [ebp + 0x14]
mov dword [ebx + 0x54], ecx
mov ecx, dword [ebp - 0x30]
mov dword [ebx + 0x50], ecx
mov ecx, dword [ebp - 0x38]
mov dword [ebx + 0x58], ecx
xor ecx, ecx
test eax, eax
mov dword [ebx + 0x64], ecx
mov dword [ebx + 0x60], ecx
mov dword [ebx + 0xc8], edx
je 0x4ce362
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
mov dword [ebx + 0x48], ecx
test edx, edx
je 0x4ce2aa
mov ecx, dword [esi + 0x8c]
mov dword [edx], ecx
test eax, eax
je 0x4ce385
mov dword [eax], 6
mov ecx, dword [esi + 0x88]
and ecx, 6
cmp ecx, 2
je 0x4ce377
cmp ecx, 4
je 0x4ce37f
cmp ecx, 6
jne 0x4ce385
mov dword [eax], 1
jmp 0x4ce385
test ebx, ebx
jne 0x4ce370
mov eax, dword [ebp - 0x20]
mov ecx, ebx
cmp eax, 0xffffffff
je 0x4ce194
xor eax, dword [esi + 0x98]
xor ecx, ecx
or eax, dword [esi + 0x9c]
je 0x4ce194
xor eax, eax
test byte [ebp - 0x24], 8
mov ecx, 0xffffff99
cmovne ecx, eax
jmp 0x4ce194
mov edi, dword [ebp - 0x30]
test edi, edi
jne 0x4ce1b2
mov eax, dword [ebp - 0x20]
cmp eax, 0xffffffff
je 0x4ce1b2
xor eax, dword [ebx + 0xa0]
xor edi, edi
or eax, dword [ebx + 0xa4]
je 0x4ce1b2
xor eax, eax
test byte [ebp - 0x24], 8
mov edi, 0xffffff99
cmovne edi, eax
jmp 0x4ce1b2
push ebx
call fcn.00431330
add esp, 4
jmp 0x4ce540
mov ecx, ebx
jmp 0x4ce194
mov dword [eax], 9
jmp 0x4ce385
mov dword [eax], 2
mov eax, dword [esi + 0x94]
mov dword [ebp - 0x30], edi
lea edi, [ebx + 0x88]
mov dword [ebx + 0x74], eax
xor eax, eax
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x6c], eax
mov dword [ebx + 0x68], eax
mov eax, esi
mov edx, dword [esi + 0x8c]
mov dword [ebx + 0xb8], edx
mov ecx, dword [esi + 0x30]
mov dword [ebx + 0xb4], ecx
mov ecx, 0xb
rep movsd dword es:[edi], dword [esi]
mov edi, eax
mov ecx, dword [eax + 0x48]
mov esi, dword [eax + 0x4c]
xor eax, eax
mov dword [ebx + 0xc4], esi
mov dword [ebx + 0xc0], ecx
mov dword [ebx + 0x18], eax
mov eax, dword [ebp + 0x14]
test eax, eax
jne 0x4ce3f1
cmp edx, 0xc
jne 0x4ce3f1
mov dword [ebx + 0xc8], 1
jmp 0x4ce43f
test eax, eax
jne 0x4ce43f
cmp edx, 8
jne 0x4ce43f
mov eax, ebx
xor ecx, ecx
add eax, 4
mov dword [ebx + 0x24], ecx
mov dword [ebx + 0x28], ecx
mov dword [ebx + 0x2c], ecx
mov dword [ebx + 4], ecx
mov dword [ebx + 8], ecx
push 0x38
push str.1.2.11
push 0xfffffffffffffff1
push eax
call 0x405d2d
add esp, 0x10
test eax, eax
je 0x4ce438
mov esi, eax
push ebx
call fcn.00431330
add esp, 4
mov ebx, esi
jmp 0x4ce545
mov dword [ebx + 0x48], 8
movups xmm0, xmmword [edi + 0x98]
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
mov edx, dword [ebp + 0x18]
movups xmmword [ebx + 0x78], xmm0
mov dword [ebp - 0x30], edx
add eax, dword [edi + 0xd8]
adc ecx, dword [edi + 0xdc]
mov dword [ebx + 0x40], eax
xor eax, eax
test edx, edx
mov dword [ebx + 0x44], ecx
mov dword [ebx + 8], eax
mov dword [edi + 0xe0], ebx
mov dword [edi + 0xe4], eax
je 0x4ce626
call fcn.0043386c
mov ecx, dword [ebp + 0x18]
mov dword [edi + 0xf8], eax
mov dword [edi + 0xec], 0x12345678
mov dword [edi + 0xf0], 0x23456789
mov dword [edi + 0xf4], 0x34567890
mov bl, byte [ecx]
test bl, bl
je 0x4ce511
inc dword [ebp - 0x30]
mov ecx, 0x12345678
mov edi, 0x23456789
mov edx, 0x34567890
movzx esi, cl
movzx ebx, bl
shr ecx, 8
xor esi, ebx
movzx ebx, dl
shr edx, 8
xor ecx, dword [eax + esi*4]
movzx esi, cl
add esi, edi
imul edi, esi, 0x8088405
inc edi
mov esi, edi
shr esi, 0x18
xor ebx, esi
mov esi, dword [ebp + 8]
mov dword [esi + 0xec], ecx
mov dword [esi + 0xf0], edi
xor edx, dword [eax + ebx*4]
mov dword [esi + 0xf4], edx
mov esi, dword [ebp - 0x30]
mov bl, byte [esi]
inc esi
mov dword [ebp - 0x30], esi
test bl, bl
jne 0x4ce4c5
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0xe0]
mov ecx, dword [eax + 0xc0]
mov edx, dword [eax + 0xc4]
add ecx, dword [eax + 0x40]
adc edx, dword [eax + 0x44]
push 0
push edx
push ecx
push dword [edi + 0x30]
push edi
call fcn.004da826
add esp, 0x14
test eax, eax
je 0x4ce559
mov ebx, 0xffffff98
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004ed5a1
mov eax, ebx
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, 0xc
lea eax, [ebp - 0x1c]
push esi
push eax
push dword [edi + 0x30]
push dword [edi + 0x1c]
call dword [edi + 4]
add esp, 0x10
cmp eax, esi
mov ebx, 0xffffff98
jb 0x4ce545
mov eax, dword [edi + 0xf8]
mov ecx, dword [edi + 0xf4]
mov edx, dword [edi + 0xec]
mov edi, dword [edi + 0xf0]
mov esi, 0xfffffff4
mov dword [ebp - 0x30], eax
mov eax, ecx
and eax, 0xfffd
lea ebx, [eax + 2]
xor eax, 3
imul ebx, eax
xor bh, byte [ebp + esi - 0x10]
mov byte [ebp + esi - 0x10], bh
movzx eax, bh
movzx ebx, dl
shr edx, 8
xor ebx, eax
mov eax, dword [ebp - 0x30]
xor edx, dword [eax + ebx*4]
movzx ebx, cl
shr ecx, 8
movzx eax, dl
add eax, edi
imul edi, eax, 0x8088405
inc edi
mov eax, edi
shr eax, 0x18
xor ebx, eax
mov eax, dword [ebp + 8]
mov dword [eax + 0xec], edx
mov dword [eax + 0xf0], edi
mov eax, dword [ebp - 0x30]
xor ecx, dword [eax + ebx*4]
mov ebx, dword [ebp + 8]
inc esi
mov dword [ebx + 0xf4], ecx
jne 0x4ce598
mov eax, dword [ebp + 8]
mov ecx, eax
mov eax, dword [eax + 0xe0]
add dword [eax + 0x40], 0xc
adc dword [eax + 0x44], 0
mov eax, dword [ecx + 0xe0]
add dword [eax + 0x78], 0xfffffff4
adc dword [eax + 0x7c], 0xffffffff
mov dword [ecx + 0xe4], 1
xor ebx, ebx
jmp 0x4ce545