Function at 0x14025d951
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
mov rax, qword [0x140327038]
xor rax, rsp
mov qword [rsp + 0x80], rax
mov ebx, 0xffffff9a
test rcx, rcx
je 0x14025dd4a
mov qword [rsp + 0x58], r9
mov ebp, dword [rsp + 0x110]
mov eax, ebp
and eax, 0xfffffff7
jne 0x14025dd4a
mov r13, r8
mov r15, rdx
mov rsi, rcx
cmp dword [rcx + 0x70], 1
je 0x14025dd70
test r15, r15
lea r14, [0x1402e7e57]
cmovne r14, r15
mov r15, qword [rsp + 0x108]
xor r12d, r12d
mov eax, 0
test r15, r15
je 0x14025d9d9
mov rcx, r15
call fcn.140164e30
mov qword [rsp + 0x48], rax
mov edi, dword [rsp + 0x158]
mov rcx, r14
call fcn.140164e30
mov qword [rsp + 0x40], rax
test r13, r13
je 0x14025da4f
mov r12d, dword [r13 + 0x18]
test r12d, r12d
jne 0x14025da4f
mov eax, dword [r13 + 0x14]
lea ecx, [rax + 0x30]
cmp eax, 0x50
cmovb ecx, eax
lea edx, [rax + 0x44]
cmp eax, 0x7bc
cmovae ecx, edx
mov eax, dword [r13 + 0xc]
mov edx, dword [r13 + 0x10]
shl ecx, 0x19
shl edx, 0x15
shl eax, 0x10
add eax, edx
add eax, ecx
add eax, 0x200000
mov ecx, dword [r13]
mov edx, dword [r13 + 4]
shr ecx, 1
shl edx, 5
add edx, ecx
mov r12d, dword [r13 + 8]
shl r12d, 0xb
add r12d, edx
or r12d, eax
mov dword [rsi + 0x10100], r12d
mov edx, dword [rsp + 0x118]
mov ecx, edx
and ecx, 0xfffffffe
mov eax, edi
or eax, 2
cmp ecx, 8
cmovne eax, edi
mov dword [rsi + 0xf4], eax
cmp edx, 2
je 0x14025da84
cmp edx, 1
jne 0x14025da91
mov ecx, 6
jmp 0x14025da89
mov ecx, 4
or eax, ecx
mov dword [rsi + 0xf4], eax
mov ecx, dword [rsp + 0x120]
cmp qword [rsp + 0x140], 0
je 0x14025daac
or eax, 1
mov dword [rsi + 0xf4], eax
mov rdi, qword [rsp + 0xf8]
lea rax, [rsi + 0x78]
mov qword [rsp + 0x50], rax
xor r12d, r12d
mov qword [rsi + 0x10104], r12
mov dword [rsi + 0xf8], ebp
mov qword [rsi + 0xd0], r12
mov dword [rsi + 0xfc], ecx
mov rdx, qword [rsi + 0x58]
mov rcx, rsi
call fcn.14027b203
mov rbp, rax
mov qword [rsi + 0xd8], rax
mov rax, qword [rsp + 0x48]
mov ebx, dword [rsp + 0x100]
add eax, ebx
mov rdx, qword [rsp + 0x40]
lea ecx, [rdx + rax + 0x2e]
mov dword [rsi + 0xec], ecx
mov dword [rsi + 0xf0], 0x20
lea ecx, [rdx + rax]
add ecx, 0x4e
call fcn.14003dfb0
mov qword [rsi + 0xe0], rax
mov dword [rsi + 0xe8], ebx
mov ecx, 0x2014b50
mov byte [rax + r12], cl
shr ecx, 8
inc r12
cmp r12, 4
jne 0x14025db34
mov ecx, dword [rsp + 0x150]
mov word [rax + 4], cx
cmp ecx, 0x10000
jb 0x14025db5d
mov word [rax + 4], 0xffff
mov word [rax + 6], 0x14
mov ecx, dword [rsi + 0xf4]
mov word [rax + 8], cx
cmp ecx, 0x10000
mov r11, qword [rsp + 0x48]
jb 0x14025db80
mov word [rax + 8], 0xffff
mov ecx, dword [rsi + 0xf8]
mov word [rax + 0xa], cx
cmp ecx, 0x10000
jb 0x14025db98
mov word [rax + 0xa], 0xffff
mov ecx, dword [rsi + 0x10100]
xor edx, edx
mov r8, rcx
mov byte [rax + rdx + 0xc], r8b
shr rcx, 8
inc rdx
cmp rdx, 4
jne 0x14025dba0
cmp r8, 0x100
jb 0x14025dbc5
mov dword [rax + 0xc], 0xffffffff
mov qword [rax + 0x10], 0
mov dword [rax + 0x18], 0
mov rdx, qword [rsp + 0x40]
mov ecx, edx
mov byte [rax + 0x1c], dl
mov byte [rax + 0x1d], dh
cmp rcx, 0x10000
jb 0x14025dbf0
mov word [rax + 0x1c], 0xffff
mov word [rax + 0x1e], bx
cmp ebx, 0x10000
jb 0x14025dc02
mov word [rax + 0x1e], 0xffff
mov word [rax + 0x20], r11w
cmp r11d, 0x10000
jb 0x14025dc16
mov word [rax + 0x20], 0xffff
mov word [rax + 0x22], 0
test r13, r13
je 0x14025dc65
mov edx, dword [r13 + 0x1c]
mov word [rax + 0x24], dx
cmp edx, 0x10000
jb 0x14025dc37
mov word [rax + 0x24], 0xffff
mov edx, dword [r13 + 0x20]
xor r8d, r8d
mov r9, rdx
mov byte [rax + r8 + 0x26], r9b
shr rdx, 8
inc r8
cmp r8, 4
jne 0x14025dc3e
cmp r9, 0x100
jb 0x14025dc72
mov dword [rax + 0x26], 0xffffffff
jmp 0x14025dc72
mov word [rax + 0x24], 0
mov dword [rax + 0x26], 0
mov edx, 0xffffffff
cmp rbp, rdx
jae 0x14025dcaf
mov rdx, qword [rsi + 0x10150]
sub rbp, rdx
xor edx, edx
mov r8, rbp
mov byte [rax + rdx + 0x2a], r8b
shr rbp, 8
inc rdx
cmp rdx, 4
jne 0x14025dc88
cmp r8, 0x100
jb 0x14025dcc8
mov dword [rax + 0x2a], 0xffffffff
jmp 0x14025dcc8
mov edx, 0xffffffff
xor r8d, r8d
mov byte [rax + r8 + 0x2a], dl
shr edx, 8
inc r8
cmp r8, 4
jne 0x14025dcb7
mov eax, ebx
cmp dword [rsp + 0x40], 0
je 0x14025dceb
xor edx, edx
mov r8b, byte [r14 + rdx]
mov r9, qword [rsi + 0xe0]
mov byte [r9 + rdx + 0x2e], r8b
inc rdx
cmp rcx, rdx
jne 0x14025dcd3
test ebx, ebx
je 0x14025dd10
lea rdx, [rcx + 0x2e]
xor r8d, r8d
mov r9b, byte [rdi + r8]
mov r10, qword [rsi + 0xe0]
add r10, rdx
mov byte [r8 + r10], r9b
inc r8
cmp rax, r8
jne 0x14025dcf6
test r11d, r11d
je 0x14025dd3b
mov edx, r11d
add rax, rcx
add rax, 0x2e
xor ecx, ecx
mov r8b, byte [r15 + rcx]
mov r9, qword [rsi + 0xe0]
add r9, rax
mov byte [rcx + r9], r8b
inc rcx
cmp rdx, rcx
jne 0x14025dd21
mov ebx, 0xffffff98
cmp qword [rsi + 0xe0], 0
jne 0x14025dd83
mov rcx, qword [rsp + 0x80]
xor rcx, rsp
call fcn.14013d520
mov eax, ebx
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rsi
call fcn.14025e403
mov ebx, eax
test eax, eax
jne 0x14025dd4a
jmp 0x14025d9ae
mov eax, dword [rsp + 0x160]
mov dword [rsi + 0x1010c], eax
xorps xmm0, xmm0
movups xmmword [rsi + 0x10110], xmm0
xor edi, edi
mov qword [rsi + 0x10120], rdi
mov rcx, rsi
mov rdx, r14
mov r8d, dword [rsp + 0xf0]
mov r9, qword [rsp + 0x58]
call fcn.14025d63b
mov qword [rsi + 0x80], rdi
mov qword [rsi + 0x90], 0x10000
lea rcx, [rsi + 0x100]
mov qword [rsi + 0x88], rcx
mov dword [rsi + 0xc0], 0
mov ebx, 0xffffffff
test eax, eax
je 0x14025ddfd
mov dword [rsi + 0x10140], 0
jmp 0x14025dd4a
cmp dword [rsi + 0xf8], 8
jne 0x14025de0f
cmp dword [rsi + 0xfc], 0
je 0x14025de36
mov dword [rsi + 0x10140], 0
cmp qword [rsp + 0x140], 0
jne 0x14025deb6
mov dword [rsi + 0x70], 1
xor ebx, ebx
jmp 0x14025dd4a
mov eax, dword [rsp + 0x128]
mov r9d, eax
neg r9d
cmovns r9d, eax
xorps xmm0, xmm0
movups xmmword [rsi + 0xa8], xmm0
mov qword [rsi + 0xb8], 0
lea rax, str.1.2.13
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x138]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x130]
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x38], 0x58
mov rcx, qword [rsp + 0x50]
mov edx, dword [rsp + 0x118]
mov r8d, 8
call fcn.140100830
mov ebx, eax
test eax, eax
jne 0x14025ddee
mov dword [rsi + 0xd0], 8
jmp 0x14025de0f
movabs r14, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0x60], r14
mov dword [rsp + 0x68], 0xaaaaaaaa
mov dword [rsi + 0x10108], 1
call fcn.1402095a0
mov rdi, rax
mov qword [rsi + 0x10138], rax
lea rbx, [rsi + 0x10128]
mov qword [rsp + 0x70], r14
mov word [rsp + 0x78], 0xaaaa
mov eax, dword [0x140342acc]
lea ecx, [rax + 1]
mov dword [0x140342acc], ecx
test eax, eax
jne 0x14025df1f
xor ecx, ecx
call fcn.14013bc1c
xor eax, 0xbb40e64e
mov ecx, eax
call fcn.14013bc04
mov rcx, qword [rsp + 0x140]
mov rdx, rbx
mov r8, rdi
call fcn.14025ee02
xor r14d, r14d
mov ebp, 0xff
call fcn.14013bea4
shr eax, 7
mov r8d, dword [rsi + 0x10128]
mov edx, dword [rsi + 0x10130]
mov ecx, edx
and ecx, 0xfffd
mov r9d, edx
or r9d, 2
xor ecx, 3
imul ecx, r9d
mov r9d, r8d
xor r9d, eax
and r9d, ebp
shr r8d, 8
xor r8d, dword [rdi + r9*4]
mov dword [rsi + 0x10128], r8d
and r8d, ebp
add r8d, dword [rsi + 0x1012c]
shr ecx, 8
imul r8d, r8d, 0x8088405
inc r8d
mov dword [rsi + 0x1012c], r8d
shr r8d, 0x18
mov r9d, edx
and r9d, ebp
xor r9d, r8d
shr edx, 8
xor edx, dword [rdi + r9*4]
mov dword [rsi + 0x10130], edx
xor ecx, eax
mov byte [rsp + r14 + 0x70], cl
inc r14
cmp r14, 0xa
jne 0x14025df3a
mov rcx, qword [rsp + 0x140]
mov rdx, rbx
mov r8, rdi
call fcn.14025ee02
mov eax, dword [rsi + 0x10130]
mov ecx, dword [rsi + 0x10128]
mov edx, dword [rsi + 0x1012c]
xor r8d, r8d
mov r9d, 0xff
mov r10d, eax
and r10d, 0xfffd
mov r11d, eax
or r11d, 2
xor r10d, 3
imul r10d, r11d
shr r10d, 8
mov r11b, byte [rsp + r8 + 0x70]
mov ebx, ecx
xor bl, r11b
movzx ebx, bl
shr ecx, 8
xor ecx, dword [rdi + rbx*4]
mov dword [rsi + 0x10128], ecx
mov ebx, ecx
and ebx, r9d
add ebx, edx
imul edx, ebx, 0x8088405
inc edx
mov dword [rsi + 0x1012c], edx
mov ebx, edx
shr ebx, 0x18
mov r14d, eax
and r14d, r9d
xor r14d, ebx
shr eax, 8
xor eax, dword [rdi + r14*4]
mov dword [rsi + 0x10130], eax
xor r10b, r11b
mov byte [rsp + r8 + 0x60], r10b
inc r8
cmp r8, 0xa
jne 0x14025dff7
mov r9d, 0xfffd
mov r8d, eax
and r8d, r9d
mov r10d, eax
or r10d, 2
xor r8d, 3
imul r8d, r10d
shr r8d, 8
mov r15d, dword [rsp + 0x148]
mov ebx, r15d
shr ebx, 0x10
mov r11d, ecx
xor r11d, ebx
mov r10d, 0xff
and r11d, r10d
shr ecx, 8
xor ecx, dword [rdi + r11*4]
mov dword [rsi + 0x10128], ecx
mov r11d, ecx
and r11d, r10d
add edx, r11d
imul edx, edx, 0x8088405
lea ebp, [rdx + 1]
mov dword [rsi + 0x1012c], ebp
shr ebp, 0x18
mov r14d, eax
and r14d, r10d
xor r14d, ebp
shr eax, 8
xor eax, dword [rdi + r14*4]
mov dword [rsi + 0x10130], eax
xor ebx, r8d
lea r8, [rsp + 0x60]
mov byte [r8 + 0xa], bl
and r9d, eax
mov ebx, eax
or ebx, 2
xor r9d, 3
imul r9d, ebx
shr r15d, 0x18
xor r11d, r15d
shr ecx, 8
xor ecx, dword [rdi + r11*4]
mov dword [rsi + 0x10128], ecx
and ecx, r10d
add ecx, edx
inc ecx
imul ecx, ecx, 0x8088405
inc ecx
mov dword [rsi + 0x1012c], ecx
shr ecx, 0x18
and r10d, eax
xor r10d, ecx
shr eax, 8
xor eax, dword [rdi + r10*4]
shr r9d, 8
mov dword [rsi + 0x10130], eax
xor r15d, r9d
mov byte [r8 + 0xb], r15b
mov dword [rsi + 0x10140], 0xc
mov rdx, qword [rsi + 0x58]
mov rax, qword [rsi + 0x10]
mov rcx, qword [rsi + 0x38]
mov r9d, 0xc
call qword [case.0x14017aab5.0]
mov ebx, 0xffffffff
cmp eax, 0xc
jne 0x14025dd4a
jmp 0x14025de28