Function at 0x4dfe90
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov r15d, r8d
mov r13, rdx
mov r12, rcx
mov rsi, qword [rdx + 0x18]
mov eax, dword [rcx + 0x34]
mov qword [rsp + 0x50], rax
lea eax, [rax + 2]
mov dword [rcx + 0x34], eax
mov rax, qword [rcx]
mov rdx, qword [rdx + 0x30]
mov r9, qword [rax + 0x20]
test rdx, rdx
je 0x4dfef5
lea rbx, [r9 + 0x18]
mov ebp, 0xffffffff
xor edi, edi
nop word [rax + rax]
add rdi, 1
add ebp, 1
lea rcx, [rbx + 0x20]
cmp qword [rbx], rdx
mov rbx, rcx
jne 0x4dfee0
jmp 0x4dfefa
mov ebp, 0xffff8000
movsxd rbx, ebp
shl rbx, 5
mov rdi, qword [rax + 0x1f8]
test rdi, rdi
je 0x4dff25
cmp byte [rax + 0xc5], 0
jne 0x4dff25
cmp byte [r12 + 0x124], 0
je 0x4e01d3
cmp ebp, 1
je 0x4dff56
mov rax, qword [r12]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + rbx + 8]
cmp byte [rax + 0x11], 0
je 0x4dff56
mov r8d, dword [rsi + 0x28]
mov rax, qword [rsi]
mov qword [rsp + 0x20], rax
mov rcx, r12
mov edx, ebp
mov r9b, 1
call fcn.004c63a0
mov rcx, r12
call fcn.004c6120
test rax, rax
je 0x4e0a7b
mov rdi, rax
mov eax, r15d
test r15d, r15d
jns 0x4dff76
mov eax, dword [r13 + 0x58]
mov dword [rsp + 0x4c], eax
mov rcx, r12
mov rdx, r13
call fcn.004c65a0
mov ecx, dword [r12 + 0x34]
mov qword [rsp + 0x40], rcx
add ecx, 1
mov dword [r12 + 0x34], ecx
movzx ecx, word [r13 + 0x5e]
test rax, rax
je 0x4dffa4
add dword [rax], 1
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], ecx
mov dword [rsp + 0x30], 0xfffffff8
mov rcx, rdi
mov edx, 0x77
mov r8, qword [rsp + 0x40]
xor r9d, r9d
call fcn.004c62a0
mov r14, qword [r12 + 0x10]
cmp ebp, 1
je 0x4e0005
mov rax, qword [r12]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + rbx + 8]
cmp byte [rax + 0x11], 0
je 0x4e0005
mov r8d, dword [rsi + 0x28]
mov rax, qword [rsi]
mov qword [rsp + 0x20], rax
mov rcx, r12
mov edx, ebp
xor r9d, r9d
call fcn.004c63a0
cmp byte [rsi + 0x30], 0
js 0x4e0073
mov r9d, dword [rsi + 0x28]
movsx esi, word [rsi + 0x38]
mov eax, dword [r14 + 0x90]
cmp dword [r14 + 0x94], eax
mov rbx, qword [rsp + 0x50]
jle 0x4e00e3
movsxd rcx, eax
lea edx, [rcx + 1]
mov dword [r14 + 0x90], edx
mov rdx, qword [r14 + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x70
mov dword [rdx + rcx*8 + 4], ebx
mov dword [rdx + rcx*8 + 8], r9d
mov dword [rdx + rcx*8 + 0xc], ebp
mov qword [rdx + rcx*8 + 0x10], 0
mov rcx, qword [r14]
cmp byte [rcx + 0x67], 0
jne 0x4e0173
jmp 0x4e0100
add rsi, 0x10
nop word [rax + rax]
mov rbx, qword [rsi]
mov eax, dword [rbx + 0x64]
mov ecx, eax
xor ecx, 0xfffffffc
and ecx, eax
lea rsi, [rbx + 0x28]
cmp ecx, 2
jne 0x4e0080
mov r9d, dword [rbx + 0x58]
movsxd rax, dword [r14 + 0x90]
cmp dword [r14 + 0x94], eax
jle 0x4e0129
lea ecx, [rax + 1]
mov dword [r14 + 0x90], ecx
mov rcx, qword [r14 + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x70
mov rdx, qword [rsp + 0x50]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], ebp
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x4e013f
mov dword [rsp + 0x20], ebp
mov rcx, r14
mov edx, 0x70
mov r8d, ebx
call fcn.0047df60
mov rcx, qword [r14]
cmp byte [rcx + 0x67], 0
jne 0x4e0173
mov rcx, qword [r14 + 0x88]
cdqe
lea rax, [rax + rax*2]
mov byte [rcx + rax*8 + 1], 0xfd
mov dword [rcx + rax*8 + 0x10], esi
mov esi, dword [rdi + 0x90]
cmp dword [rdi + 0x94], esi
jg 0x4e0185
jmp 0x4e0257
mov dword [rsp + 0x20], ebp
mov rcx, r14
mov edx, 0x70
mov r8, qword [rsp + 0x50]
call fcn.0047df60
mov rsi, qword [r12 + 0x10]
mov rcx, r12
mov rdx, rbx
call fcn.004c65a0
test rax, rax
mov rbx, qword [rsp + 0x50]
je 0x4e0173
mov rcx, qword [rsi]
cmp byte [rcx + 0x67], 0
je 0x4e0224
mov edx, 0xfffffff8
mov r8, rax
call fcn.00444fc0
mov esi, dword [rdi + 0x90]
cmp dword [rdi + 0x94], esi
jle 0x4e0257
movsxd rax, esi
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x23
mov dword [rcx + rax*8 + 4], ebx
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
mov al, byte [r12 + 0x1f]
test al, al
je 0x4e0281
add al, 0xff
mov byte [r12 + 0x1f], al
movzx eax, al
mov r14d, dword [r12 + rax*4 + 0xd8]
jmp 0x4e028f
mov r8, qword [r13]
mov rdx, qword [r9 + rbx]
mov rcx, qword [rax + 0x200]
mov rax, qword [r12 + 0x168]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rdx
mov edx, 0x1b
xor r9d, r9d
call rdi
cmp eax, 1
jne 0x4e0a8c
lea rdx, [0x005ff140]
mov rcx, r12
call fcn.00419aa0
mov dword [r12 + 0x18], 0x17
jmp 0x4e0a7b
mov rcx, qword [rsi + 0x88]
mov edx, dword [rsi + 0x90]
add edx, 0xffffffff
movsxd rdx, edx
lea rdx, [rdx + rdx*2]
mov byte [rcx + rdx*8 + 1], 0xf8
mov qword [rcx + rdx*8 + 0x10], rax
mov esi, dword [rdi + 0x90]
cmp dword [rdi + 0x94], esi
jg 0x4e0185
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x23
mov r8d, ebx
xor r9d, r9d
call fcn.0047df60
mov esi, eax
mov al, byte [r12 + 0x1f]
test al, al
jne 0x4e01bc
mov r14d, dword [r12 + 0x38]
add r14d, 1
mov dword [r12 + 0x38], r14d
mov rax, qword [r12 + 0xa0]
test rax, rax
cmove rax, r12
mov byte [rax + 0x20], 1
lea rax, [rsp + 0x5c]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x20], 0
mov rcx, r12
mov rdx, r13
mov r8d, ebx
mov r9d, r14d
call fcn.004e0ee0
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4e032b
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x8b
mov rdx, qword [rsp + 0x40]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], r14d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov r8d, dword [rsp + 0x5c]
test r8d, r8d
jne 0x4e0352
jmp 0x4e0376
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x8b
mov r8, qword [rsp + 0x40]
mov r9d, r14d
call fcn.0047df60
mov r8d, dword [rsp + 0x5c]
test r8d, r8d
je 0x4e0376
mov rdx, qword [r12 + 0x10]
mov rcx, qword [rdx + 0x18]
not r8d
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x4e03c0
mov eax, dword [rdx + 0x90]
mov rcx, qword [rcx + 0x50]
movsxd rdx, r8d
mov dword [rcx + rdx*4], eax
lea r9d, [rsi + 1]
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4e03d8
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x26
mov dword [rcx + rax*8 + 4], ebx
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x4e03f0
call fcn.004d3e00
lea r9d, [rsi + 1]
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jg 0x4e0389
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x26
mov r8d, ebx
call fcn.0047df60
mov eax, dword [rdi + 0x90]
mov rcx, qword [rdi]
cmp byte [rcx + 0x67], 0
mov r9d, dword [rsp + 0x4c]
je 0x4e041c
lea rcx, [0x0213b3e8]
lea esi, [rbx + 1]
mov dword [rcx + 8], eax
test r15d, r15d
jns 0x4e04a3
jmp 0x4e0441
lea ecx, [rax - 1]
test esi, esi
cmovns ecx, esi
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
add rcx, qword [rdi + 0x88]
lea esi, [rbx + 1]
mov dword [rcx + 8], eax
test r15d, r15d
jns 0x4e04a3
cmp dword [rdi + 0x94], eax
jle 0x4e0483
movsxd rcx, eax
add eax, 1
mov dword [rdi + 0x90], eax
mov rax, qword [rdi + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rax + rcx*8], 0x91
mov dword [rax + rcx*8 + 4], r9d
mov dword [rax + rcx*8 + 8], ebp
mov dword [rax + rcx*8 + 0xc], 0
mov qword [rax + rcx*8 + 0x10], 0
jmp 0x4e04a3
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x91
mov r8d, r9d
mov r9d, ebp
call fcn.0047df60
mov r9d, dword [rsp + 0x4c]
mov rax, qword [rsp + 0x60]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], ebp
mov dword [rsp + 0x30], 0xfffffff8
mov rcx, rdi
mov edx, 0x71
mov r8d, esi
call fcn.004c62a0
movsxd rbp, dword [rdi + 0x90]
test rbp, rbp
jle 0x4e0509
shr r15d, 0x1b
mov eax, r15d
xor eax, 0xf
and eax, r15d
mov ecx, eax
not ecx
and ecx, 0x3381
and eax, 0xfffffffe
or eax, ecx
xor eax, 0x3390
mov rcx, qword [rdi + 0x88]
lea edx, [rbp - 1]
lea rdx, [rdx + rdx*2]
mov word [rcx + rdx*8 + 2], ax
cmp dword [rdi + 0x94], ebp
jle 0x4e05d9
lea eax, [rbp + 1]
mov dword [rdi + 0x90], eax
mov rax, qword [rdi + 0x88]
lea rcx, [rbp*2]
add rcx, rbp
mov dword [rax + rcx*8], 0x21
mov rdx, qword [rsp + 0x40]
mov dword [rax + rcx*8 + 4], edx
xorps xmm0, xmm0
movups xmmword [rax + rcx*8 + 8], xmm0
cmp byte [r13 + 0x62], 0
je 0x4e0603
mov dword [rsp + 0x4c], esi
mov esi, dword [rdi + 0x90]
cmp dword [rdi + 0x94], esi
jle 0x4e0649
movsxd rax, esi
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
movaps xmm0, xmmword [0x005fa770]
movups xmmword [rcx + rax*8], xmm0
mov qword [rcx + rax*8 + 0x10], 0
mov r15d, dword [rdi + 0x90]
movzx ebx, word [r13 + 0x5e]
cmp dword [rdi + 0x94], r15d
jg 0x4e0682
mov dword [rsp + 0x20], r14d
mov rcx, rdi
mov edx, 0x84
mov r8, qword [rsp + 0x40]
mov r9d, esi
call fcn.0047df60
mov rcx, qword [rdi]
cmp byte [rcx + 0x67], 0
jne 0x4e06dd
jmp 0x4e06c7
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x21
mov r8, qword [rsp + 0x40]
xor r9d, r9d
call fcn.0047df60
mov ebp, eax
cmp byte [r13 + 0x62], 0
jne 0x4e0553
mov rax, qword [r12 + 0xa0]
test rax, rax
cmove rax, r12
mov byte [rax + 0x21], 1
mov eax, dword [rdi + 0x90]
mov r15d, eax
cmp dword [rdi + 0x94], eax
jg 0x4e0737
mov dword [rsp + 0x20], esi
mov rcx, rdi
mov edx, 0x85
mov r8, qword [rsp + 0x40]
mov r9d, r14d
call fcn.0047df60
jmp 0x4e076f
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 8
xor r8d, r8d
mov r9d, 1
call fcn.0047df60
mov esi, eax
mov r15d, dword [rdi + 0x90]
movzx ebx, word [r13 + 0x5e]
cmp dword [rdi + 0x94], r15d
jle 0x4e05ad
movsxd rax, r15d
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x84
mov rdx, qword [rsp + 0x40]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], esi
mov dword [rcx + rax*8 + 0xc], r14d
mov qword [rcx + rax*8 + 0x10], 0
mov eax, r15d
mov rcx, qword [rdi]
cmp byte [rcx + 0x67], 0
jne 0x4e06dd
mov rcx, qword [rdi + 0x88]
cdqe
lea rax, [rax + rax*2]
mov byte [rcx + rax*8 + 1], 0xfd
mov dword [rcx + rax*8 + 0x10], ebx
mov rcx, r12
mov edx, 2
mov r8, r13
call fcn.004e13c0
mov eax, dword [rdi + 0x90]
mov rcx, qword [rdi]
cmp byte [rcx + 0x67], 0
je 0x4e0705
lea rcx, [0x0213b3e8]
jmp 0x4e071f
lea ecx, [rax - 1]
test esi, esi
cmovns ecx, esi
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
add rcx, qword [rdi + 0x88]
mov rbx, qword [rsp + 0x50]
mov esi, dword [rsp + 0x4c]
mov dword [rcx + 8], eax
cmp dword [rdi + 0x94], eax
jle 0x4e062b
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
cdqe
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x85
mov rdx, qword [rsp + 0x40]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], r14d
mov dword [rcx + rax*8 + 0xc], esi
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [r13 + 0x64]
not eax
or eax, 0xfffffdff
cmp eax, 0xffffffff
jne 0x4e07b5
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4e0805
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x89
mov dword [rcx + rax*8 + 4], esi
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4e082f
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x8a
mov dword [rcx + rax*8 + 4], esi
mov dword [rcx + rax*8 + 8], r14d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [rdi + 0x90]
test eax, eax
jg 0x4e0854
jmp 0x4e0869
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x89
mov r8d, esi
xor r9d, r9d
call fcn.0047df60
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jg 0x4e07c4
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x8a
mov r8d, esi
mov r9d, r14d
call fcn.0047df60
mov eax, dword [rdi + 0x90]
test eax, eax
jle 0x4e0869
mov rcx, qword [rdi + 0x88]
lea edx, [rax - 1]
lea rdx, [rdx + rdx*2]
mov word [rcx + rdx*8 + 2], 0x10
test r14d, r14d
je 0x4e0890
movzx ecx, byte [r12 + 0x1f]
cmp rcx, 7
ja 0x4e0890
lea eax, [rcx + 1]
mov byte [r12 + 0x1f], al
mov dword [r12 + rcx*4 + 0xd8], r14d
mov eax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4e098e
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
cdqe
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x24
mov rdx, qword [rsp + 0x40]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], r15d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [rdi + 0x90]
mov rcx, qword [rdi]
cmp byte [rcx + 0x67], 0
je 0x4e09be
lea rcx, [0x0213b3e8]
mov dword [rcx + 8], eax
cmp dword [rdi + 0x94], eax
jle 0x4e09e7
movsxd rcx, eax
add eax, 1
mov dword [rdi + 0x90], eax
mov rax, qword [rdi + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rax + rcx*8], 0x7a
mov dword [rax + rcx*8 + 4], ebx
xorps xmm0, xmm0
movups xmmword [rax + rcx*8 + 8], xmm0
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jg 0x4e0a15
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x7a
mov r8d, esi
xor r9d, r9d
call fcn.0047df60
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jg 0x4e0a4f
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x7a
mov r8, qword [rsp + 0x40]
xor r9d, r9d
call fcn.0047df60
jmp 0x4e0a7b
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x24
mov r8, qword [rsp + 0x40]
mov r9d, r15d
call fcn.0047df60
mov eax, dword [rdi + 0x90]
mov rcx, qword [rdi]
cmp byte [rcx + 0x67], 0
jne 0x4e08eb
lea ecx, [rax - 1]
test ebp, ebp
cmovns ecx, ebp
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
add rcx, qword [rdi + 0x88]
mov dword [rcx + 8], eax
cmp dword [rdi + 0x94], eax
jg 0x4e0901
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x7a
mov r8d, ebx
xor r9d, r9d
call fcn.0047df60
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4e093e
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x7a
mov dword [rcx + rax*8 + 4], esi
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4e096c
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x7a
mov rdx, qword [rsp + 0x40]
mov dword [rcx + rax*8 + 4], edx
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, eax
xor ecx, 2
test ecx, eax
je 0x4e0aaf
lea rdx, [0x00602fdd]
mov rcx, r12
call fcn.00419aa0
mov dword [r12 + 0x18], 1
jmp 0x4e0a7b
test eax, eax
jne 0x4e0a7b
jmp 0x4dff25