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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x428]
sub rsp, 0x500
xor r15d, r15d
mov r13d, r9d
mov rbx, r8
mov rdi, rcx
cmp dword [rcx + 0x24], r15d
je 0x14003273a
mov eax, 0x40000
jmp 0x140032d20
cmp byte [rcx + 0x40], r15b
je 0x14003274a
mov eax, 0x50000
jmp 0x140032d20
mov r12d, r15d
mov esi, dword [rbp + 0x450]
mov eax, reloc.WSOCK32.dll_ioctlsocket
cmp qword [rcx], r15
je 0x140032764
cmp esi, 4
cmovne r12d, eax
lea rcx, [rbp + 0x2f0]
call fcn.140060710
cmp byte [rbp + 0x2f0], r15b
je 0x140032d1b
lea rax, [rbp + 0x2f0]
cmp byte [rax], 0x5c
jne 0x14003278c
mov byte [rax], 0x2f
inc rax
cmp byte [rax], r15b
jne 0x140032784
mov r14d, 8
cmp esi, 4
jne 0x1400327c3
lea rcx, [rbp + 0x2f0]
call fcn.140045e50
lea rcx, [rbp + 0x2f0]
cmp byte [rax + rcx - 1], 0x2f
je 0x1400327be
mov r15b, 1
jmp 0x1400327d3
cmp esi, 4
je 0x1400327d3
lea rcx, [rbp + 0x2f0]
call fcn.1400336cc
test al, al
je 0x1400327d6
xor r14d, r14d
cmp esi, 2
jne 0x1400327e8
mov rdx, rbx
mov rcx, rdi
call fcn.140035928
jmp 0x140032823
cmp esi, 1
jne 0x1400327fd
mov r8d, r13d
mov rdx, rbx
mov rcx, rdi
call fcn.1400359f0
jmp 0x140032823
cmp esi, 3
jne 0x140032812
mov r8d, r13d
mov rdx, rbx
mov rcx, rdi
call fcn.140035b64
jmp 0x140032823
cmp esi, 4
jne 0x140032d1b
mov rcx, rdi
call fcn.14003585c
xor r13d, r13d
test eax, eax
jne 0x140032d20
lea rdx, [0x14009d600]
mov qword [rbp + 0x2e0], r13
lea rcx, [rbp - 0x58]
call fcn.140060710
lea rdx, [rbp + 0x2f0]
lea rcx, [rbp + 0xc8]
call fcn.140060710
lea rcx, [rbp + 0xc8]
call fcn.140045e50
mov qword [rsp + 0x78], rax
test r15b, r15b
je 0x140032886
lea rdx, [0x14009e790]
lea rcx, [rbp + 0xc8]
call fcn.140060670
inc qword [rsp + 0x78]
lea rdx, [0x14009d600]
lea rcx, [rbp + 0x1cc]
call fcn.140060710
mov eax, dword [rdi + 0x90]
mov dword [rsp + 0x68], eax
mov eax, 8
mov qword [rbp + 0xc0], r13
mov qword [rbp - 0x70], r13
mov dword [rbp + 0x2d0], 1
lea r8d, [rax + 1]
mov dword [rbp + 0x2d8], r13d
mov word [rbp - 0x66], r13w
mov dword [rsp + 0x60], 0x140b17
mov dword [rsp + 0x6c], r13d
mov word [rsp + 0x64], ax
cmp qword [rdi], r13
je 0x1400328f1
cmp esi, 4
je 0x1400328f1
mov eax, r8d
mov word [rsp + 0x64], ax
mov word [rbp - 0x64], ax
mov word [rsp + 0x66], r14w
test r14d, r14d
jne 0x140032913
mov eax, dword [rdi + 0x98]
test eax, eax
js 0x140032913
add eax, r12d
mov dword [rsp + 0x70], eax
jmp 0x140032918
mov dword [rsp + 0x70], r13d
mov eax, dword [rdi + 0x98]
lea rdx, [rsp + 0x20]
mov rcx, qword [rdi + 0x80]
mov dword [rsp + 0x74], eax
mov eax, dword [rdi + 0x70]
mov dword [rbp - 0x60], eax
mov eax, dword [rdi + 0x20]
add eax, dword [rdi + 0x28]
mov dword [rbp - 0x5c], eax
lea rax, [rsp + 0x20]
mov qword [rbp + 0xb0], rax
lea rax, [rsp + 0x48]
mov qword [rbp + 0xb8], rax
mov al, byte [rdi + 0x80]
mov byte [rsp + 0x25], al
mov rax, rcx
sar rax, 8
mov byte [rsp + 0x26], al
mov rax, rcx
sar rax, 0x10
mov byte [rsp + 0x27], al
mov al, byte [rdi + 0x78]
mov byte [rsp + 0x29], al
sar rcx, 0x18
mov byte [rsp + 0x28], cl
mov rcx, qword [rdi + 0x78]
mov rax, rcx
mov word [rbp - 0x68], r13w
sar rax, 8
mov byte [rsp + 0x2a], al
mov rax, rcx
sar rax, 0x10
mov byte [rsp + 0x2b], al
mov al, byte [rdi + 0x88]
sar rcx, 0x18
mov byte [rsp + 0x2d], al
mov byte [rsp + 0x2c], cl
mov rcx, qword [rdi + 0x88]
mov rax, rcx
mov qword [rbp - 0x80], setsockopt
sar rax, 8
mov byte [rsp + 0x2e], al
mov rax, rcx
sar rcx, 0x18
mov byte [rsp + 0x30], cl
lea rcx, [rsp + 0x48]
sar rax, 0x10
mov qword [rbp - 0x78], r8
mov dword [rsp + 0x20], 0xd5455
mov byte [rsp + 0x24], 7
mov byte [rsp + 0x2f], al
call fcn.14003a170
mov rax, qword [rbp + 0xb8]
lea rdx, [0x140036e00]
mov r8, rdi
lea rcx, [rsp + 0x60]
mov byte [rax + 2], 5
call fcn.1400364d4
test eax, eax
je 0x140032a32
mov rcx, rdi
call fcn.140035254
mov eax, 0x400
jmp 0x140032d20
mov ecx, dword [rsp + 0x78]
add ecx, 0x1e
add ecx, dword [rbp - 0x80]
add dword [rdi + 0x28], ecx
cmp dword [rdi + 0x24], r13d
je 0x140032a55
mov rcx, rdi
call fcn.140035254
mov eax, dword [rdi + 0x24]
jmp 0x140032d20
lea r15, [rdi + 0x44]
mov dword [rdi + 0x48], 0x23456789
mov dword [r15], 0x12345678
mov dword [rdi + 0x4c], 0x34567890
mov r8, qword [rdi]
test r8, r8
je 0x140032ad0
lea r9, [0x1400a5480]
cmp byte [r8], r13b
je 0x140032ad0
movsx rcx, byte [r8]
mov eax, dword [r15]
xor rcx, rax
movzx edx, cl
shr eax, 8
mov ecx, dword [r9 + rdx*4]
mov edx, dword [r15 + 8]
xor ecx, eax
movzx eax, cl
add eax, dword [r15 + 4]
mov dword [r15], ecx
imul ecx, eax, 0x8088405
inc ecx
mov dword [r15 + 4], ecx
movzx eax, byte [r15 + 7]
movzx ecx, dl
xor rcx, rax
shr edx, 8
mov eax, dword [r9 + rcx*4]
xor eax, edx
mov dword [r15 + 8], eax
add r8, 1
jne 0x140032a7d
cmp byte [0x1400c5328], r13b
jne 0x140032af1
call qword [sym.imp.USER32.dll_GetDesktopWindow]
mov rbx, rax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
xor ebx, eax
mov ecx, ebx
call fcn.14007a3a4
mov rbx, r13
call fcn.14007a378
sar eax, 7
mov byte [rsp + rbx + 0x38], al
inc rbx
cmp rbx, 0xc
jl 0x140032af4
mov eax, dword [rsp + 0x68]
mov rbx, r13
shr eax, 8
mov byte [rsp + 0x43], al
mov dl, byte [rsp + rbx + 0x38]
mov rcx, r15
call fcn.140036f68
mov byte [rsp + rbx + 0x38], al
inc rbx
cmp rbx, 0xc
jl 0x140032b17
cmp qword [rdi], r13
je 0x140032b51
cmp esi, 4
je 0x140032b51
mov r8d, reloc.WSOCK32.dll_ioctlsocket
lea rdx, [rsp + 0x38]
mov rcx, rdi
call fcn.140036e68
add dword [rdi + 0x28], 0xc
mov ebx, r13d
cmp qword [rdi], r13
je 0x140032b63
mov eax, 1
cmp esi, 4
jne 0x140032b66
mov eax, r13d
mov byte [rdi + 0x41], al
cmp esi, 4
je 0x140032b98
mov eax, 8
cmp r14d, eax
jne 0x140032b87
lea rdx, [rsp + 0x60]
mov rcx, rdi
call fcn.1400352bc
jmp 0x140032b94
test r14d, r14d
jne 0x140032b9f
mov rcx, rdi
call fcn.140035488
mov ebx, eax
jmp 0x140032b9f
mov dword [rdi + 0xc8], r13d
mov rcx, rdi
mov byte [rdi + 0x41], r13b
call fcn.140035254
mov ecx, dword [rdi + 0xc8]
add dword [rdi + 0x28], ecx
mov eax, dword [rdi + 0x24]
test eax, eax
jne 0x140032d20
test ebx, ebx
jne 0x140032a28
mov eax, dword [rdi + 0xa0]
add ecx, r12d
cmp dword [rsp + 0x70], ecx
mov dword [rsp + 0x6c], eax
mov eax, dword [rdi + 0x98]
sete dl
mov dword [rsp + 0x70], ecx
mov dword [rsp + 0x74], eax
cmp byte [rdi + 0x2c], r13b
je 0x140032c62
cmp qword [rdi], r13
je 0x140032bf9
cmp esi, 4
jne 0x140032c62
movzx eax, word [rsp + 0x64]
mov word [rsp + 0x66], r14w
test al, 1
jne 0x140032c15
mov ecx, 0xfff7
and ax, cx
mov word [rsp + 0x64], ax
mov edx, dword [rbp - 0x5c]
mov rcx, rdi
sub edx, dword [rdi + 0x20]
mov word [rbp - 0x64], ax
call fcn.140035c54
test al, al
jne 0x140032c35
mov eax, 0x2000000
jmp 0x140032d20
mov r8, rdi
lea rdx, [0x140036e00]
lea rcx, [rsp + 0x60]
call fcn.1400364d4
test eax, eax
jne 0x140032a28
mov edx, dword [rdi + 0x28]
mov rcx, rdi
call fcn.140035c54
test al, al
jne 0x140032ca6
jmp 0x140032c2b
cmp word [rsp + 0x66], r14w
je 0x140032c74
mov eax, 0x4000000
jmp 0x140032d20
test r14d, r14d
jne 0x140032c7d
test dl, dl
je 0x140032c6a
mov r8, rdi
lea rdx, [0x140036e00]
lea rcx, [rsp + 0x60]
call fcn.140036378
test eax, eax
jne 0x140032a28
movzx eax, word [rbp - 0x64]
add dword [rdi + 0x28], 0x10
mov word [rsp + 0x64], ax
mov eax, dword [rdi + 0x24]
test eax, eax
jne 0x140032d20
mov rcx, qword [rbp - 0x78]
call fcn.140037e70
mov r8, qword [rbp - 0x78]
mov rcx, rax
mov rdx, qword [rbp + 0xb8]
mov rbx, rax
call fcn.14003a170
mov esi, 0x388
mov qword [rbp + 0xb8], rbx
mov ecx, esi
call fcn.140037e24
mov r8d, esi
lea rdx, [rsp + 0x60]
mov rcx, rax
mov rbx, rax
call fcn.14003a170
mov rcx, qword [rdi + 0x60]
test rcx, rcx
jne 0x140032d04
mov qword [rdi + 0x60], rbx
jmp 0x140032d17
mov rcx, qword [rax]
lea rax, [rcx + 0x380]
cmp qword [rax], r13
jne 0x140032d01
mov qword [rcx + 0x380], rbx
xor eax, eax
jmp 0x140032d20
mov eax, 0x10000
lea r11, [rsp + 0x500]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret