Function at 0x1400169f0
Capabilities:
Generate random numbers using the delphi lcg
Hash data with crc32
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x58
mov esi, r8d
mov r15, rdx
mov qword [rsp + 0x28], rcx
mov rax, qword [rsp + 0x28]
movzx eax, byte [rax + 0x41]
mov byte [rsp + 0x33], al
mov r12d, r8d
lea eax, [rsi + rsi]
mov qword [rsp + 0x40], rax
mov eax, 0xf6ecccf0
mov qword [rsp + 0x48], rdx
jmp 0x140016a40
mov eax, 0xa14c4943
nop word cs:[rax + rax]
cmp eax, 0xf9929be8
jle 0x140016a90
cmp eax, 0x455eb5fd
jle 0x140016b20
cmp eax, 0x75d01abd
jle 0x140016bf8
cmp eax, 0x7af0bbab
jg 0x140016df6
cmp eax, 0x75d01abe
je 0x140016e52
cmp eax, 0x779b8aee
jne 0x140016a40
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x24], 0x1000000
mov eax, 0x9b4d16f4
xor ebp, ebp
jmp 0x140016a40
cmp eax, 0xdc637446
jg 0x140016b80
cmp eax, 0x8d91f4eb
jle 0x140016d39
cmp eax, 0xa14c4942
jg 0x140016e30
cmp eax, 0x8d91f4ec
je 0x140016e6a
cmp eax, 0x9b4d16f4
jne 0x140016a40
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x24], 0x1000000
mov eax, dword [0x140044d50]
lea ecx, [rax - 1]
imul ecx, eax
not ecx
or ecx, 0xfffffffe
cmp ecx, 0xffffffff
sete cl
mov eax, 0x779b8aee
mov r8d, 0x455eb5fe
cmove eax, r8d
cmp dword [0x140044d54], 0xa
setl dl
mov r9d, 0x779b8aee
cmovge eax, r9d
xor dl, cl
cmovne eax, r8d
xor ebp, ebp
jmp 0x140016a40
cmp eax, 0x15c4ef0b
jg 0x140016d8a
cmp eax, 0xf9929be9
je 0x140016e74
cmp eax, 0xece64fb
je 0x140016e88
cmp eax, 0x14d611fc
jne 0x140016a40
mov rax, qword [rsp + 0x28]
mov rcx, qword [rax + 8]
mov qword [rsp + 0x20], 0
mov rdx, r15
mov r8d, esi
lea r9, [rsp + 0x34]
call qword [sym.imp.KERNEL32.dll_WriteFile]
mov ebp, dword [rsp + 0x34]
mov eax, 0xa14c4943
jmp 0x140016a40
cmp eax, 0xeef5b3d0
jg 0x140016db8
cmp eax, 0xdc637447
je 0x140016ead
cmp eax, 0xe73854a1
je 0x140016ec0
cmp eax, 0xee65715f
jne 0x140016a40
mov eax, dword [0x140044d50]
mov ecx, dword [0x140044d54]
lea edx, [rax + 1]
imul edx, eax
mov eax, edx
xor eax, 0xfffffffe
test eax, edx
sete r8b
cmp ecx, 0xa
setl r9b
xor r9b, r8b
mov r8d, 0x779b8aee
mov r9d, 0x9b4d16f4
cmovne r8d, r9d
test eax, edx
mov eax, r8d
cmove eax, r9d
cmp ecx, 0xa
cmovge eax, r8d
jmp 0x140016a40
cmp eax, 0x455eb5fe
je 0x140016a2f
cmp eax, 0x46aa5f66
je 0x140016ed5
cmp eax, 0x49a10f5b
jne 0x140016a40
mov rax, qword [rsp + 0x28]
mov rcx, qword [rax + 0x50]
mov eax, r14d
mov qword [rsp + 0x50], rax
movzx ecx, byte [rcx + rax]
mov rdx, qword [rsp + 0x28]
mov edi, dword [rdx + 0x44]
mov r13d, dword [rdx + 0x4c]
mov r10d, r13d
xor r10d, 2
and r10d, r13d
mov r9d, r13d
not r9d
mov r11d, r9d
and r11d, 0xf42d682e
mov r8d, r13d
and r8d, 0xbd297d1
or r8d, r11d
xor r8d, 0x682c
mov r11d, r13d
and r11d, 2
or r11d, r8d
movzx r10d, r10w
xor r10d, 3
imul r10d, r11d
mov r11d, ecx
not r11b
mov r8d, r11d
xor r8b, cl
and r8b, dil
xor r8b, cl
movzx r8d, r8b
shr edi, 8
mov rax, rsi
mov esi, ebp
mov ebp, r14d
mov r14d, edi
xor r14d, edi
not r14d
lea rbx, [0x140037630]
and r14d, dword [rbx + r8*4]
xor r14d, edi
mov dword [rdx + 0x44], r14d
mov r8d, r14d
xor r8d, 0xffffff00
and r8d, r14d
mov r14d, ebp
mov ebp, esi
mov rsi, rax
add r8d, dword [rdx + 0x48]
imul r8d, r8d, 0x8088405
inc r8d
mov dword [rdx + 0x48], r8d
shr r8d, 0x18
or r9d, 0xffffff00
xor r9d, r8d
not r9d
shr r13d, 8
mov r8d, r13d
xor r8d, r13d
not r8d
and r8d, dword [rbx + r9*4]
shr r10d, 8
xor r8d, r13d
mov dword [rdx + 0x4c], r8d
and r11b, 0xc9
and cl, 0x36
or cl, r11b
xor cl, r10b
xor cl, 0xc9
mov rdx, qword [rsp + 0x28]
mov rdx, qword [rdx + 0x50]
mov rax, qword [rsp + 0x50]
mov byte [rdx + rax], cl
mov eax, 0x453d228a
jmp 0x140016a40
cmp eax, 0x82efa724
je 0x140016efb
cmp eax, 0x84cc909b
je 0x140016f17
cmp eax, 0x8d169367
jne 0x140016a40
mov rax, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x28]
mov ecx, dword [rcx + 0x38]
add rcx, qword [rax + 0x30]
mov rdx, r15
mov r8, r12
call fcn.140035380
mov rax, qword [rsp + 0x28]
add dword [rax + 0x38], esi
mov eax, 0xa14c4943
mov ebp, esi
jmp 0x140016a40
cmp eax, 0x15c4ef0c
je 0x140016f33
cmp eax, 0x2b6976b1
je 0x140016f3d
cmp eax, 0x453d228a
jne 0x140016a40
inc r14d
mov eax, 0xe73854a1
jmp 0x140016a40
cmp eax, 0xeef5b3d1
je 0x140016f57
cmp eax, 0xf0e7f2ae
je 0x140016f73
cmp eax, 0xf6ecccf0
jne 0x140016a40
movzx eax, byte [rsp + 0x33]
not al
or al, 0xfe
cmp al, 0xff
mov eax, 0x84cc909b
mov ecx, 0x82efa724
cmove eax, ecx
jmp 0x140016a40
cmp eax, 0x7af0bbac
je 0x140016f96
cmp eax, 0x7bdda7c2
jne 0x140016a40
mov rax, qword [rsp + 0x28]
mov eax, dword [rax + 0x38]
add eax, esi
mov rcx, qword [rsp + 0x28]
cmp eax, dword [rcx + 0x3c]
mov eax, 0x75d01abe
mov ecx, 0x8d169367
cmovb eax, ecx
jmp 0x140016a40
cmp eax, 0xacfe8801
jne 0x140016fb2
mov rax, qword [rsp + 0x28]
mov qword [rax + 0x50], 0
mov eax, 0xeef5b3d1
jmp 0x140016a40
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x24], 0x30000
mov eax, 0xa14c4943
xor ebp, ebp
jmp 0x140016a40
mov eax, 0xee65715f
jmp 0x140016a40
mov rcx, qword [rsp + 0x38]
call fcn.14001bfa0
mov eax, 0xacfe8801
jmp 0x140016a40
mov rcx, qword [rsp + 0x40]
call fcn.14001bf98
mov rcx, qword [rsp + 0x28]
mov qword [rcx + 0x50], rax
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x58], esi
mov eax, 0xf0e7f2ae
jmp 0x140016a40
mov rax, qword [rsp + 0x28]
mov r15, qword [rax + 0x50]
mov eax, 0x82efa724
jmp 0x140016a40
cmp r14d, esi
mov eax, 0x15c4ef0c
mov ecx, 0x49a10f5b
cmovb eax, ecx
jmp 0x140016a40
mov rax, qword [rsp + 0x28]
mov rax, qword [rax + 0x50]
mov qword [rsp + 0x38], rax
cmp qword [rsp + 0x38], 0
mov eax, 0xf9929be9
mov ecx, 0xacfe8801
cmove eax, ecx
jmp 0x140016a40
mov rax, qword [rsp + 0x28]
cmp qword [rax + 0x30], 0
mov eax, 0x7bdda7c2
mov ecx, 0x7af0bbac
cmove eax, ecx
jmp 0x140016a40
mov rax, qword [rsp + 0x28]
cmp qword [rax + 0x50], 0
mov eax, 0x2b6976b1
mov ecx, 0xeef5b3d1
cmove eax, ecx
jmp 0x140016a40
mov eax, 0xdc637447
jmp 0x140016a40
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x58], esi
mov eax, 0xeef5b3d1
mov ecx, 0x46aa5f66
cmovb eax, ecx
jmp 0x140016a40
mov rax, qword [rsp + 0x28]
cmp qword [rax + 0x50], 0
mov eax, 0xf0e7f2ae
mov ecx, 0xece64fb
cmove eax, ecx
jmp 0x140016a40
mov rax, qword [rsp + 0x28]
mov rcx, qword [rax + 0x50]
mov rdx, qword [rsp + 0x48]
mov r8, r12
call fcn.140035380
mov eax, 0xe73854a1
xor r14d, r14d
jmp 0x140016a40
mov rax, qword [rsp + 0x28]
cmp qword [rax + 8], 0
mov eax, 0x14d611fc
mov ecx, 0x8d91f4ec
cmove eax, ecx
jmp 0x140016a40
cmp eax, 0xa14c4943
jne 0x140016a40
mov eax, ebp
add rsp, 0x58
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret