Function at 0x14011a493
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 [0x14019d018]
xor rax, rsp
mov qword [rsp + 0x80], rax
mov edi, 0xffffff9a
test rcx, rcx
je 0x14011ac1e
mov r15d, dword [rsp + 0x110]
mov eax, r15d
and eax, 0xfffffff7
jne 0x14011ac1e
mov rsi, r9
mov rbp, r8
mov rbx, rdx
mov r13, rcx
cmp dword [rcx + 0x70], 1
jne 0x14011a503
mov rcx, r13
xor edx, edx
xor r8d, r8d
call fcn.14011af36
mov edi, eax
test eax, eax
jne 0x14011ac1e
mov qword [rsp + 0x58], rsi
test rbx, rbx
lea rdi, [0x140179a44]
cmovne rdi, rbx
mov rsi, qword [rsp + 0x108]
xor ebx, ebx
mov eax, 0
test rsi, rsi
je 0x14011a532
mov rcx, rsi
call fcn.140152930
mov qword [rsp + 0x48], rax
mov r12d, dword [rsp + 0x158]
mov r14d, dword [rsp + 0x118]
mov rcx, rdi
call fcn.140152930
mov qword [rsp + 0x40], rax
test rbp, rbp
je 0x14011a5a4
mov ebx, dword [rbp + 0x18]
test ebx, ebx
jne 0x14011a5a4
mov eax, dword [rbp + 0x14]
lea ecx, [rax + 0x44]
lea edx, [rax + 0x30]
cmp eax, 0x50
cmovb edx, eax
cmp eax, 0x7bc
cmovae edx, ecx
mov eax, dword [rbp + 0x10]
shl eax, 5
shl edx, 9
add eax, dword [rbp + 0xc]
add eax, edx
shl eax, 0x10
add eax, 0x200000
mov ecx, dword [rbp]
mov edx, dword [rbp + 4]
shr ecx, 1
shl edx, 5
add edx, ecx
mov ebx, dword [rbp + 8]
shl ebx, 0xb
add ebx, edx
or ebx, eax
mov dword [r13 + 0x10100], ebx
mov ecx, r14d
and ecx, 0xfffffffe
mov eax, r12d
or eax, 2
cmp ecx, 8
cmovne eax, r12d
mov dword [r13 + 0xf4], eax
cmp r14d, 1
je 0x14011a5d6
cmp r14d, 2
jne 0x14011a5e0
or eax, 4
jmp 0x14011a5d9
or eax, 6
mov dword [r13 + 0xf4], eax
mov ecx, dword [rsp + 0x120]
mov ebx, dword [rsp + 0x100]
cmp qword [rsp + 0x140], 0
je 0x14011a603
or eax, 1
mov dword [r13 + 0xf4], eax
mov r12, qword [rsp + 0xf8]
lea rax, [r13 + 0x78]
mov qword [rsp + 0x50], rax
xor r14d, r14d
mov qword [r13 + 0x10104], r14
mov dword [r13 + 0xf8], r15d
mov qword [r13 + 0xd0], r14
mov dword [r13 + 0xfc], ecx
mov rdx, qword [r13 + 0x58]
mov rcx, r13
call fcn.1401319e9
mov r15, rax
mov qword [r13 + 0xd8], rax
mov rax, qword [rsp + 0x48]
add eax, ebx
mov rdx, qword [rsp + 0x40]
lea ecx, [rdx + rax + 0x2e]
mov dword [r13 + 0xec], ecx
mov dword [r13 + 0xf0], 0x20
lea ecx, [rdx + rax]
add ecx, 0x4e
call fcn.14004bbe0
mov r10, rbx
mov qword [r13 + 0xe0], rax
mov dword [r13 + 0xe8], r10d
mov ecx, 0x2014b50
mov byte [rax + r14], cl
shr rcx, 8
inc r14
cmp r14, 4
jne 0x14011a68c
mov ecx, dword [rsp + 0x150]
mov word [rax + 4], cx
cmp ecx, 0x10000
jb 0x14011a6b6
mov word [rax + 4], 0xffff
mov word [rax + 6], 0x14
mov ecx, dword [r13 + 0xf4]
mov word [rax + 8], cx
cmp ecx, 0x10000
mov r14d, dword [rsp + 0x118]
mov r9, qword [rsp + 0x48]
jb 0x14011a6e2
mov word [rax + 8], 0xffff
mov ecx, dword [r13 + 0xf8]
mov word [rax + 0xa], cx
cmp ecx, 0x10000
jb 0x14011a6fb
mov word [rax + 0xa], 0xffff
mov ecx, dword [r13 + 0x10100]
mov edx, reloc.WS2_32.dll_inet_ntoa
mov rbx, rcx
mov byte [rax + rdx], bl
shr rcx, 8
inc rdx
cmp rdx, 0x10
jne 0x14011a707
cmp rbx, 0x100
jb 0x14011a72a
mov dword [rax + 0xc], 0xffffffff
mov qword [rax + 0x10], 0
mov dword [rax + 0x18], 0
mov rcx, qword [rsp + 0x40]
mov r8d, ecx
mov byte [rax + 0x1c], cl
mov byte [rax + 0x1d], ch
cmp r8, 0x10000
jb 0x14011a756
mov word [rax + 0x1c], 0xffff
mov word [rax + 0x1e], r10w
cmp r10d, 0x10000
jb 0x14011a76a
mov word [rax + 0x1e], 0xffff
mov word [rax + 0x20], r9w
cmp r9d, 0x10000
jb 0x14011a77e
mov word [rax + 0x20], 0xffff
mov word [rax + 0x22], 0
test rbp, rbp
je 0x14011a7ce
mov ecx, dword [rbp + 0x1c]
mov word [rax + 0x24], cx
cmp ecx, 0x10000
jb 0x14011a79e
mov word [rax + 0x24], 0xffff
mov ebx, dword [rbp + 0x20]
mov rdx, rax
add rdx, 0x26
xor ecx, ecx
mov rbp, rbx
mov byte [rdx + rcx], bpl
shr rbx, 8
inc rcx
cmp rcx, 4
jne 0x14011a7aa
mov ecx, 0xffffffff
cmp rbp, 0x100
jae 0x14011a7dd
jmp 0x14011a7df
mov word [rax + 0x24], 0
mov rdx, rax
add rdx, 0x26
xor ecx, ecx
mov dword [rdx], ecx
mov edx, 0xfffffffe
cmp r15, rdx
jbe 0x14011a801
inc rdx
xor ecx, ecx
mov byte [rax + rcx + 0x2a], dl
shr rdx, 8
inc rcx
cmp rcx, 4
jne 0x14011a7ee
jmp 0x14011a831
mov rcx, qword [r13 + 0x10150]
sub r15, rcx
xor ecx, ecx
mov rdx, r15
mov byte [rax + rcx + 0x2a], dl
shr r15, 8
inc rcx
cmp rcx, 4
jne 0x14011a80d
cmp rdx, 0x100
jb 0x14011a831
mov dword [rax + 0x2a], 0xffffffff
mov ebp, r10d
cmp dword [rsp + 0x40], 0
je 0x14011a859
lea rbx, [r8 - 1]
xor ecx, ecx
mov dl, byte [rdi + rcx]
mov byte [rax + rcx + 0x2e], dl
cmp rbx, rcx
je 0x14011a859
mov rax, qword [r13 + 0xe0]
inc rcx
jmp 0x14011a841
test r10d, r10d
je 0x14011a87d
lea rax, [r8 + 0x2e]
xor ecx, ecx
mov dl, byte [r12 + rcx]
mov rbx, qword [r13 + 0xe0]
add rbx, rax
mov byte [rcx + rbx], dl
inc rcx
cmp rbp, rcx
jne 0x14011a864
test r9d, r9d
je 0x14011a8a7
mov eax, r9d
lea rcx, [r8 + rbp]
add rcx, 0x2e
xor edx, edx
mov bl, byte [rsi + rdx]
mov rbp, qword [r13 + 0xe0]
add rbp, rcx
mov byte [rdx + rbp], bl
inc rdx
cmp rax, rdx
jne 0x14011a88f
cmp qword [r13 + 0xe0], 0
je 0x14011a92c
mov eax, dword [rsp + 0x160]
mov dword [r13 + 0x1010c], eax
xorps xmm0, xmm0
movups xmmword [r13 + 0x10110], xmm0
xor ebx, ebx
mov qword [r13 + 0x10120], rbx
mov rcx, r13
mov rdx, rdi
mov r8d, dword [rsp + 0xf0]
mov r9, qword [rsp + 0x58]
call fcn.14011a17a
mov edi, eax
mov qword [r13 + 0x80], rbx
mov qword [r13 + 0x90], 0x10000
lea rax, [r13 + 0x100]
mov qword [r13 + 0x88], rax
mov dword [r13 + 0xc0], 0
test edi, edi
je 0x14011a936
mov dword [r13 + 0x10140], 0
jmp 0x14011ac1e
mov edi, 0xffffff98
jmp 0x14011ac1e
cmp dword [r13 + 0xf8], 8
jne 0x14011a94e
cmp dword [r13 + 0xfc], 0
je 0x14011ac44
mov dword [r13 + 0x10140], 0
cmp qword [rsp + 0x140], 0
je 0x14011ac14
movabs rdi, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0x60], rdi
mov dword [rsp + 0x68], 0xaaaaaaaa
mov dword [r13 + 0x10108], 1
call fcn.14004cbe0
mov r15, rax
mov qword [r13 + 0x10138], rax
lea r14, [r13 + 0x10128]
mov qword [rsp + 0x70], rdi
mov word [rsp + 0x78], 0xaaaa
mov eax, dword [0x1401b12a4]
lea ecx, [rax + 1]
mov dword [0x1401b12a4], ecx
test eax, eax
jne 0x14011a9d2
xor ecx, ecx
call fcn.14014df14
xor eax, 0xbb40e64e
mov ecx, eax
call fcn.1401521fc
mov rcx, qword [rsp + 0x140]
mov rdx, r14
mov r8, r15
call fcn.14011b942
xor ebp, ebp
mov r12d, 0xff
call fcn.140152214
shr eax, 7
mov edi, dword [r13 + 0x10128]
mov edx, dword [r13 + 0x10130]
mov ecx, edx
and ecx, 0xfffd
lea ebx, [rcx + 2]
xor ecx, 3
imul ecx, ebx
shr ecx, 8
mov ebx, edi
xor ebx, eax
and ebx, r12d
shr edi, 8
xor edi, dword [r15 + rbx*4]
mov dword [r13 + 0x10128], edi
and edi, r12d
add edi, dword [r13 + 0x1012c]
imul ebx, edi, 0x8088405
inc ebx
mov dword [r13 + 0x1012c], ebx
shr ebx, 0x18
mov edi, edx
and edi, r12d
xor edi, ebx
shr edx, 8
xor edx, dword [r15 + rdi*4]
mov dword [r13 + 0x10130], edx
xor ecx, eax
mov byte [rsp + rbp + 0x70], cl
inc rbp
cmp rbp, 0xa
jne 0x14011a9ed
mov rcx, qword [rsp + 0x140]
mov rdx, r14
mov r8, r15
call fcn.14011b942
mov eax, dword [r13 + 0x10130]
mov ebx, dword [r13 + 0x10128]
mov edx, dword [r13 + 0x1012c]
xor ebp, ebp
mov r8d, 0xff
mov edi, eax
and edi, 0xfffd
lea ecx, [rdi + 2]
xor edi, 3
imul edi, ecx
shr edi, 8
movzx r9d, byte [rsp + rbp + 0x70]
mov ecx, ebx
and ecx, r8d
xor ecx, r9d
shr ebx, 8
xor ebx, dword [r15 + rcx*4]
mov dword [r13 + 0x10128], ebx
mov ecx, ebx
and ecx, r8d
add ecx, edx
imul edx, ecx, 0x8088405
inc edx
mov dword [r13 + 0x1012c], edx
mov ecx, edx
shr ecx, 0x18
mov esi, eax
and esi, r8d
xor esi, ecx
shr eax, 8
xor eax, dword [r15 + rsi*4]
mov dword [r13 + 0x10130], eax
xor edi, r9d
mov byte [rsp + rbp + 0x60], dil
inc rbp
cmp rbp, 0xa
jne 0x14011aa9c
mov r10d, 0xfffd
mov edi, eax
and edi, r10d
lea ecx, [rdi + 2]
xor edi, 3
imul edi, ecx
shr edi, 8
mov r14d, dword [rsp + 0x148]
mov ebp, r14d
shr ebp, 0x10
mov ecx, ebx
xor ecx, ebp
mov r9d, 0xff
and ecx, r9d
shr ebx, 8
xor ebx, dword [r15 + rcx*4]
mov dword [r13 + 0x10128], ebx
mov ecx, ebx
and ecx, r9d
add edx, ecx
imul r11d, edx, 0x8088405
lea esi, [r11 + 1]
mov dword [r13 + 0x1012c], esi
shr esi, 0x18
mov edx, eax
and edx, r9d
xor edx, esi
shr eax, 8
xor eax, dword [r15 + rdx*4]
mov dword [r13 + 0x10130], eax
xor ebp, edi
lea r8, [rsp + 0x60]
mov byte [r8 + 0xa], bpl
and r10d, eax
lea edx, [r10 + 2]
xor r10d, 3
imul r10d, edx
shr r14d, 0x18
xor ecx, r14d
shr ebx, 8
xor ebx, dword [r15 + rcx*4]
mov dword [r13 + 0x10128], ebx
and ebx, r9d
lea ecx, [rbx + r11]
inc ecx
imul ecx, ecx, 0x8088405
inc ecx
mov dword [r13 + 0x1012c], ecx
shr ecx, 0x18
and r9d, eax
xor r9d, ecx
shr eax, 8
xor eax, dword [r15 + r9*4]
shr r10d, 8
mov dword [r13 + 0x10130], eax
xor r14d, r10d
mov byte [r8 + 0xb], r14b
mov dword [r13 + 0x10140], 0xc
mov rdx, qword [r13 + 0x58]
mov rax, qword [r13 + 0x10]
mov rcx, qword [r13 + 0x38]
mov r9d, reloc.WS2_32.dll_inet_ntoa
call qword [0x1401c0010]
mov edi, 0xffffffff
cmp eax, 0xc
jne 0x14011ac1e
mov dword [r13 + 0x70], 1
xor edi, edi
mov rcx, qword [rsp + 0x80]
xor rcx, rsp
call fcn.140136dd0
mov eax, edi
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [rsp + 0x128]
mov r9d, eax
neg r9d
cmovns r9d, eax
xorps xmm0, xmm0
movups xmmword [r13 + 0xa8], xmm0
mov qword [r13 + 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 + 0x50]
mov edx, r14d
mov r8d, 8
call fcn.14004cfd0
mov edi, eax
test eax, eax
jne 0x14011a91c
mov dword [r13 + 0xd0], 8
jmp 0x14011a94e