Function at 0x4835e0
Capabilities:
Generate random numbers using the delphi lcg

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [0x5606c4]
sub esp, 0x1c
push ebx
push esi
push edi
cmp eax, 1
jne 0x48366d
mov ecx, dword [0x563db0]
lea ebx, [eax + 9]
mov esi, 0x5606d4
mov edi, 0x140
mov eax, dword [esi - 8]
test eax, eax
jne 0x483651
imul ecx, ecx, 0x8088405
inc ecx
mov eax, ecx
mov dword [0x563db0], ecx
mul ebx
test edx, edx
jne 0x48365b
imul ecx, ecx, 0x8088405
mov dword [esi - 8], 0xc
inc ecx
mov eax, ecx
imul ecx, ecx, 0x8088405
mul edi
inc ecx
mov dword [esi - 4], edx
mov eax, ecx
mov edx, 0xa0
mov dword [0x563db0], ecx
mul edx
mov dword [esi], edx
jmp 0x48365b
dec dword [esi - 4]
dec eax
add dword [esi], 4
mov dword [esi - 8], eax
add esi, 0x30
cmp esi, 0x561994
jl 0x483606
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x48371c
mov ecx, dword [0x563db0]
mov esi, 0x5606d4
mov edi, 0x140
mov ebx, 0xa0
mov edx, eax
nop dword [eax]
mov eax, dword [esi - 8]
imul ecx, ecx, 0x8088405
inc ecx
test eax, eax
jne 0x4836d5
mov eax, ecx
mov dword [0x563db0], ecx
mov edx, 0x14
mul edx
test edx, edx
jne 0x483701
imul ecx, ecx, 0x8088405
mov dword [esi - 8], 0x1e
inc ecx
mov eax, ecx
imul ecx, ecx, 0x8088405
mul edi
inc ecx
mov eax, ecx
mov dword [esi - 4], edx
mul ebx
mov dword [esi], edx
jmp 0x4836fb
dec eax
mov dword [esi - 8], eax
mov eax, ecx
mul edx
imul ecx, ecx, 0x8088405
sub dword [esi - 4], edx
mov edx, 2
mov dword [ebp - 0x18], eax
inc ecx
mov eax, ecx
mul edx
add edx, 2
mov dword [ebp - 0x18], eax
add dword [esi], edx
mov dword [0x563db0], ecx
add esi, 0x30
mov edx, 2
cmp esi, 0x561994
jl 0x483690
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 4
jne 0x483892
mov edi, 0x56073c
lea ebx, [eax + 6]
lea esi, [eax + 0x7b]
mov eax, dword [edi - 0x10]
test eax, eax
jne 0x483834
imul ecx, dword [0x563db0], 0x8088405
inc ecx
mov eax, ecx
mov dword [0x563db0], ecx
mul ebx
mov dword [ebp - 0x18], eax
test edx, edx
jne 0x483883
imul ecx, ecx, 0x8088405
sub esp, 8
inc ecx
mov eax, ecx
imul ecx, ecx, 0x8088405
mul esi
inc ecx
mov dword [ebp - 0x18], eax
inc edx
movzx eax, dl
movsd xmm1, qword [eax*8 + 0x55f1c8]
mov eax, ecx
mul esi
movsd qword [ebp - 0x18], xmm1
mov dword [ebp - 0x10], eax
inc edx
movzx eax, dl
movsd xmm0, qword [eax*8 + 0x55f9c8]
imul eax, ecx, 0x8088405
mov ecx, 0x50
movsd qword [ebp - 8], xmm0
mov dword [edi - 0x10], ecx
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x10], eax
lea esi, [edx + 0x10]
movd xmm0, esi
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
addsd xmm0, xmm0
movsd qword [esp], xmm0
call fcn.0050322a
movd xmm0, esi
fstp qword [ebp - 0x10]
cvttsd2si eax, qword [ebp - 0x10]
cvtdq2pd xmm0, xmm0
add eax, 0xa0
mov dword [edi - 0xc], eax
mulsd xmm0, qword [ebp - 8]
movsd qword [esp], xmm0
call fcn.0050322a
add esp, 8
call fcn.00521050
movsd xmm1, qword [ebp - 0x18]
xorps xmm0, xmm0
movups xmmword [edi], xmm0
mov esi, 0x7f
mov dword [edi - 8], eax
movsd xmm0, qword [ebp - 8]
unpcklpd xmm1, xmm0
mulpd xmm1, xmmword [0x545910]
mov dword [edi - 4], 0xb4
movups xmmword [edi + 0x10], xmm1
jmp 0x483883
movups xmm0, xmmword [edi]
sub esp, 8
dec eax
movups xmm1, xmmword [edi + 0x10]
mov dword [edi - 0x10], eax
addpd xmm1, xmm0
movups xmmword [edi], xmm1
movsd xmm0, qword [edi]
movsd qword [esp], xmm0
call fcn.0050322a
movsd xmm0, qword [edi + 8]
fstp qword [ebp - 0x18]
cvttsd2si eax, qword [ebp - 0x18]
movsd qword [esp], xmm0
add dword [edi - 0xc], eax
call fcn.0050322a
fstp qword [ebp - 0x18]
cvttsd2si eax, qword [ebp - 0x18]
add esp, 8
add dword [edi - 8], eax
add dword [edi - 4], 2
add edi, 0x30
cmp edi, 0x5636ac
jl 0x483730
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret