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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x10]
sub rsp, 0x110
mov rax, qword [0x1402fa010]
xor rax, rsp
mov qword [rbp], rax
mov edi, dword [rcx + 0x420640]
mov rbx, rcx
xor eax, eax
mov dword [rsp + 0x20], edi
xorps xmm0, xmm0
mov byte [rbp - 0x28], al
add rcx, 0x468
movsxd rdi, dword [rbx + 0x420648]
mov r15d, dword [rbx + 0x420638]
add r15d, dword [rbx + 0x420644]
mov dword [rsp + 0x30], r15d
mov qword [rsp + 0x28], rdi
movups xmmword [rbp - 0x48], xmm0
movups xmmword [rbp - 0x38], xmm0
test rdi, rdi
jle 0x140180d6b
xor r12d, r12d
lea edx, [rax + 2]
lea r8d, [rax + 0x20]
mov r13d, r12d
mov eax, dword [rsp + 0x20]
nop
cmp dword [rbx + 0x420570], 0
jne 0x140180d6b
cmp dword [rbx + 0x434], 0
jne 0x140180d6b
cmp byte [r12 + rbx + 0x400568], 1
je 0x140180db7
mov eax, dword [rbx + 0x420654]
movsxd r14, r13d
add r14, rcx
cmp eax, 4
jne 0x1401807e1
mov esi, dword [rbx + 0x420680]
lea rcx, [rbp - 0x20]
mov rdx, qword [rbx + 0x420678]
cmp esi, 0x20
cmovg esi, r8d
movsxd r8, esi
call fcn.1401f61a0
mov eax, 0x12345678
mov r8d, 0x23456789
mov r10d, 0x34567890
mov r9, r14
test r15d, r15d
jle 0x1401802b0
mov r11d, r15d
lea rdi, [0x14026a9c0]
nop dword [rax]
nop word [rax + rax]
movzx edx, byte [r9]
lea r9, [r9 + 1]
mov ecx, eax
shr eax, 8
xor rdx, rcx
movzx ecx, dl
xor eax, dword [rdi + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r8d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [rdi + rcx*4]
sub r11, 1
jne 0x140180260
mov rdi, qword [rsp + 0x28]
nop dword [rax]
mov edx, r10d
lea r11, [0x14026a9c0]
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x420658]
shr edx, 8
xor rdx, rcx
mov ecx, eax
xor rdx, rcx
shr eax, 8
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r8d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov edx, r10d
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x420659]
shr edx, 8
xor rdx, rcx
mov ecx, eax
xor rdx, rcx
shr eax, 8
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r8d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov edx, r10d
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x42065a]
shr edx, 8
xor rdx, rcx
mov ecx, eax
xor rdx, rcx
shr eax, 8
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r8d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov edx, r10d
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x42065b]
shr edx, 8
xor rdx, rcx
mov ecx, eax
shr eax, 8
xor rdx, rcx
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r8d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov edx, r10d
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x42065c]
shr edx, 8
xor rdx, rcx
mov ecx, eax
xor rdx, rcx
shr eax, 8
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r8d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov edx, r10d
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x42065d]
shr edx, 8
xor rdx, rcx
mov ecx, eax
xor rdx, rcx
shr eax, 8
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r8d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov edx, r10d
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x42065e]
shr edx, 8
xor rdx, rcx
mov ecx, eax
xor rdx, rcx
shr eax, 8
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
inc r8d
mov ecx, r10d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
shr r10d, 8
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov edx, r10d
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x42065f]
shr edx, 8
xor rdx, rcx
mov ecx, eax
xor rdx, rcx
shr eax, 8
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r8d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov edx, r10d
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x420660]
shr edx, 8
xor rdx, rcx
mov ecx, eax
xor rdx, rcx
shr eax, 8
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r8d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov edx, r10d
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x420661]
shr edx, 8
xor rdx, rcx
mov ecx, eax
xor rdx, rcx
shr eax, 8
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r8d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r8d
mov edx, r8d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov edx, r10d
or edx, 2
mov ecx, edx
xor ecx, 1
imul edx, ecx
movzx ecx, byte [rbx + 0x420662]
shr edx, 8
xor rdx, rcx
mov ecx, eax
xor rdx, rcx
shr eax, 8
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r8d
imul r9d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r9d
mov edx, r9d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
mov ecx, r10d
or ecx, 2
mov r8d, ecx
xor r8d, 1
imul r8d, ecx
mov ecx, eax
shr eax, 8
shr r8d, 8
xor r8b, byte [rbx + 0x420663]
movzx edx, r8b
xor rdx, rcx
movzx ecx, dl
xor eax, dword [r11 + rcx*4]
movzx ecx, al
add ecx, r9d
imul r9d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r9d
mov edx, r9d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r11 + rcx*4]
cmp r8b, byte [rbx + 0x42064c]
jne 0x140180da2
lea r11, [rbp - 0x20]
mov edi, esi
test esi, esi
je 0x140180718
lea r15, [0x14026a9c0]
mov ecx, r10d
lea r11, [r11 + 1]
or ecx, 2
mov r8d, ecx
xor r8d, 1
imul r8d, ecx
mov ecx, eax
shr eax, 8
shr r8d, 8
xor r8b, byte [r11 - 1]
movzx edx, r8b
xor rdx, rcx
mov byte [r11 - 1], r8b
movzx ecx, dl
xor eax, dword [r15 + rcx*4]
movzx ecx, al
add ecx, r9d
imul r9d, ecx, 0x8088405
mov ecx, r10d
shr r10d, 8
inc r9d
mov edx, r9d
shr rdx, 0x18
xor rdx, rcx
movzx ecx, dl
xor r10d, dword [r15 + rcx*4]
sub edi, 1
jne 0x1401806b2
mov r15d, dword [rsp + 0x30]
xorps xmm0, xmm0
lea rcx, [rsp + 0x40]
xor eax, eax
movups xmmword [rsp + 0x40], xmm0
mov qword [rbp - 0x70], rax
movups xmmword [rsp + 0x50], xmm0
movups xmmword [rsp + 0x60], xmm0
movups xmmword [rsp + 0x70], xmm0
movups xmmword [rbp - 0x80], xmm0
call fcn.1401ef1e0
mov rax, qword [rbx + 0x420668]
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x50], rax
mov edx, 2
mov eax, dword [rbx + 0x420670]
mov dword [rsp + 0x58], eax
lea rax, [rbp - 0x20]
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x48], esi
call fcn.1401ef450
cmp qword [rsp + 0x70], 0
mov edi, eax
je 0x1401807ce
mov r8, qword [rsp + 0x78]
test r8, r8
je 0x1401807ce
mov rdx, qword [rsp + 0x68]
test rdx, rdx
je 0x1401807ce
lea rax, [rsp + 0x40]
cmp qword [rdx], rax
jne 0x1401807ce
mov eax, dword [rdx + 8]
sub eax, 0x3f34
cmp eax, 0x1f
ja 0x1401807ce
mov rax, qword [rdx + 0x40]
test rax, rax
je 0x1401807c7
mov rcx, qword [rbp - 0x80]
mov rdx, rax
call r8
mov r8, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x68]
mov rcx, qword [rbp - 0x80]
call r8
cmp edi, 0xfffffffd
mov rdi, qword [rsp + 0x28]
jne 0x140180d0b
jmp 0x140180da2
cmp eax, 3
jne 0x140180d0b
mov edi, dword [rbx + 0x420680]
lea rcx, [rbp - 0x60]
cmp edi, 2
cmovg edi, edx
mov rdx, qword [rbx + 0x420678]
movsxd r8, edi
call fcn.1401f61a0
movsd xmm0, qword [rbx + 0x420658]
mov edx, 0x23456789
mov esi, dword [rbx + 0x420660]
mov r9d, 0x12345678
movsd qword [rbp - 0x58], xmm0
mov r10d, 0x34567890
mov dword [rbp - 0x50], esi
mov r8, r14
test r15d, r15d
jle 0x1401808a0
mov r11d, r15d
lea rsi, [0x14026a9c0]
nop dword [rax]
nop word [rax + rax]
movzx ecx, byte [r8]
lea r8, [r8 + 1]
mov eax, r9d
shr r9d, 8
xor rcx, rax
movzx eax, cl
xor r9d, dword [rsi + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc edx
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [rsi + rax*4]
sub r11, 1
jne 0x140180850
mov esi, dword [rbx + 0x420660]
nop word [rax + rax]
mov ecx, r10d
lea r11, [0x14026a9c0]
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, byte [rbp - 0x58]
shr ecx, 8
xor rcx, rax
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc edx
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov ecx, r10d
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, byte [rbp - 0x57]
shr ecx, 8
xor rcx, rax
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc edx
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov ecx, r10d
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, byte [rbp - 0x56]
shr ecx, 8
xor rcx, rax
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc edx
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov ecx, r10d
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, byte [rbp - 0x55]
shr ecx, 8
xor rcx, rax
mov eax, r9d
shr r9d, 8
xor rcx, rax
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc edx
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov ecx, r10d
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, byte [rbp - 0x54]
shr ecx, 8
xor rcx, rax
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc edx
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov ecx, r10d
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, byte [rbp - 0x53]
shr ecx, 8
xor rcx, rax
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc edx
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov ecx, r10d
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, byte [rbp - 0x52]
shr ecx, 8
xor rcx, rax
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
inc edx
mov eax, r10d
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
shr r10d, 8
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov ecx, r10d
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, byte [rbp - 0x51]
shr ecx, 8
xor rcx, rax
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc edx
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov ecx, r10d
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, sil
shr ecx, 8
xor rcx, rax
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc edx
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov ecx, r10d
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, byte [rbp - 0x4f]
shr ecx, 8
xor rcx, rax
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul edx, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc edx
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov ecx, r10d
or ecx, 2
mov eax, ecx
xor eax, 1
imul ecx, eax
movzx eax, byte [rbp - 0x4e]
shr ecx, 8
xor rcx, rax
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, edx
imul r8d, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc r8d
mov ecx, r8d
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
mov eax, r10d
or eax, 2
mov edx, eax
xor edx, 1
imul edx, eax
mov eax, r9d
shr r9d, 8
shr edx, 8
xor dl, byte [rbp - 0x4d]
movzx ecx, dl
xor rcx, rax
movzx eax, cl
xor r9d, dword [r11 + rax*4]
movzx eax, r9b
add eax, r8d
imul r8d, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc r8d
mov ecx, r8d
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [r11 + rax*4]
cmp dl, byte [rbx + 0x42064c]
jne 0x140180d9d
lea r11, [rbp - 0x60]
test edi, edi
je 0x140180ccf
lea rsi, [0x14026a9c0]
mov eax, r10d
lea r11, [r11 + 1]
or eax, 2
mov edx, eax
xor edx, 1
imul edx, eax
mov eax, r9d
shr r9d, 8
shr edx, 8
xor dl, byte [r11 - 1]
movzx ecx, dl
xor rcx, rax
mov byte [r11 - 1], dl
movzx eax, cl
xor r9d, dword [rsi + rax*4]
movzx eax, r9b
add eax, r8d
imul r8d, eax, 0x8088405
mov eax, r10d
shr r10d, 8
inc r8d
mov ecx, r8d
shr rcx, 0x18
xor rcx, rax
movzx eax, cl
xor r10d, dword [rsi + rax*4]
sub edi, 1
jne 0x140180c70
movzx eax, word [rbp - 0x60]
movzx ecx, byte [rbp - 0x5f]
cmp al, byte [rbx + 0x420698]
jne 0x140180ce7
cmp cl, byte [rbx + 0x420699]
je 0x140180d06
mov rdi, qword [rsp + 0x28]
cmp al, byte [rbx + 0x42069a]
jne 0x140180da2
cmp cl, byte [rbx + 0x42069b]
jne 0x140180da2
jmp 0x140180d0b
mov rdi, qword [rsp + 0x28]
movsxd r8, r15d
lea rcx, [rbp - 0x48]
mov rdx, r14
call fcn.1401f61a0
mov rcx, qword [rbx + 8]
lea rdx, [rbp - 0x48]
mov rax, qword [rcx]
mov rax, qword [rax + 0x60]
call qword [case.0x140038716.0]
mov rcx, qword [rbx + 8]
lea r8, [rbx + 0x420578]
mov edx, dword [rbx]
mov rax, qword [rcx]
mov rax, qword [rax + 0xc8]
call qword [case.0x140038716.0]
test eax, eax
je 0x140180da2
lea rcx, [rbx + 0x448]
lea rdx, [rbp - 0x48]
call qword [sym.imp.KERNEL32.dll_lstrcpyA]
mov dword [rbx + 0x420570], 1
mov eax, 1
mov rcx, qword [rbp]
xor rcx, rsp
call fcn.1401f3bf0
lea r11, [rsp + 0x110]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
mov rdi, qword [rsp + 0x28]
mov eax, dword [rsp + 0x20]
lea rcx, [rbx + 0x468]
mov r8d, 0x20
lea edx, [r8 - 0x1e]
add r13d, eax
inc r12
cmp r12, rdi
jl 0x1401801d0
jmp 0x140180d6b