Function at 0x458c30
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 [0x4f002c]
mov esi, dword [ebp + 8]
mov ebx, 0xffffff9a
xor eax, ebp
test esi, esi
mov dword [ebp - 0x10], eax
je 0x459186
mov eax, dword [esi + 0x60]
or eax, dword [esi + 0x64]
je 0x459186
cmp dword [esi + 0xe0], 0
je 0x458c71
push esi
call fcn.0045847b
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.0047de76
add esp, 0x14
test eax, eax
je 0x458cba
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 0x458e75
mov edx, dword [esi + 0x30]
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
call fcn.0045959d
add esp, 4
xor edi, edi
dec edi
test eax, eax
jne 0x458ce3
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.0045994d
add esp, 4
mov edx, dword [esi + 0x30]
mov ebx, eax
lea eax, [ebp - 0x24]
mov ecx, esi
push eax
call fcn.0045994d
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.0045994d
add esp, 4
test eax, eax
mov edx, ebx
mov dword [ebp - 0x34], ebx
jne 0x458d5f
test edi, edi
mov edx, edi
jne 0x458d5f
mov eax, dword [ebp - 0x20]
mov edx, 0xffffff99
mov ecx, esi
cmp eax, dword [esi + 0x8c]
jne 0x458d5d
cmp eax, 0xc
mov esi, ecx
ja 0x458d56
mov ecx, 0x1101
xor edx, edx
bt ecx, eax
jb 0x458d5f
mov edx, 0xffffff99
jmp 0x458d5f
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.0045959d
add esp, 4
mov edx, dword [esi + 0x30]
cmp eax, 1
mov ecx, esi
sbb edi, edi
push ebx
call fcn.0045959d
add esp, 4
test eax, eax
mov ebx, 0xffffffff
jne 0x458db5
not edi
or edi, dword [ebp - 0x30]
mov ebx, edi
jne 0x458db5
mov eax, dword [ebp - 0x20]
xor ebx, ebx
cmp eax, dword [esi + 0x94]
je 0x458db5
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.0045959d
add esp, 4
mov edi, 0xffffffff
test eax, eax
mov ecx, edi
je 0x458f28
mov edx, dword [esi + 0x30]
lea eax, [ebp - 0x20]
mov dword [ebp - 0x30], ecx
mov ecx, esi
push eax
call fcn.0045959d
add esp, 4
test eax, eax
mov ebx, esi
je 0x458f65
mov edx, dword [ebx + 0x30]
lea eax, [ebp - 0x28]
mov ecx, ebx
push eax
call fcn.0045994d
add esp, 4
test eax, eax
jne 0x458e25
test edi, edi
mov dword [ebp - 0x34], edi
jne 0x458e25
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.0045994d
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 0x459186
mov dword [ebp - 0x34], edx
push 0xd0
call fcn.00419240
add esp, 4
test eax, eax
je 0x459181
mov ebx, eax
push 0x4000
call fcn.00419240
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 0x458fa3
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
mov dword [ebx + 0x48], ecx
test edx, edx
je 0x458eeb
mov ecx, dword [esi + 0x8c]
mov dword [edx], ecx
test eax, eax
je 0x458fc6
mov dword [eax], 6
mov ecx, dword [esi + 0x88]
and ecx, 6
cmp ecx, 2
je 0x458fb8
cmp ecx, 4
je 0x458fc0
cmp ecx, 6
jne 0x458fc6
mov dword [eax], 1
jmp 0x458fc6
test ebx, ebx
jne 0x458fb1
mov eax, dword [ebp - 0x20]
mov ecx, ebx
cmp eax, 0xffffffff
je 0x458dd5
xor eax, dword [esi + 0x98]
xor ecx, ecx
or eax, dword [esi + 0x9c]
je 0x458dd5
xor eax, eax
test byte [ebp - 0x24], 8
mov ecx, 0xffffff99
cmovne ecx, eax
jmp 0x458dd5
mov edi, dword [ebp - 0x30]
test edi, edi
jne 0x458df3
mov eax, dword [ebp - 0x20]
cmp eax, 0xffffffff
je 0x458df3
xor eax, dword [ebx + 0xa0]
xor edi, edi
or eax, dword [ebx + 0xa4]
je 0x458df3
xor eax, eax
test byte [ebp - 0x24], 8
mov edi, 0xffffff99
cmovne edi, eax
jmp 0x458df3
push ebx
call fcn.00419280
add esp, 4
jmp 0x459181
mov ecx, ebx
jmp 0x458dd5
mov dword [eax], 9
jmp 0x458fc6
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 0x459032
cmp edx, 0xc
jne 0x459032
mov dword [ebx + 0xc8], 1
jmp 0x459080
test eax, eax
jne 0x459080
cmp edx, 8
jne 0x459080
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 fcn.00408b21
add esp, 0x10
test eax, eax
je 0x459079
mov esi, eax
push ebx
call fcn.00419280
add esp, 4
mov ebx, esi
jmp 0x459186
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 0x459267
call fcn.0041cc98
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 0x459152
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 0x459106
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.0047de76
add esp, 0x14
test eax, eax
je 0x45919a
mov ebx, 0xffffff98
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0048bd44
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 0x459186
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 0x4591d9
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 0x459186