Function at 0x14025e058
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 [0x14030d038]
xor rax, rsp
mov qword [rsp + 0x80], rax
mov ebx, 0xffffff9a
test rcx, rcx
je 0x14025d635
mov qword [rsp + 0x50], r9
mov eax, dword [rsp + 0x110]
and eax, 0xfffffff7
jne 0x14025d635
mov rbp, rdx
mov r12, rcx
cmp dword [rcx + 0x70], 1
mov qword [rsp + 0x40], r8
je 0x14025d65b
test rbp, rbp
lea rdx, [0x1402b04eb]
cmovne rdx, rbp
mov r13, qword [rsp + 0x108]
xor edi, edi
mov eax, 0
test r13, r13
je 0x14025d29f
mov rcx, r13
mov rsi, rdx
call fcn.140132750
mov rdx, rsi
mov rbp, rax
mov r15d, dword [rsp + 0x158]
mov r14d, dword [rsp + 0x118]
mov qword [rsp + 0x58], rdx
mov rcx, rdx
call fcn.140132750
mov rsi, rax
mov rbx, qword [rsp + 0x40]
test rbx, rbx
je 0x14025d316
mov edi, dword [rbx + 0x18]
test edi, edi
jne 0x14025d316
mov eax, dword [rbx + 0x14]
lea ecx, [rax + 0x44]
lea edx, [rax + 0x30]
cmp eax, 0x4f
cmovbe edx, eax
cmp eax, 0x7bb
cmova edx, ecx
mov eax, dword [rbx + 0x10]
shl eax, 5
shl edx, 9
add eax, dword [rbx + 0xc]
add eax, edx
shl eax, 0x10
add eax, 0x200000
mov ecx, dword [rbx]
mov edx, dword [rbx + 4]
shr ecx, 1
shl edx, 5
add edx, ecx
mov edi, dword [rbx + 8]
shl edi, 0xb
add edi, edx
or edi, eax
mov dword [r12 + 0x10100], edi
mov ecx, r14d
and ecx, 0xfffffffe
mov eax, r15d
or eax, 2
cmp ecx, 8
cmovne eax, r15d
mov dword [r12 + 0xf4], eax
cmp r14d, 1
je 0x14025d34a
cmp r14d, 2
jne 0x14025d355
or eax, 4
jmp 0x14025d34d
or eax, 6
mov dword [r12 + 0xf4], eax
mov ecx, dword [rsp + 0x120]
mov ebx, dword [rsp + 0x100]
cmp qword [rsp + 0x140], 0
je 0x14025d379
or eax, 1
mov dword [r12 + 0xf4], eax
mov r15, qword [rsp + 0xf8]
lea rax, [r12 + 0x78]
mov qword [rsp + 0x48], rax
xor edi, edi
mov qword [r12 + 0x10104], rdi
mov eax, dword [rsp + 0x110]
mov dword [r12 + 0xf8], eax
mov qword [r12 + 0xd0], rdi
mov dword [r12 + 0xfc], ecx
mov rdx, qword [r12 + 0x58]
mov rcx, r12
call fcn.14025c52e
mov r14, rax
mov qword [r12 + 0xd8], rax
lea eax, [rbx + rbp]
lea ecx, [rsi + rax]
add ecx, 0x2e
mov dword [r12 + 0xec], ecx
mov dword [r12 + 0xf0], 0x20
lea ecx, [rsi + rax]
add ecx, 0x4e
call fcn.1400c4590
mov r10, rbx
mov qword [r12 + 0xe0], rax
mov dword [r12 + 0xe8], r10d
mov ecx, 0x2014b50
mov byte [rax + rdi], cl
shr rcx, 8
inc rdi
cmp rdi, 4
jne 0x14025d40c
mov ecx, dword [rsp + 0x150]
mov word [rax + 4], cx
cmp ecx, 0x10000
mov rdx, qword [rsp + 0x58]
jb 0x14025d43a
mov word [rax + 4], 0xffff
mov word [rax + 6], 0x14
mov ecx, dword [r12 + 0xf4]
mov word [rax + 8], cx
cmp ecx, 0x10000
mov r9, rbp
mov rbx, qword [rsp + 0x40]
jb 0x14025d462
mov word [rax + 8], 0xffff
mov ecx, dword [r12 + 0xf8]
mov word [rax + 0xa], cx
cmp ecx, 0x10000
jb 0x14025d47c
mov word [rax + 0xa], 0xffff
mov ecx, dword [r12 + 0x10100]
xor ebp, ebp
mov byte [rax + rbp + 0xc], cl
shr rcx, 8
inc rbp
cmp rbp, 4
jne 0x14025d486
test rcx, rcx
je 0x14025d4a3
mov dword [rax + 0xc], 0xffffffff
mov qword [rax + 0x10], 0
mov dword [rax + 0x18], 0
mov rcx, rsi
mov byte [rax + 0x1c], cl
mov byte [rax + 0x1d], ch
test ecx, 0xffff0000
je 0x14025d4c9
mov word [rax + 0x1c], 0xffff
mov esi, r10d
mov word [rax + 0x1e], r10w
test esi, 0xffff0000
je 0x14025d4df
mov word [rax + 0x1e], 0xffff
mov r8d, r9d
mov word [rax + 0x20], r9w
test r8d, 0xffff0000
je 0x14025d4f6
mov word [rax + 0x20], 0xffff
mov word [rax + 0x22], 0
test rbx, rbx
je 0x14025d53e
mov ebp, dword [rbx + 0x1c]
mov word [rax + 0x24], bp
cmp ebp, 0x10000
jb 0x14025d516
mov word [rax + 0x24], 0xffff
mov ebx, dword [rbx + 0x20]
mov rdi, rax
add rdi, 0x26
xor ebp, ebp
mov byte [rdi + rbp], bl
shr rbx, 8
inc rbp
cmp rbp, 4
jne 0x14025d522
mov ebp, 0xffffffff
test rbx, rbx
jne 0x14025d54d
jmp 0x14025d54f
mov word [rax + 0x24], 0
mov rdi, rax
add rdi, 0x26
xor ebp, ebp
mov dword [rdi], ebp
mov edi, ecx
mov ebx, 0xfffffffe
cmp r14, rbx
jbe 0x14025d573
inc rbx
xor ebp, ebp
mov byte [rax + rbp + 0x2a], bl
shr rbx, 8
inc rbp
cmp rbp, 4
jne 0x14025d560
jmp 0x14025d59e
mov rbp, qword [r12 + 0x10150]
sub r14, rbp
xor ebp, ebp
mov byte [rax + rbp + 0x2a], r14b
shr r14, 8
inc rbp
cmp rbp, 4
jne 0x14025d580
test r14, r14
je 0x14025d59e
mov dword [rax + 0x2a], 0xffffffff
test ecx, ecx
je 0x14025d5d5
mov bl, byte [rdx]
mov byte [rax + 0x2e], bl
cmp edi, 1
je 0x14025d5d5
mov bl, byte [rdx + 1]
mov byte [rax + 0x2f], bl
cmp edi, 2
je 0x14025d5d5
lea rax, [rdi - 2]
xor ebp, ebp
mov rbx, qword [r12 + 0xe0]
mov cl, byte [rdx + rbp + 2]
mov byte [rbx + rbp + 0x30], cl
inc rbp
cmp rax, rbp
jne 0x14025d5bd
test r10d, r10d
je 0x14025d5fb
lea rax, [rdi + 0x2e]
xor ebp, ebp
mov cl, byte [r15 + rbp]
mov rbx, qword [r12 + 0xe0]
add rbx, rax
mov byte [rbp + rbx], cl
inc rbp
cmp rsi, rbp
jne 0x14025d5e0
test r9d, r9d
je 0x14025d625
lea rax, [rsi + rdi]
add rax, 0x2e
xor ebx, ebx
mov cl, byte [r13 + rbx]
mov rbp, qword [r12 + 0xe0]
add rbp, rax
mov byte [rbx + rbp], cl
inc rbx
cmp r8, rbx
jne 0x14025d60a
mov ebx, 0xffffff98
cmp qword [r12 + 0xe0], 0
jne 0x14025d66e
mov rcx, qword [rsp + 0x80]
xor rcx, rsp
call fcn.140115e50
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, r12
call fcn.14025db6c
mov ebx, eax
test eax, eax
jne 0x14025d635
jmp 0x14025d26f
xorps xmm0, xmm0
movups xmmword [r12 + 0x10118], xmm0
movups xmmword [r12 + 0x1010c], xmm0
mov rcx, r12
mov r8d, dword [rsp + 0xf0]
mov r9, qword [rsp + 0x50]
call fcn.14025cf25
mov ebx, eax
mov qword [r12 + 0x80], 0
mov qword [r12 + 0x90], 0x10000
lea rax, [r12 + 0x100]
mov qword [r12 + 0x88], rax
mov dword [r12 + 0xc0], 0
test ebx, ebx
je 0x14025d6e3
mov dword [r12 + 0x10140], 0
jmp 0x14025d635
cmp dword [r12 + 0xf8], 8
jne 0x14025d6fd
cmp dword [r12 + 0xfc], 0
je 0x14025dae4
mov dword [r12 + 0x10140], 0
cmp qword [rsp + 0x140], 0
je 0x14025dad4
movabs rsi, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0x60], rsi
mov dword [rsp + 0x68], 0xaaaaaaaa
mov dword [r12 + 0x10108], 1
call fcn.14025e050
mov r15, rax
mov qword [r12 + 0x10138], rax
mov qword [rsp + 0x70], rsi
mov word [rsp + 0x78], 0xaaaa
mov eax, dword [0x14031ce64]
lea ecx, [rax + 1]
mov dword [0x14031ce64], ecx
test eax, eax
jne 0x14025d77d
xor ecx, ecx
call fcn.140112424
xor eax, 0xbb40e64e
mov ecx, eax
call fcn.1401147bc
movabs r14, 0x2345678912345678
mov qword [r12 + 0x10128], r14
mov dword [r12 + 0x10130], 0x34567890
mov rax, qword [rsp + 0x140]
mov bl, byte [rax]
test bl, bl
je 0x14025d81d
mov rax, qword [rsp + 0x140]
inc rax
mov edi, 0x12345678
mov ebp, 0x23456789
mov edx, 0x34567890
mov r8d, 0xff
movzx ebx, bl
mov esi, edi
and esi, r8d
xor esi, ebx
shr edi, 8
xor edi, dword [r15 + rsi*4]
mov dword [r12 + 0x10128], edi
mov ecx, edi
and ecx, r8d
add ecx, ebp
imul ebp, ecx, 0x8088405
inc ebp
mov dword [r12 + 0x1012c], ebp
mov ecx, ebp
shr ecx, 0x18
mov ebx, edx
and ebx, r8d
xor ebx, ecx
shr edx, 8
xor edx, dword [r15 + rbx*4]
mov dword [r12 + 0x10130], edx
mov bl, byte [rax]
inc rax
test bl, bl
jne 0x14025d7c9
xor ebp, ebp
mov ebx, 0xff
call fcn.1401147d4
shr eax, 7
mov edi, dword [r12 + 0x10128]
mov edx, dword [r12 + 0x10130]
mov ecx, edx
and ecx, 0xfffd
lea esi, [rcx + 2]
xor ecx, 3
imul ecx, esi
shr ecx, 8
mov esi, edi
xor esi, eax
and esi, ebx
shr edi, 8
xor edi, dword [r15 + rsi*4]
mov dword [r12 + 0x10128], edi
and edi, ebx
add edi, dword [r12 + 0x1012c]
imul edi, edi, 0x8088405
inc edi
mov dword [r12 + 0x1012c], edi
shr edi, 0x18
mov esi, edx
and esi, ebx
xor esi, edi
shr edx, 8
xor edx, dword [r15 + rsi*4]
mov dword [r12 + 0x10130], edx
xor ecx, eax
mov byte [rsp + rbp + 0x70], cl
inc rbp
cmp rbp, 0xa
jne 0x14025d824
mov qword [r12 + 0x10128], r14
mov dword [r12 + 0x10130], 0x34567890
mov rdx, qword [rsp + 0x140]
mov cl, byte [rdx]
test cl, cl
je 0x14025d939
inc rdx
mov esi, 0x12345678
mov eax, 0x23456789
mov r11d, 0x34567890
mov ebp, 0xff
movzx edi, cl
mov ecx, esi
and ecx, ebp
xor ecx, edi
shr esi, 8
xor esi, dword [r15 + rcx*4]
mov dword [r12 + 0x10128], esi
mov ecx, esi
and ecx, ebp
add ecx, eax
imul eax, ecx, 0x8088405
inc eax
mov dword [r12 + 0x1012c], eax
mov ecx, eax
shr ecx, 0x18
mov edi, r11d
and edi, ebp
xor edi, ecx
shr r11d, 8
xor r11d, dword [r15 + rdi*4]
mov dword [r12 + 0x10130], r11d
mov cl, byte [rdx]
inc rdx
test cl, cl
jne 0x14025d8e4
jmp 0x14025d949
mov r11d, 0x34567890
mov esi, 0x12345678
mov eax, 0x23456789
xor ebp, ebp
mov r8d, 0xff
mov edi, r11d
and edi, 0xfffd
lea ebx, [rdi + 2]
xor edi, 3
imul edi, ebx
shr edi, 8
movzx ecx, byte [rsp + rbp + 0x70]
mov ebx, esi
and ebx, r8d
xor ebx, ecx
shr esi, 8
xor esi, dword [r15 + rbx*4]
mov dword [r12 + 0x10128], esi
mov ebx, esi
and ebx, r8d
add ebx, eax
imul eax, ebx, 0x8088405
inc eax
mov dword [r12 + 0x1012c], eax
mov edx, eax
shr edx, 0x18
mov ebx, r11d
and ebx, r8d
xor ebx, edx
shr r11d, 8
xor r11d, dword [r15 + rbx*4]
mov dword [r12 + 0x10130], r11d
xor edi, ecx
mov byte [rsp + rbp + 0x60], dil
inc rbp
cmp rbp, 0xa
jne 0x14025d951
mov r10d, 0xfffd
mov edi, r11d
and edi, r10d
lea ecx, [rdi + 2]
xor edi, 3
imul edi, ecx
shr edi, 8
mov edx, dword [rsp + 0x148]
mov ebp, edx
shr ebp, 0x10
mov ecx, esi
xor ecx, ebp
mov r9d, 0xff
and ecx, r9d
shr esi, 8
xor esi, dword [r15 + rcx*4]
mov dword [r12 + 0x10128], esi
mov ecx, esi
and ecx, r9d
add eax, ecx
imul r14d, eax, 0x8088405
lea eax, [r14 + 1]
mov dword [r12 + 0x1012c], eax
shr eax, 0x18
mov ebx, r11d
and ebx, r9d
xor ebx, eax
shr r11d, 8
xor r11d, dword [r15 + rbx*4]
mov dword [r12 + 0x10130], r11d
xor ebp, edi
lea r8, [rsp + 0x60]
mov byte [r8 + 0xa], bpl
and r10d, r11d
lea eax, [r10 + 2]
xor r10d, 3
imul r10d, eax
shr r10d, 8
shr edx, 0x18
xor ecx, edx
shr esi, 8
xor esi, dword [r15 + rcx*4]
mov dword [r12 + 0x10128], esi
and esi, r9d
lea eax, [rsi + r14]
inc eax
imul eax, eax, 0x8088405
inc eax
mov dword [r12 + 0x1012c], eax
shr eax, 0x18
and r9d, r11d
xor r9d, eax
shr r11d, 8
xor r11d, dword [r15 + r9*4]
mov dword [r12 + 0x10130], r11d
xor edx, r10d
mov byte [r8 + 0xb], dl
mov dword [r12 + 0x10140], 0xc
mov rcx, qword [r12 + 0x38]
mov rdx, qword [r12 + 0x58]
mov r9d, 0xc
call qword [r12 + 0x10]
mov ebx, 0xffffffff
cmp eax, 0xc
jne 0x14025d635
mov dword [r12 + 0x70], 1
xor ebx, ebx
jmp 0x14025d635
mov eax, dword [rsp + 0x128]
mov r9d, eax
neg r9d
cmovl r9d, eax
neg r9d
xorps xmm0, xmm0
movups xmmword [r12 + 0xa8], xmm0
mov qword [r12 + 0xb8], 0
lea rax, str.1.2.11
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 + 0x48]
mov edx, dword [rsp + 0x118]
mov r8d, 8
call fcn.1401677e0
mov ebx, eax
test eax, eax
jne 0x14025d6d2
mov dword [r12 + 0xd0], 8
jmp 0x14025d6fd
jmp 0x14025d212