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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x158
movaps xmmword [rsp + 0x140], xmm6
mov r15, r8
mov r14, rdx
mov rbx, rcx
mov rcx, qword [rcx]
add rcx, 0xfffffffffffffffd
cmp rcx, 2
mov eax, 2
cmovb rax, rcx
test rax, rax
je 0x140024920
cmp rax, 1
jne 0x14002494d
lea rcx, [rbx + 8]
mov rdx, r14
mov r8, r15
call fcn.140024653
mov r12, rax
mov rbp, rdx
test rax, rax
jne 0x1400251e8
mov edx, dword [rbx + 0x28]
mov r11d, dword [rbx + 0x20]
mov ecx, dword [rbx + 0x24]
xor eax, eax
lea r8, [0x1414ec88c]
mov r9d, 0xff
cmp rbp, rax
je 0x1400251e8
cmp r15, rax
je 0x1400251e8
mov esi, edx
or esi, 3
mov r10d, esi
and r10d, 0xfffffffe
imul r10d, esi
shr r10d, 8
xor r10b, byte [r14 + rax]
mov esi, r11d
shr esi, 8
xor r11b, r10b
movzx r11d, r11b
xor esi, dword [r8 + r11*4]
mov dword [rbx + 0x20], esi
mov r11d, esi
and esi, r9d
add esi, ecx
imul ecx, esi, 0x8088405
inc ecx
mov dword [rbx + 0x24], ecx
mov esi, ecx
shr esi, 0x18
mov edi, edx
shr edi, 8
and edx, r9d
xor edx, esi
xor edi, dword [r8 + rdx*4]
mov dword [rbx + 0x28], edi
mov byte [r14 + rax], r10b
inc rax
mov edx, edi
jmp 0x1400248ae
add rbx, 8
mov rcx, rbx
mov rdx, r14
mov r8, r15
movaps xmm6, xmmword [rsp + 0x140]
add rsp, 0x158
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.140024653
mov r8, qword [rbx + 0x28]
test r8, r8
je 0x1400249e4
cmp r8, r15
cmovae r8, r15
lea rsi, [rbx + 0x10]
mov rcx, rsi
mov rdx, r14
call fcn.140024653
mov rbp, rdx
mov r12d, 1
test rax, rax
jne 0x1400251e8
mov qword [rsp + 0xa0], rsi
sub qword [rbx + 0x28], rbp
cmp rbp, r15
ja 0x14002520a
lea rax, [rbx + 0x30]
mov qword [rsp + 0x50], rax
lea rdi, [rbx + 0x90]
movzx r13d, byte [rbx + 0xd0]
mov r8d, 0x40
sub r8, r13
cmp r8, rbp
mov qword [rsp + 0x98], rdi
mov qword [rsp + 0x90], rax
jbe 0x1400249ee
lea rcx, [rdi + r13]
mov rdx, r14
mov r8, rbp
call sub.msvcrt.dll_memcpy
mov rsi, rbp
add rsi, r13
jmp 0x140024a5e
xor ebp, ebp
xor r12d, r12d
jmp 0x1400251e8
test r13, r13
je 0x140024a20
lea r12, [r14 + r8]
mov r15, rbp
sub r15, r8
add r13, rdi
mov rcx, r13
mov rdx, r14
call sub.msvcrt.dll_memcpy
lea rcx, [rsp + 0x50]
mov r8d, 1
mov rdx, rdi
call fcn.140027dbc
jmp 0x140024a26
mov r15, rbp
mov r12, r14
mov r13, r15
and r13, 0xffffffffffffffc0
mov esi, r15d
and esi, 0x3f
add r13, r12
cmp r15, 0x40
jb 0x140024a50
shr r15, 6
lea rcx, [rsp + 0x50]
mov rdx, r12
mov r8, r15
call fcn.140027dbc
mov rcx, rdi
mov rdx, r13
mov r8, rsi
call sub.msvcrt.dll_memcpy
mov byte [rbx + 0xd0], sil
mov rax, qword [rbx]
mov rdi, qword [rbx + 8]
cmp rax, 2
mov qword [rsp + 0x48], rbp
je 0x140024c6c
cmp eax, 1
jne 0x140024e5f
lea r15, [rdi + 0x350]
lea rax, [rdi + 0x300]
mov qword [rsp + 0x30], rax
xorps xmm6, xmm6
lea r13, [rsp + 0x50]
mov qword [rsp + 0x38], r15
test rbp, rbp
je 0x140025052
mov r8, qword [rdi + 0x360]
cmp r8, 0x10
jne 0x140024c24
mov rax, qword [rdi + 0x340]
mov r12, qword [rdi + 0x348]
mov qword [rdi + 0x358], r12
mov qword [rsp + 0x40], rax
mov qword [rdi + 0x350], rax
lea rsi, [rsp + 0xa8]
mov rcx, rsi
call fcn.14000b97f
mov rcx, rsi
mov rdx, r15
call fcn.1400242ce
movaps xmmword [rsp + 0x80], xmm6
movaps xmmword [rsp + 0x70], xmm6
movaps xmmword [rsp + 0x60], xmm6
movaps xmmword [rsp + 0x50], xmm6
lea rax, [rsp + 0xd8]
mov qword [rsp + 0x20], rax
mov rcx, r13
mov rdx, rsi
lea r8, [rsp + 0xb8]
lea r9, [rsp + 0xc8]
call fcn.14000b9c8
xor r15d, r15d
lea rdx, [rdi + r15]
mov rcx, r13
call fcn.14000beef
mov rcx, r13
call fcn.14000bbb5
mov rcx, r13
call fcn.14000c2d2
lea rdx, [rdi + r15]
add rdx, 0x40
mov rcx, r13
call fcn.14000beef
mov rcx, r13
call fcn.14000bbb5
mov rcx, r13
call fcn.14000c561
lea rdx, [rdi + r15]
add rdx, 0x80
mov rcx, r13
call fcn.14000beef
mov rcx, r13
call fcn.14000bbb5
mov rcx, r13
call fcn.14000c73f
lea rdx, [rdi + r15]
add rdx, 0xc0
mov rcx, r13
call fcn.14000beef
mov rcx, r13
call fcn.14000bbb5
mov rcx, r13
cmp r15, 0x200
je 0x140024bd3
call fcn.14000c9ce
add r15, 0x100
jmp 0x140024b3c
mov rdx, qword [rsp + 0x30]
call fcn.14000beef
lea rcx, [rsp + 0xec]
mov rdx, r13
call fcn.14000bf05
movups xmm0, xmmword [rsp + 0xec]
mov r15, qword [rsp + 0x38]
movups xmmword [r15], xmm0
mov rax, qword [rsp + 0x40]
add rax, 1
adc r12, 0
mov qword [rdi + 0x348], r12
mov qword [rdi + 0x340], rax
and qword [rdi + 0x360], 0
xor r8d, r8d
mov esi, 0x10
sub rsi, r8
cmp rbp, rsi
cmovb rsi, rbp
mov rax, rsi
add rax, r8
jb 0x14002520a
cmp rax, 0x10
ja 0x14002520a
add r8, r15
mov rcx, r14
mov rdx, rsi
mov r9, rsi
call fcn.140027da0
sub rbp, rsi
add r14, rsi
add qword [rdi + 0x360], rsi
jmp 0x140024aa4
lea r15, [rdi + 0x3d0]
lea rax, [rdi + 0x380]
mov qword [rsp + 0x30], rax
xorps xmm6, xmm6
lea r12, [rsp + 0x50]
mov r13, rbp
mov qword [rsp + 0x38], r15
test r13, r13
je 0x140025052
mov r8, qword [rdi + 0x3e0]
cmp r8, 0x10
jne 0x140024e17
mov rax, qword [rdi + 0x3c0]
mov rbp, qword [rdi + 0x3c8]
mov qword [rdi + 0x3d8], rbp
mov qword [rsp + 0x40], rax
mov qword [rdi + 0x3d0], rax
lea rsi, [rsp + 0xa8]
mov rcx, rsi
call fcn.14000b97f
mov rcx, rsi
mov rdx, r15
call fcn.1400242ce
movaps xmmword [rsp + 0x80], xmm6
movaps xmmword [rsp + 0x70], xmm6
movaps xmmword [rsp + 0x60], xmm6
movaps xmmword [rsp + 0x50], xmm6
lea rax, [rsp + 0xd8]
mov qword [rsp + 0x20], rax
mov rcx, r12
mov rdx, rsi
lea r8, [rsp + 0xb8]
lea r9, [rsp + 0xc8]
call fcn.14000b9c8
xor r15d, r15d
lea rdx, [rdi + r15]
mov rcx, r12
call fcn.14000beef
mov rcx, r12
call fcn.14000bbb5
mov rcx, r12
call fcn.14000c2d2
lea rsi, [rdi + r15]
add rsi, 0x40
mov rcx, r12
mov rdx, rsi
call fcn.14000beef
mov rcx, r12
cmp r15, 0x300
je 0x140024db6
call fcn.14000bbb5
mov rcx, r12
call fcn.14000c561
lea rdx, [rsi + 0x40]
mov rcx, r12
call fcn.14000beef
mov rcx, r12
call fcn.14000bbb5
mov rcx, r12
call fcn.14000c73f
sub rsi, 0xffffffffffffff80
mov rcx, r12
mov rdx, rsi
call fcn.14000beef
mov rcx, r12
call fcn.14000bbb5
mov rcx, r12
call fcn.14000c9ce
add r15, 0x100
jmp 0x140024d27
call fcn.14000be63
mov rcx, r12
call fcn.14000bbb5
mov rcx, r12
mov rdx, qword [rsp + 0x30]
call fcn.14000beef
lea rcx, [rsp + 0xec]
mov rdx, r12
call fcn.14000bf05
movups xmm0, xmmword [rsp + 0xec]
mov r15, qword [rsp + 0x38]
movups xmmword [r15], xmm0
mov rax, qword [rsp + 0x40]
add rax, 1
adc rbp, 0
mov qword [rdi + 0x3c8], rbp
mov qword [rdi + 0x3c0], rax
and qword [rdi + 0x3e0], 0
xor r8d, r8d
mov esi, 0x10
sub rsi, r8
cmp r13, rsi
cmovb rsi, r13
mov rax, rsi
add rax, r8
jb 0x14002520a
cmp rax, 0x10
ja 0x14002520a
add r8, r15
mov rcx, r14
mov rdx, rsi
mov r9, rsi
call fcn.140027da0
sub r13, rsi
add r14, rsi
add qword [rdi + 0x3e0], rsi
jmp 0x140024c8f
lea r15, [rdi + 0x2d0]
lea rax, [rdi + 0x280]
mov qword [rsp + 0x30], rax
xorps xmm6, xmm6
lea r12, [rsp + 0x50]
mov r13, rbp
mov qword [rsp + 0x38], r15
test r13, r13
je 0x140025052
mov r8, qword [rdi + 0x2e0]
cmp r8, 0x10
jne 0x14002500a
mov rax, qword [rdi + 0x2c0]
mov rbp, qword [rdi + 0x2c8]
mov qword [rdi + 0x2d8], rbp
mov qword [rsp + 0x40], rax
mov qword [rdi + 0x2d0], rax
lea rsi, [rsp + 0xa8]
mov rcx, rsi
call fcn.14000b97f
mov rcx, rsi
mov rdx, r15
call fcn.1400242ce
movaps xmmword [rsp + 0x80], xmm6
movaps xmmword [rsp + 0x70], xmm6
movaps xmmword [rsp + 0x60], xmm6
movaps xmmword [rsp + 0x50], xmm6
lea rax, [rsp + 0xd8]
mov qword [rsp + 0x20], rax
mov rcx, r12
mov rdx, rsi
lea r8, [rsp + 0xb8]
lea r9, [rsp + 0xc8]
call fcn.14000b9c8
xor r15d, r15d
lea rdx, [rdi + r15]
mov rcx, r12
call fcn.14000beef
mov rcx, r12
call fcn.14000bbb5
mov rcx, r12
call fcn.14000c2d2
lea rsi, [rdi + r15]
add rsi, 0x40
mov rcx, r12
mov rdx, rsi
call fcn.14000beef
mov rcx, r12
cmp r15, 0x200
je 0x140024fa9
call fcn.14000bbb5
mov rcx, r12
call fcn.14000c561
lea rdx, [rsi + 0x40]
mov rcx, r12
call fcn.14000beef
mov rcx, r12
call fcn.14000bbb5
mov rcx, r12
call fcn.14000c73f
sub rsi, 0xffffffffffffff80
mov rcx, r12
mov rdx, rsi
call fcn.14000beef
mov rcx, r12
call fcn.14000bbb5
mov rcx, r12
call fcn.14000c9ce
add r15, 0x100
jmp 0x140024f1a
call fcn.14000be63
mov rcx, r12
call fcn.14000bbb5
mov rcx, r12
mov rdx, qword [rsp + 0x30]
call fcn.14000beef
lea rcx, [rsp + 0xec]
mov rdx, r12
call fcn.14000bf05
movups xmm0, xmmword [rsp + 0xec]
mov r15, qword [rsp + 0x38]
movups xmmword [r15], xmm0
mov rax, qword [rsp + 0x40]
add rax, 1
adc rbp, 0
mov qword [rdi + 0x2c8], rbp
mov qword [rdi + 0x2c0], rax
and qword [rdi + 0x2e0], 0
xor r8d, r8d
mov esi, 0x10
sub rsi, r8
cmp r13, rsi
cmovb rsi, r13
mov rax, rsi
add rax, r8
jb 0x14002520a
cmp rax, 0x10
ja 0x14002520a
add r8, r15
mov rcx, r14
mov rdx, rsi
mov r9, rsi
call fcn.140027da0
sub r13, rsi
add r14, rsi
add qword [rdi + 0x2e0], rsi
jmp 0x140024e82
cmp qword [rbx + 0x28], 0
je 0x140025066
xor r12d, r12d
mov rbp, qword [rsp + 0x48]
jmp 0x1400251e8
cmp byte [rbx + 0xd8], 0
mov rbp, qword [rsp + 0x48]
jne 0x14002520a
lea r14, [rsp + 0xa8]
and word [r14 + 8], 0
and qword [r14], 0
mov byte [rbx + 0xd8], 1
mov r15d, 0xa
lea r12, [rsp + 0x58]
mov rdi, qword [rsp + 0x98]
test r15, r15
je 0x140025104
mov rcx, qword [rsp + 0xa0]
mov rdx, r14
mov r8, r15
call fcn.140024653
mov r13, rdx
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rdx
test rax, rax
je 0x1400250e4
mov rcx, r13
call fcn.140016adb
test al, al
je 0x1400250fb
mov rcx, r12
call fcn.14002453d
jmp 0x1400250a4
test r13, r13
je 0x1400251d8
sub r15, r13
jb 0x14002520a
add r14, r13
jmp 0x1400250a4
test r13, r13
jne 0x1400251df
lea rsi, [rsp + 0x12c]
mov rcx, rsi
call fcn.140023e23
lea r14, [rsp + 0xec]
mov rcx, r14
call fcn.140023e23
mov rcx, qword [rsp + 0x90]
mov rdx, rdi
mov r8, r14
call fcn.140027cbe
mov rdx, rdi
xor edi, edi
mov byte [rbx + 0xd0], dil
mov eax, dword [rbx + 0x68]
lea rcx, [rsp + 0x50]
mov dword [rcx + 0x18], eax
movups xmm0, xmmword [rbx + 0x58]
movups xmmword [rcx + 8], xmm0
mov rax, qword [rbx + 0x50]
mov qword [rcx], rax
mov eax, dword [r14 + 0x10]
mov dword [rdx + 0x10], eax
movups xmm0, xmmword [r14]
movups xmmword [rdx], xmm0
mov byte [rbx + 0xd0], 0x14
mov r8, rsi
call fcn.140027cbe
mov rax, qword [rbx + 0x70]
mov qword [rbx + 0x30], rax
movups xmm0, xmmword [rbx + 0x78]
movups xmmword [rbx + 0x38], xmm0
mov eax, dword [rbx + 0x88]
mov dword [rbx + 0x48], eax
mov byte [rbx + 0xd0], dil
xor eax, eax
cmp rdi, 0xa
je 0x1400251b7
mov cl, byte [rsp + rdi + 0xa8]
xor cl, byte [rsp + rdi + 0x12c]
inc rdi
or al, cl
jmp 0x14002519c
test al, al
je 0x1400249e6
lea rdx, [0x1414ec680]
mov r8d, 0x5b
mov cl, 0x15
call fcn.1400104d3
mov r13, rax
jmp 0x1400251df
lea r13, [0x1414ec348]
mov rbp, r13
mov r12d, 1
mov rax, r12
mov rdx, rbp
movaps xmm6, xmmword [rsp + 0x140]
add rsp, 0x158
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2