Function at 0x10048170
Capabilities:
Generate random numbers using the delphi lcg
Get thread local storage value
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, ecx
push edi
push dword [0x100c7608]
mov dword [ebp - 8], ebx
call esi
mov dword [ebp - 0x10], eax
test eax, eax
je 0x100483fb
push dword [0x100c7608]
lea edi, [eax + 0x82b4]
call esi
test eax, eax
je 0x10048243
mov dword [eax + 0x8338], 0x12345678
mov dword [eax + 0x833c], 0x23456789
mov dword [eax + 0x8340], 0x34567890
mov al, byte [edi]
mov byte [ebp - 1], al
test al, al
je 0x10048243
push dword [0x100c7608]
call esi
mov ebx, eax
test ebx, ebx
je 0x10048235
mov edx, dword [ebx + 0x8338]
movsx ecx, byte [ebp - 1]
xor ecx, edx
shr edx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + 0x100b0570]
mov ecx, dword [ebx + 0x8340]
movzx eax, dl
add eax, dword [ebx + 0x833c]
imul eax, eax, 0x8088405
mov dword [ebx + 0x8338], edx
inc eax
mov dword [ebx + 0x833c], eax
shr eax, 0x18
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x100b0570]
mov dword [ebx + 0x8340], ecx
mov al, byte [edi + 1]
inc edi
mov byte [ebp - 1], al
test al, al
jne 0x100481d4
mov ebx, dword [ebp - 8]
xor edi, edi
push dword [0x100c7608]
call esi
test eax, eax
je 0x1004826d
mov ax, word [eax + 0x8340]
or ax, 2
movzx eax, ax
mov ecx, eax
xor ecx, 1
imul ecx, eax
movzx eax, cx
shr eax, 8
movzx ebx, byte [edi + ebx]
push dword [0x100c7608]
xor ebx, eax
call esi
mov dword [ebp - 0xc], eax
test eax, eax
je 0x100482d6
mov edx, dword [eax + 0x8338]
mov ecx, edx
xor ecx, ebx
shr edx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + 0x100b0570]
mov dword [eax + 0x8338], edx
movzx eax, dl
mov edx, dword [ebp - 0xc]
add eax, dword [edx + 0x833c]
mov ecx, dword [edx + 0x8340]
imul eax, eax, 0x8088405
inc eax
mov dword [edx + 0x833c], eax
shr eax, 0x18
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x100b0570]
mov dword [edx + 0x8340], ecx
inc edi
movzx edx, bx
mov ebx, dword [ebp - 8]
cmp edi, 0xc
jl 0x10048245
mov ecx, dword [ebp - 0x10]
mov di, word [ecx + 0x715e]
and di, 8
je 0x100482ff
movzx ebx, byte [ecx + 0x7163]
jmp 0x10048306
movzx ebx, byte [ecx + 0x823b]
cmp edx, ebx
je 0x10048323
test di, di
je 0x100483fb
movzx eax, byte [ecx + 0x8235]
cmp dx, ax
jne 0x100483fb
mov edx, dword [ecx + 0x18370]
xor edi, edi
mov eax, dword [ecx + 0x7128]
cmp edi, dword [ecx + 0x712c]
jl 0x1004833f
jg 0x10048341
cmp edx, eax
ja 0x10048341
mov eax, edx
mov edi, dword [ecx + 0x1836c]
test eax, eax
je 0x100483f2
nop
push dword [0x100c7608]
dec eax
mov dword [ebp - 0xc], eax
call esi
test eax, eax
je 0x1004837c
mov ax, word [eax + 0x8340]
or ax, 2
movzx eax, ax
mov ecx, eax
xor ecx, 1
imul ecx, eax
movzx eax, cx
shr eax, 8
movzx ebx, byte [edi]
push dword [0x100c7608]
xor ebx, eax
call esi
mov dword [ebp - 0x10], eax
test eax, eax
je 0x100483e4
mov edx, dword [eax + 0x8338]
mov ecx, edx
xor ecx, ebx
shr edx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + 0x100b0570]
mov dword [eax + 0x8338], edx
movzx eax, dl
mov edx, dword [ebp - 0x10]
add eax, dword [edx + 0x833c]
mov ecx, dword [edx + 0x8340]
imul eax, eax, 0x8088405
inc eax
mov dword [edx + 0x833c], eax
shr eax, 0x18
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x100b0570]
mov dword [edx + 0x8340], ecx
mov eax, dword [ebp - 0xc]
mov byte [edi], bl
inc edi
test eax, eax
jne 0x10048350
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret