Function at 0x180024f40
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rdx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1c8]
sub rsp, 0x2c8
mov rdi, rcx
mov rbx, rdx
add rcx, 0x38
call fcn.180036994
mov edx, 0x8f1dcf1d
mov ecx, 0x4b3193b7
call fcn.180038c24
xor r12d, r12d
test rax, rax
je 0x180024f90
or edx, 0xffffffff
lea rcx, [r12 - 2]
call rax
mov rcx, qword [rdi]
lea r13, [rbx + 8]
add rcx, 0x348
mov qword [rsp + 0x50], r13
mov r8, r13
xor r9d, r9d
mov edx, 0x927c0
call fcn.180036bfc
test eax, eax
je 0x180025c88
mov r14d, 1
cmp eax, 0x102
je 0x180025c88
cmp eax, r14d
je 0x180024fde
mov rcx, r13
call fcn.180036994
jmp 0x180025c5e
lea r15, [rbx + 0x60]
mov rdx, r15
mov qword [rsp + 0x38], r15
lea rcx, [rbp + 0x60]
call fcn.18003d980
lea rdx, [rbp - 0x18]
mov word [rbx + 0x64], r12w
mov rcx, r15
call fcn.18003de1c
lea rdx, [rbp + 0x60]
lea rcx, [rbp + 0x40]
call fcn.18001d2dc
xor edx, edx
lea rcx, [rbp - 8]
call fcn.180031e70
xor edx, edx
lea rcx, [rbp + 0x88]
call fcn.180031e70
lea r8, [rbp - 8]
lea rdx, [rsp + 0x68]
lea rcx, [rbp + 0x40]
call fcn.18001de3c
lea rcx, [rsp + 0x68]
call fcn.180032388
test al, al
jne 0x180025b3d
lea rcx, [rsp + 0x68]
cmp dword [rbp + 0x78], r12d
je 0x180025093
call fcn.180031efc
lea rcx, [rbp + 0x88]
call fcn.180031efc
lea rcx, [rbp - 8]
call fcn.180031efc
lea rcx, [rbp + 0x40]
call fcn.18001d3b8
lea rcx, [rbp - 0x18]
call fcn.180032a74
lea rcx, [rbp + 0x60]
call fcn.18003da50
jmp 0x180025c5e
call fcn.18003246c
movzx r14d, al
lea rdx, [rbp + 0xd0]
mov r8d, r14d
lea rcx, [rsp + 0x68]
call fcn.180032390
mov r8d, r14d
lea rdx, [rbp + 0x160]
lea rcx, [rsp + 0x68]
call fcn.180032390
mov edx, r14d
lea rcx, [rbp + 0xf8]
call fcn.180031e70
mov esi, r12d
test r14d, r14d
je 0x180025121
mov r13d, 1
mov edx, esi
lea rcx, [rbp + 0x160]
call fcn.180031fb0
mov edx, esi
lea rcx, [rbp + 0xd0]
mov rbx, rax
call fcn.180031fb0
mov bl, byte [rbx]
lea rcx, [rbp + 0xf8]
mov edx, esi
xor bl, byte [rax]
call fcn.180031fb0
add esi, r13d
mov byte [rax], bl
cmp esi, r14d
jl 0x1800250e1
mov r13, qword [rsp + 0x50]
lea r8, [rsp + 0x68]
lea rdx, [rbp + 0xf8]
lea rcx, [rbp + 0xa0]
call fcn.18001d144
lea rdx, [rbp + 0xf8]
lea rcx, [rbp - 0x58]
call fcn.18001d178
lea rcx, [rbp + 0xa0]
call fcn.18003246c
lea rdx, [rsp + 0x58]
mov byte [rbp + 0x210], al
lea rcx, [rbp + 0xa0]
mov bl, al
call fcn.18001d978
mov r14d, 1
cmp bl, r14b
jbe 0x180025407
cmp bl, 2
jne 0x180025ae0
lea rcx, [rbp + 0xa0]
call fcn.18003246c
movzx ecx, al
sub ecx, 0x64
je 0x180025288
sub ecx, r14d
je 0x180025262
cmp ecx, r14d
jne 0x180025ae0
lea rdx, [rsp + 0x20]
lea rcx, [rbp + 0xa0]
call fcn.18001d8cc
mov rdx, rax
lea rcx, [rbp - 0x80]
call fcn.18001dcf4
xor edx, edx
lea rcx, [rbp + 0x10]
mov rbx, rax
call fcn.180031e70
mov rdx, rax
lea rcx, [rbp + 0x188]
mov r8, rbx
call fcn.18001d144
lea rcx, [rbp + 0x10]
call fcn.180031efc
lea rcx, [rbp - 0x80]
call fcn.180031efc
lea rcx, [rsp + 0x20]
call fcn.180031efc
lea rcx, [rbp + 0x188]
call fcn.180032844
test eax, eax
je 0x18002522f
lea rdx, [rbp + 0x188]
mov rcx, rdi
call fcn.180026894
mov edx, 0x30323030
jmp 0x180025234
mov edx, 0x30353033
lea rcx, [rbp - 0x58]
call fcn.18001d518
lea rdx, [rbp - 0x58]
lea rcx, [rbp + 0x40]
call fcn.18001e0e4
lea rcx, [rbp + 0x1a0]
call fcn.180031efc
lea rcx, [rbp + 0x188]
jmp 0x180025adb
mov edx, 0x504f4e47
lea rcx, [rbp - 0x58]
call fcn.18001d518
mov rdx, qword [rdi]
lea rcx, [rbp - 0x58]
add rdx, 0x498
call fcn.18001d548
jmp 0x1800253f5
lea rcx, [rbp + 0xa0]
call fcn.1800325dc
mov edx, 0x3c
lea rcx, [rbp + 0x60]
movzx ebx, ax
call fcn.18003e6b0
mov ecx, dword [r15]
lea r8, [rbp - 0x28]
mov dword [rbp - 0x28], ecx
lea rdx, [rsp + 0x58]
mov rcx, rdi
mov word [rbp - 0x24], bx
mov qword [rbp - 0x20], r12
call fcn.1800261ec
test al, al
je 0x1800253e5
mov r9d, 2
lea rdx, [rbp + 0x10]
mov r8d, r14d
mov rcx, rdi
call fcn.18002673c
mov r8d, r14d
mov byte [rbp + 0x210], 0xc
lea rdx, [rbp + 0x210]
lea rcx, [rbp + 0x10]
call fcn.180031fbc
xor edx, edx
lea rcx, [rsp + 0x20]
call fcn.180031e70
mov rcx, qword [rsp + 0x58]
mov edx, 0x7fffffff
call fcn.180035770
mov rdx, qword [rsp + 0x58]
lea rcx, [rbp - 0x80]
mov r8d, eax
call fcn.18003f544
lea rcx, [rbp - 0x80]
call fcn.180032844
xor edx, edx
lea rcx, [rbp - 0x80]
mov ebx, eax
call fcn.180031fb0
mov rdx, rax
lea rcx, [rsp + 0x20]
mov r8d, ebx
call fcn.180031fbc
lea rcx, [rbp - 0x80]
call fcn.180031efc
mov eax, dword [rbp - 0x28]
lea rdx, [rbp + 0x210]
mov r8d, 4
mov dword [rbp + 0x210], eax
lea rcx, [rsp + 0x20]
call fcn.180031fbc
movzx ecx, word [rbp - 0x24]
call fcn.180030ffc
mov r8d, 2
mov word [rbp + 0x228], ax
lea rdx, [rbp + 0x228]
lea rcx, [rsp + 0x20]
call fcn.180031fbc
lea rdx, [rsp + 0x20]
lea rcx, [rbp + 0x10]
call fcn.18001d4c8
lea rdx, [rbp + 0x10]
mov rcx, rdi
call fcn.18002492c
neg al
lea rcx, [rsp + 0x20]
sbb ebx, ebx
and ebx, 0xfffcfffd
add ebx, 0x30353033
call fcn.180031efc
lea rcx, [rbp + 0x28]
call fcn.180031efc
lea rcx, [rbp + 0x10]
call fcn.180031efc
jmp 0x1800253ea
mov ebx, 0x30343034
mov edx, ebx
lea rcx, [rbp - 0x58]
call fcn.18001d518
lea rdx, [rbp - 0x58]
lea rcx, [rbp + 0x40]
call fcn.18001e0e4
jmp 0x180025ae0
lea rdx, [rdi + 0xb0]
lea rcx, [rbp + 0x120]
call fcn.180036464
mov ebx, r12d
cmp dword [rdi + 0xdc], r12d
jle 0x180025457
mov edx, ebx
lea rcx, [rdi + 0xd8]
call fcn.18003d5e0
mov rdx, qword [rsp + 0x58]
xor r9d, r9d
xor r8d, r8d
mov rcx, qword [rax + 0x10]
call fcn.1800355f8
test eax, eax
je 0x1800254a3
add ebx, r14d
cmp ebx, dword [rdi + 0xdc]
jl 0x180025426
mov ecx, 0x28
call fcn.1800314c8
mov rsi, rax
test rax, rax
je 0x18002548d
mov ebx, dword [r15]
lea rcx, [rsi + 0x10]
mov dword [rax + 8], r12d
lea rdx, [rsp + 0x58]
lea rax, [0x18005bdd0]
mov qword [rsi], rax
call fcn.18003286c
mov dword [rsi + 0x20], ebx
jmp 0x180025490
mov rsi, r12
lea rcx, [rdi + 0xd8]
or r8d, 0xffffffff
mov rdx, rsi
call fcn.18003d640
mov rdx, qword [rsp + 0x58]
lea rcx, [rdi + 0x18]
call fcn.18003353c
test al, al
movzx ebx, r12b
lea rcx, [rbp + 0x120]
cmovne ebx, r14d
mov dword [rsp + 0x48], ebx
call fcn.180036860
xor edx, edx
lea rcx, [rsp + 0x20]
call fcn.180031e70
cmp byte [rbp + 0x210], r14b
jne 0x1800255e4
test bl, bl
jne 0x1800255e4
xor eax, eax
lea rsi, [rdi + 0x208]
lea r12d, [rax + 3]
mov ecx, 1
lea rbx, [rsi + 8]
mov r14d, eax
lea r15d, [rcx + 1]
cmp dword [rbx], eax
je 0x18002557a
mov eax, dword [rsi]
lea rdx, [rbp + 0x220]
mov r8d, 4
mov dword [rbp + 0x220], eax
lea rcx, [rsp + 0x20]
call fcn.180031fbc
mov eax, r14d
lea rdx, [rbp + 0x220]
neg eax
mov r8d, 1
sbb cl, cl
and cl, 0x20
add cl, 0x20
mov byte [rbp + 0x220], cl
lea rcx, [rsp + 0x20]
call fcn.180031fbc
mov eax, dword [rbx]
lea rdx, [rbp + 0x220]
mov r8d, 4
mov dword [rbp + 0x220], eax
lea rcx, [rsp + 0x20]
call fcn.180031fbc
xor eax, eax
lea ecx, [rax + 1]
add r14d, ecx
add rbx, 0x40
sub r15, rcx
jne 0x180025509
add rsi, 0x88
lea r14d, [r15 + 1]
sub r12, r14
jne 0x1800254f9
lea rcx, [rsp + 0x20]
call fcn.180032844
mov r13, qword [rsp + 0x50]
test eax, eax
je 0x1800255df
mov r8d, r14d
mov byte [rbp + 0x220], 0x13
lea rdx, [rbp + 0x220]
lea rcx, [rbp - 0x58]
call fcn.180031fbc
lea rdx, [rsp + 0x20]
lea rcx, [rbp - 0x58]
call fcn.18001d4c8
lea rcx, [rsp + 0x20]
call fcn.1800327cc
mov r15, qword [rsp + 0x38]
mov rbx, qword [rdi]
mov edx, 0x7fffffff
mov rcx, qword [rbx + 0x498]
call fcn.180035770
mov rdx, qword [rbx + 0x498]
lea rcx, [rbp - 0x80]
mov r8d, eax
call fcn.18003f544
lea rcx, [rbp - 0x80]
call fcn.180032844
xor edx, edx
lea rcx, [rbp - 0x80]
mov ebx, eax
call fcn.180031fb0
mov rdx, rax
lea rcx, [rsp + 0x20]
mov r8d, ebx
call fcn.180031fbc
lea rcx, [rbp - 0x80]
call fcn.180031efc
mov eax, dword [r15]
lea rdx, [rbp + 0x220]
mov ebx, 4
mov dword [rbp + 0x220], eax
mov r8d, ebx
lea rcx, [rsp + 0x20]
call fcn.180031fbc
xor ecx, ecx
call fcn.18003134c
mov ecx, eax
call fcn.180031014
mov r8d, ebx
mov dword [rsp + 0x40], eax
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x20]
call fcn.180031fbc
mov rax, qword [rdi]
lea r8, [rsp + 0x20]
lea rdx, [rbp + 0x10]
mov rcx, qword [rax + 0x118]
call fcn.1800407ec
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.180031f08
lea rcx, [rbp + 0x10]
call fcn.180031efc
mov rax, qword [rdi]
lea r8, [rsp + 0x20]
lea rdx, [rbp + 0x10]
mov rcx, qword [rax + 0x118]
call fcn.180041398
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.180031f08
lea rcx, [rbp + 0x10]
call fcn.180031efc
mov r8d, r14d
mov byte [rbp + 0x220], 0x64
lea rdx, [rbp + 0x220]
lea rcx, [rbp - 0x58]
call fcn.180031fbc
lea rdx, [rsp + 0x20]
lea rcx, [rbp - 0x58]
call fcn.18001d4c8
lea rcx, [rsp + 0x20]
call fcn.1800327cc
cmp byte [rbp + 0x210], r14b
jne 0x180025a82
lea rcx, [rbp + 0xa0]
call fcn.180032388
test al, al
jne 0x180025a82
mov r13d, dword [rsp + 0x48]
lea rcx, [rbp + 0xa0]
call fcn.18003246c
lea rdx, [rbp + 0x10]
mov bl, al
lea rcx, [rbp + 0xa0]
call fcn.18001d8cc
cmp bl, 0xf
jne 0x180025a60
test r13b, r13b
jne 0x180025a60
lea rcx, [rbp + 0x10]
call fcn.180032490
lea rcx, [rbp + 0x10]
mov dword [rbp + 0x210], eax
mov r15d, eax
call fcn.18003246c
or ebx, 0xffffffff
movzx ecx, al
cmp ecx, 0x40
cmove ebx, r14d
cmp ecx, 0x20
cmove ebx, r12d
cmp ebx, 0xffffffff
je 0x180025a60
mov rax, r12
movsxd rsi, ebx
mov qword [rbp + 0x220], rax
mov r14d, r12d
mov ecx, 1
cmp dword [r12 + rdi + 0x208], r15d
jne 0x18002588b
lea rdx, [rdi + 0xb0]
lea rcx, [rbp + 0x110]
call fcn.180036464
mov r15, rsi
shl r15, 6
lea rax, [r12 + r15]
cmp dword [rax + rdi + 0x210], 0
je 0x180025813
movsxd rax, r14d
imul rcx, rax, 0x88
lea rax, [rdi + 0x218]
add rcx, r15
add rax, rcx
mov rcx, rax
mov qword [rsp + 0x38], rax
call fcn.180032388
test al, al
je 0x1800258ae
mov edx, 0x19
lea rcx, [rbp + 0x130]
call fcn.180031918
xor r8d, r8d
lea rcx, [rbp - 0x80]
mov rdx, qword [rax]
call fcn.1800360e4
mov rcx, rax
call fcn.180036994
lea rcx, [rbp - 0x80]
call fcn.1800367e0
lea rcx, [rbp + 0x130]
call fcn.180032a74
movsxd rax, r14d
imul rcx, rax, 0x88
add rcx, 0x218
add rcx, r15
add rcx, rdi
call fcn.180032388
lea rcx, [rbp + 0x110]
call fcn.180036860
mov rax, qword [rbp + 0x220]
mov ecx, 1
mov r15d, dword [rbp + 0x210]
add rax, rcx
add r14d, ecx
add r12, 0x88
mov qword [rbp + 0x220], rax
cmp r14d, 3
jge 0x180025a25
jmp 0x1800257b1
mov eax, dword [rbp + 0x210]
lea rdx, [rbp + 0x210]
mov r15d, 4
mov dword [rbp + 0x210], eax
mov r8d, r15d
lea rcx, [rsp + 0x20]
call fcn.180031fbc
neg ebx
lea r8d, [r15 - 3]
lea rdx, [rbp + 0x210]
sbb al, al
lea rcx, [rsp + 0x20]
and al, 0x20
add al, 0x20
mov byte [rbp + 0x210], al
call fcn.180031fbc
imul r12, qword [rbp + 0x220], 0x88
mov rax, rsi
lea rdx, [rbp + 0x210]
shl rax, 6
lea rcx, [rsp + 0x20]
add rax, r12
mov r8d, r15d
mov eax, dword [rax + rdi + 0x210]
mov dword [rbp + 0x210], eax
call fcn.180031fbc
mov rcx, qword [rsp + 0x38]
call fcn.180032844
mov rcx, qword [rsp + 0x38]
xor edx, edx
mov ebx, eax
call fcn.180031fb0
mov rdx, rax
lea rcx, [rbp - 0x80]
mov r8d, ebx
call fcn.18003f544
lea rcx, [rbp - 0x80]
call fcn.180032844
xor edx, edx
lea rcx, [rbp - 0x80]
mov ebx, eax
call fcn.180031fb0
mov rdx, rax
lea rcx, [rsp + 0x20]
mov r8d, ebx
call fcn.180031fbc
lea rcx, [rbp - 0x80]
call fcn.180031efc
test r14d, r14d
jne 0x180025a19
mov rcx, rsi
shl rcx, 6
lea rax, [rcx + r12]
inc dword [rax + rdi + 0x248]
cmp dword [rax + rdi + 0x248], 0x64
jne 0x180025a19
lea rbx, [rcx + rdi]
add rcx, 0x218
add rcx, rdi
lea rdx, [rbx + 0x230]
call fcn.180031f08
lea rcx, [rbx + 0x230]
call fcn.1800327cc
shl rsi, 6
lea edx, [r15 + 0x15]
add rsi, r12
lea rcx, [rbp + 0x140]
and dword [rsi + rdi + 0x248], r14d
call fcn.180031918
xor r8d, r8d
lea rcx, [rbp - 0x80]
mov rdx, qword [rax]
call fcn.1800360e4
mov rcx, rax
call fcn.180036994
lea rcx, [rbp - 0x80]
call fcn.1800367e0
lea rcx, [rbp + 0x140]
call fcn.180032a74
lea rcx, [rbp + 0x110]
call fcn.180036860
mov r14d, 1
mov byte [rbp + 0x210], 0x14
mov r8d, r14d
lea rdx, [rbp + 0x210]
lea rcx, [rbp - 0x58]
call fcn.180031fbc
lea rdx, [rsp + 0x20]
lea rcx, [rbp - 0x58]
call fcn.18001d4c8
lea rcx, [rsp + 0x20]
call fcn.1800327cc
xor r12d, r12d
lea rcx, [rbp + 0x10]
call fcn.180031efc
lea rcx, [rbp + 0xa0]
call fcn.180032388
test al, al
je 0x180025734
mov r13, qword [rsp + 0x50]
lea rcx, [rbp - 0x58]
call fcn.180032388
test al, al
je 0x180025ac9
mov r8d, r14d
mov byte [rbp + 0x210], r12b
lea rdx, [rbp + 0x210]
lea rcx, [rbp - 0x58]
call fcn.180031fbc
xor edx, edx
lea rcx, [rbp + 0x10]
call fcn.180031e70
mov rdx, rax
lea rcx, [rbp - 0x58]
call fcn.18001d4c8
lea rcx, [rbp + 0x10]
call fcn.180031efc
lea rdx, [rbp - 0x58]
lea rcx, [rbp + 0x40]
call fcn.18001e0e4
lea rcx, [rsp + 0x20]
call fcn.180031efc
lea rcx, [rsp + 0x58]
call fcn.180032a74
lea rcx, [rbp - 0x40]
call fcn.180031efc
lea rcx, [rbp - 0x58]
call fcn.180031efc
lea rcx, [rbp + 0xb8]
call fcn.180031efc
lea rcx, [rbp + 0xa0]
call fcn.180031efc
lea rcx, [rbp + 0xf8]
call fcn.180031efc
lea rcx, [rbp + 0x160]
call fcn.180031efc
lea rcx, [rbp + 0xd0]
call fcn.180031efc
jmp 0x180025c1d
cmp dword [rbp + 0x78], r12d
je 0x180025b4d
lea rcx, [rsp + 0x68]
jmp 0x180025059
mov rax, qword [rdi]
cmp dword [rax + 0x538], r12d
je 0x180025b43
lea rcx, [rbp + 0xd0]
call fcn.18003d9b4
mov rdx, qword [rdi]
lea rcx, [rbp + 0xd0]
add rdx, 0x538
call fcn.18003dfd8
test al, al
jne 0x180025bd3
mov edx, 0x19
lea rcx, [rbp + 0x150]
call fcn.180031918
xor r8d, r8d
lea rcx, [rbp + 0x160]
mov rdx, qword [rax]
call fcn.1800360e4
mov rcx, rax
call fcn.180036994
lea rcx, [rbp + 0x160]
call fcn.1800367e0
lea rcx, [rbp + 0x150]
call fcn.180032a74
lea rcx, [rbp + 0xd0]
call fcn.18003da50
jmp 0x180025b43
lea rcx, [rbp - 8]
call fcn.180032844
xor edx, edx
lea rcx, [rbp - 8]
mov ebx, eax
call fcn.180031fb0
mov rdx, rax
lea rcx, [rbp + 0xd0]
mov r8d, ebx
call fcn.18003e750
mov r8d, 0x1e
lea rdx, [rbp + 0xd0]
lea rcx, [rbp + 0x60]
call fcn.18003e864
lea rcx, [rbp + 0xd0]
call fcn.18003da50
lea rcx, [rsp + 0x68]
call fcn.180031efc
lea rcx, [rbp + 0x88]
call fcn.180031efc
lea rcx, [rbp - 8]
call fcn.180031efc
lea rcx, [rbp + 0x40]
call fcn.18001d3b8
lea rcx, [rbp - 0x18]
call fcn.180032a74
lea rcx, [rbp + 0x60]
call fcn.18003da50
mov rbx, qword [rbp + 0x218]
mov rcx, r13
call fcn.180036b24
mov rcx, qword [rdi]
xor r9d, r9d
add rcx, 0x348
mov r8, r13
mov edx, 0x927c0
call fcn.180036bfc
test eax, eax
jne 0x180024fc1
mov rcx, r13
call fcn.180036994
xor eax, eax
add rsp, 0x2c8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret