Function at 0x1006ef90
Capabilities:
Generate random numbers using the delphi lcg
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
mov esi, dword [ebp + 0x10]
mov ebx, edx
push edi
mov dword [ebp - 4], ebx
mov dword [ebp - 8], ecx
cmp dword [esi + 0x126a8], 0
jne 0x1006f1e9
cmp dword [esi + 0x84a0], 0
je 0x1006f1e9
mov eax, dword [esi + 0x126b0]
mov edi, ecx
sub eax, 2
je 0x1006f1a7
sub eax, 6
je 0x1006f07e
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0xc], eax
or eax, edx
mov dword [ebp + 0x10], edx
je 0x1006f068
mov ebx, dword [ebp - 0xc]
nop
mov ax, word [esi + 0x50]
lea edi, [edi + 1]
mov ecx, dword [esi + 0x48]
or ax, 2
movzx edx, ax
movsx eax, byte [edi - 1]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x100b0990]
movzx eax, cl
add eax, dword [esi + 0x4c]
imul eax, eax, 0x8088405
mov dword [esi + 0x48], ecx
mov ecx, dword [esi + 0x50]
inc eax
mov dword [esi + 0x4c], eax
shr eax, 0x18
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x100b0990]
mov eax, edx
xor eax, 1
mov dword [esi + 0x50], ecx
mov ecx, dword [ebp + 0x10]
imul eax, edx
shr eax, 8
xor byte [edi - 1], al
add ebx, 0xffffffff
mov eax, ebx
adc ecx, 0xffffffff
or eax, ecx
mov dword [ebp + 0x10], ecx
jne 0x1006eff0
mov ecx, dword [ebp - 8]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp + 0xc]
push esi
push edx
push dword [ebp + 8]
mov edx, ebx
call fcn.1006f200
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0x14b10], 0
je 0x1006f19c
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov ebx, eax
mov dword [ebp - 8], ecx
test ecx, ecx
jl 0x1006f12f
jg 0x1006f0b0
test eax, eax
je 0x1006f12f
jmp 0x1006f0b0
mov edx, dword [esi + 0x14b0c]
cmp edx, 0x2000
jae 0x1006f0de
mov ecx, dword [esi + 0x14b10]
mov al, byte [edi]
inc edi
mov byte [edx + ecx], al
inc dword [esi + 0x14b0c]
add ebx, 0xffffffff
mov eax, dword [ebp - 8]
adc eax, 0xffffffff
mov dword [ebp - 8], eax
jmp 0x1006f125
push esi
lea eax, [ebp + 0x10]
mov dword [ebp + 0x10], edx
push eax
push ecx
mov ecx, dword [esi + 0x14b10]
xor edx, edx
call fcn.100738b0
add esp, 0xc
test eax, eax
je 0x1006f101
mov dword [esi], 0x16
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 0x14b10]
push esi
push 0
push dword [ebp + 0x10]
call fcn.1006f200
mov eax, dword [ebp - 8]
add esp, 0xc
mov dword [esi + 0x14b0c], 0
test eax, eax
jg 0x1006f0b0
jl 0x1006f12f
test ebx, ebx
jne 0x1006f0b0
cmp dword [esi + 0x14b14], 0
je 0x1006f18f
mov eax, dword [esi + 0x14b0c]
mov edx, 1
mov dword [ebp + 0x10], eax
lea eax, [ebp + 0x10]
push esi
push eax
push ecx
mov ecx, dword [esi + 0x14b10]
call fcn.100738b0
add esp, 0xc
test eax, eax
je 0x1006f164
mov dword [esi], 0x16
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 0x14b10]
push esi
push 0
push dword [ebp + 0x10]
call fcn.1006f200
add esp, 0xc
mov dword [esi + 0x14b0c], 0
mov dword [esi + 0x14b14], 0
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
xor edx, edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 8]
lea edi, [esi + 0x148ec]
push edi
mov edx, ebx
call fcn.10073260
mov ecx, dword [ebp - 8]
lea eax, [edi + 0x12c]
add esp, 4
mov edx, ebx
push eax
call fcn.1004d0e0
mov edx, dword [ebp - 4]
add esp, 4
mov ecx, dword [ebp - 8]
push esi
push dword [ebp + 0xc]
push ebx
call fcn.1006f200
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.1006f200
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret