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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [0x552064]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [0x5645d8]
push ebx
push esi
mov esi, dword [0x5645d4]
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 8], edi
mov edx, dword [edi + 0xc]
mov dword [ebp - 0x14], edx
cmp edx, 1
jbe 0x44b5cb
mov eax, dword [edi + 0x10]
mov ebx, dword [eax + 4]
mov eax, ebx
and eax, 0xf
sub eax, 0
je 0x44b5be
sub eax, 1
je 0x44b59f
cmp edx, 2
jbe 0x44b5cd
mov eax, dword [edi + 0x10]
mov edx, dword [eax + 8]
test edx, edx
je 0x44b5cd
mov eax, ecx
sub eax, esi
sar eax, 2
cmp eax, edx
jbe 0x44b5cd
mov edx, dword [esi + edx*4]
test edx, edx
je 0x44b5cd
cmp eax, edx
jbe 0x44b5cd
mov edx, dword [esi + edx*4]
jmp 0x44b5cf
cmp edx, 2
jbe 0x44b5cd
mov eax, dword [edi + 0x10]
mov edx, dword [eax + 8]
test edx, edx
je 0x44b5cd
mov eax, ecx
sub eax, esi
sar eax, 2
cmp eax, edx
jbe 0x44b5cd
mov edx, dword [esi + edx*4]
jmp 0x44b5cf
cmp edx, 2
jbe 0x44b5cd
mov eax, dword [edi + 0x10]
mov edx, dword [eax + 8]
jmp 0x44b5cf
xor ebx, ebx
xor edx, edx
mov eax, dword [edi + 0xc]
mov dword [ebp - 0xc], edx
movzx edx, bl
shr edx, 4
mov dword [ebp - 0x10], eax
sub edx, 0
je 0x44b63e
sub edx, 1
je 0x44b615
cmp eax, 3
jbe 0x44b637
mov eax, dword [edi + 0x10]
mov edx, dword [eax + 0xc]
test edx, edx
je 0x44b637
mov eax, ecx
sub eax, esi
sar eax, 2
cmp eax, edx
jbe 0x44b637
mov edi, dword [esi + edx*4]
test edi, edi
je 0x44b637
cmp eax, edi
jbe 0x44b637
mov edi, dword [esi + edi*4]
mov eax, dword [ebp - 0x10]
jmp 0x44b650
cmp eax, 3
jbe 0x44b637
mov eax, dword [edi + 0x10]
mov edi, dword [eax + 0xc]
test edi, edi
je 0x44b637
mov eax, ecx
sub eax, esi
sar eax, 2
cmp eax, edi
jbe 0x44b637
mov edi, dword [esi + edi*4]
mov eax, dword [ebp - 0x10]
jmp 0x44b650
mov eax, dword [ebp - 0x10]
xor edi, edi
jmp 0x44b650
cmp eax, 3
jbe 0x44b64e
mov eax, dword [edi + 0x10]
mov edi, dword [eax + 0xc]
mov eax, dword [ebp - 0x10]
jmp 0x44b650
xor edi, edi
shr ebx, 8
and ebx, 0xf
sub ebx, 0
je 0x44b6af
sub ebx, 1
je 0x44b68d
cmp eax, 4
jbe 0x44b6bf
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 0x10]
test edx, edx
je 0x44b6bf
mov eax, ecx
sub eax, esi
sar eax, 2
cmp eax, edx
jbe 0x44b6bf
mov ebx, dword [esi + edx*4]
test ebx, ebx
je 0x44b6bf
cmp eax, ebx
jbe 0x44b6bf
mov ebx, dword [esi + ebx*4]
jmp 0x44b6c1
cmp eax, 4
jbe 0x44b6bf
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x10]
mov ebx, dword [eax + 0x10]
test ebx, ebx
je 0x44b6bf
mov eax, ecx
sub eax, esi
sar eax, 2
cmp eax, ebx
jbe 0x44b6bf
mov ebx, dword [esi + ebx*4]
jmp 0x44b6c1
cmp eax, 4
jbe 0x44b6bf
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x10]
mov ebx, dword [eax + 0x10]
jmp 0x44b6c1
xor ebx, ebx
mov edx, dword [ebp - 0xc]
test edx, edx
jle case.default.0x44b6f9
test edi, edi
jle case.default.0x44b6f9
cmp dword [ebp - 0x14], 0
jbe case.0x44b6f9.0
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x10]
mov eax, dword [eax]
mov dword [ebp - 8], eax
cmp eax, 0x12
ja case.default.0x44b6f9
movzx eax, byte [eax + 0x44bbd8]
jmp dword [eax*4 + 0x44bbb4]
test ebx, ebx
jle case.default.0x44b6f9
cmp ebx, edx
mov eax, edx
cmovge eax, ebx
sub ecx, esi
inc eax
sar ecx, 2
add eax, edi
cmp ecx, eax
ja 0x44b72f
push eax
mov ecx, 0x5645d4
call fcn.004519a0
mov esi, dword [0x5645d4]
mov edx, dword [ebp - 0xc]
shl edx, 2
shl ebx, 2
mov ecx, dword [edx + esi]
lea edx, [edx + 4]
mov eax, dword [ebx + esi]
lea ebx, [ebx + 4]
mov dword [edx + esi - 4], eax
mov dword [ebx + esi - 4], ecx
sub edi, 1
je 0x44b756
mov esi, dword [0x5645d4]
jmp 0x44b735
mov eax, dword [0x5603c4]
xor esi, esi
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ebx, dword [eax + 8]
test edi, edi
jle case.default.0x44b6f9
nop dword [eax]
mov ecx, dword [ebx + esi*4]
call fcn.00459340
inc esi
cmp esi, edi
jl 0x44b770
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004e66f2
mov esp, ebp
pop ebp
ret
sub ecx, esi
lea eax, [edx + 1]
add eax, edi
sar ecx, 2
cmp ecx, eax
ja 0x44b7b0
push eax
mov ecx, 0x5645d4
call fcn.004519a0
mov esi, dword [0x5645d4]
mov edx, dword [ebp - 0xc]
mov byte [ebp - 0x14], 0
lea ecx, [esi + edx*4]
push dword [ebp - 0x14]
lea edx, [ecx + edi*4]
push edi
call fcn.00451d50
mov eax, dword [0x5603c4]
add esp, 8
xor esi, esi
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ebx, dword [eax + 8]
test edi, edi
jle case.default.0x44b6f9
nop dword [eax]
mov ecx, dword [ebx + esi*4]
call fcn.00459340
inc esi
cmp esi, edi
jl 0x44b7e0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004e66f2
mov esp, ebp
pop ebp
ret
sub ecx, esi
lea eax, [edx + 1]
add eax, edi
sar ecx, 2
cmp ecx, eax
ja 0x44b820
push eax
mov ecx, 0x5645d4
call fcn.004519a0
mov esi, dword [0x5645d4]
mov edx, dword [ebp - 0xc]
push dword [ebp - 0x14]
lea ecx, [esi + edx*4]
lea edx, [ecx + edi*4]
push edi
call fcn.00451bd0
mov eax, dword [0x5603c4]
add esp, 8
xor esi, esi
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ebx, dword [eax + 8]
test edi, edi
jle case.default.0x44b6f9
nop dword [eax]
mov ecx, dword [ebx + esi*4]
call fcn.00459340
inc esi
cmp esi, edi
jl 0x44b850
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004e66f2
mov esp, ebp
pop ebp
ret
sub ecx, esi
lea eax, [edi + edx]
sar ecx, 2
cmp ecx, eax
ja 0x44b88f
inc eax
mov ecx, 0x5645d4
push eax
call fcn.004519a0
mov esi, dword [0x5645d4]
mov edx, dword [ebp - 0xc]
dec edi
lea eax, [esi + edx*4]
mov dword [ebp - 8], eax
test edi, edi
jle 0x44b8da
mov ebx, dword [0x563db0]
lea esi, [edi - 1]
lea esi, [eax + esi*4]
nop word [eax + eax]
mov ecx, dword [esi]
lea esi, [esi - 4]
imul ebx, ebx, 0x8088405
mov eax, edi
dec edi
inc ebx
mul ebx
mov eax, dword [ebp - 8]
mov eax, dword [eax + edx*4]
mov dword [esi + 4], eax
mov eax, dword [ebp - 8]
mov dword [eax + edx*4], ecx
test edi, edi
jg 0x44b8b0
mov dword [0x563db0], ebx
mov eax, dword [0x5603c4]
xor esi, esi
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ebx, dword [eax + 8]
test edi, edi
jle case.default.0x44b6f9
mov ecx, dword [ebx + esi*4]
call fcn.00459340
inc esi
cmp esi, edi
jl 0x44b8f1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004e66f2
mov esp, ebp
pop ebp
ret
sub ecx, esi
lea eax, [edi + edx]
sar ecx, 2
cmp ecx, eax
ja 0x44b934
inc eax
mov ecx, 0x5645d4
push eax
call fcn.004519a0
mov eax, dword [0x5645d4]
mov edx, dword [ebp - 0xc]
lea ecx, [eax + edx*4]
jmp 0x44b937
lea ecx, [esi + edx*4]
xor eax, eax
nop dword [eax]
mov dword [ecx + eax*4], ebx
inc eax
inc ebx
cmp eax, edi
jl 0x44b940
mov eax, dword [0x5603c4]
xor esi, esi
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ebx, dword [eax + 8]
test edi, edi
jle case.default.0x44b6f9
mov ecx, dword [ebx + esi*4]
call fcn.00459340
inc esi
cmp esi, edi
jl 0x44b960
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004e66f2
mov esp, ebp
pop ebp
ret
test ebx, ebx
jle case.default.0x44b6f9
cmp edx, ebx
mov eax, ebx
cmovge eax, edx
sub ecx, esi
inc eax
sar ecx, 2
add eax, edi
cmp ecx, eax
ja 0x44b9ad
push eax
mov ecx, 0x5645d4
call fcn.004519a0
mov esi, dword [0x5645d4]
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
lea ecx, [edx*4]
add eax, 0xfffffffb
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], eax
shl ebx, 2
mov edx, dword [ecx + esi]
mov ecx, eax
push dword [ebx + esi]
call fcn.004440e0
mov ecx, dword [ebp - 8]
lea ebx, [ebx + 4]
add esp, 4
mov dword [ecx + esi], eax
add ecx, 4
mov dword [ebp - 8], ecx
sub edi, 1
je 0x44b9f2
mov esi, dword [0x5645d4]
mov eax, dword [ebp - 0x10]
jmp 0x44b9c3
mov eax, dword [0x5603c4]
xor esi, esi
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ebx, dword [eax + 8]
test edi, edi
jle case.default.0x44b6f9
nop dword [eax]
mov ecx, dword [ebx + esi*4]
call fcn.00459340
inc esi
cmp esi, edi
jl 0x44ba10
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004e66f2
mov esp, ebp
pop ebp
ret
test ebx, ebx
jle case.default.0x44b6f9
cmp edx, ebx
mov eax, ebx
cmovge eax, edx
inc eax
add eax, edi
mov dword [ebp - 8], eax
mov eax, ecx
sub eax, esi
sar eax, 2
cmp eax, dword [ebp - 8]
ja 0x44ba6b
push dword [ebp - 8]
mov ecx, 0x5645d4
call fcn.004519a0
mov esi, dword [0x5645d4]
mov edx, dword [ebp - 0xc]
mov ecx, dword [0x5645d8]
lea eax, [esi + ebx*4]
lea edx, [esi + edx*4]
sub edx, eax
mov dword [ebp - 0x14], edx
mov edx, dword [edx + eax]
test edx, edx
je 0x44ba8b
sub ecx, esi
sar ecx, 2
cmp ecx, edx
jbe 0x44ba8b
mov ecx, dword [esi + edx*4]
jmp 0x44ba8d
xor ecx, ecx
mov dword [eax], ecx
add eax, 4
sub edi, 1
je case.default.0x44b6f9
mov ecx, dword [0x5645d8]
mov esi, dword [0x5645d4]
mov edx, dword [ebp - 0x14]
jmp 0x44ba76
test ebx, ebx
jle case.default.0x44b6f9
cmp edx, ebx
mov eax, ebx
cmovge eax, edx
sub ecx, esi
inc eax
sar ecx, 2
add eax, edi
cmp ecx, eax
ja 0x44badb
push eax
mov ecx, 0x5645d4
call fcn.004519a0
mov esi, dword [0x5645d4]
mov edx, dword [ebp - 0xc]
add edi, 0xffffffff
lea eax, [esi + ebx*4]
lea esi, [esi + edx*4]
js 0x44bb02
cmp dword [ebp - 8], 0x11
mov edx, eax
push edi
mov ecx, esi
push 0
jne 0x44bafa
call fcn.0044b3f0
jmp 0x44baff
call fcn.0044b490
add esp, 8
mov eax, dword [0x5603c4]
xor esi, esi
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ebx, dword [eax + 8]
test edi, edi
jle case.default.0x44b6f9
nop dword [eax]
mov ecx, dword [ebx + esi*4]
call fcn.00459340
inc esi
cmp esi, edi
jl 0x44bb20
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004e66f2
mov esp, ebp
pop ebp
ret
cmp edx, ebx
mov eax, ebx
cmovge eax, edx
sub ecx, esi
inc eax
sar ecx, 2
add eax, edi
cmp ecx, eax
ja 0x44bb65
push eax
mov ecx, 0x5645d4
call fcn.004519a0
mov esi, dword [0x5645d4]
mov edx, dword [ebp - 0xc]
test ebx, ebx
jle case.default.0x44b6f9
lea eax, [edi*4]
push eax
lea eax, [esi + edx*4]
push eax
lea eax, [esi + ebx*4]
push eax
call fcn.004fd9e0
mov eax, dword [0x5603c4]
add esp, 0xc
xor esi, esi
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ebx, dword [eax + 8]
test edi, edi
jle case.default.0x44b6f9
mov ecx, dword [ebx + esi*4]
call fcn.00459340
inc esi
cmp esi, edi
jl 0x44bb94
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004e66f2
mov esp, ebp
pop ebp
ret