Function at 0x513950
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x98
mov qword [rsp + 0x60], r9
mov r14, r8
mov dword [rsp + 0x38], edx
mov r15, rcx
mov rdi, qword [rsp + 0x100]
call fcn.004c6120
mov rbx, rax
mov r12d, dword [r15 + 0x34]
mov esi, dword [r15 + 0x44]
lea ebp, [rsi - 1]
mov dword [r15 + 0x44], ebp
cmp dword [rsp + 0x118], 0
jns 0x5139fe
movzx r8d, byte [rdi + 0x2c]
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x5139e6
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x30
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], ebp
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x5139fe
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x30
mov r9d, ebp
call fcn.0047df60
mov qword [rsp + 0x90], rsi
mov eax, dword [rsp + 0x120]
mov r13d, dword [rdi + 0x28]
test r13d, r13d
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x40], r15
mov dword [rsp + 0x3c], ebp
mov qword [rsp + 0x50], r14
jle 0x513c85
mov dword [rsp + 0x4c], r12d
movabs r14, 0x7e0dff2631f05bfb
mov eax, dword [rsp + 0x110]
lea r12d, [rax + 1]
xor r15d, r15d
jmp 0x513a96
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x32
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], ebp
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
add r15, 1
movsxd r13, dword [rdi + 0x28]
cmp r15, r13
jge 0x513c6f
mov r8, qword [rdi]
mov rax, qword [rsp + 0x108]
mov esi, dword [rax + r15*4]
mov eax, dword [r8 + 0x30]
mov ecx, eax
xor ecx, 0xffffffdf
test ecx, eax
je 0x513c2c
test si, si
js 0x513c2c
mov r11, qword [r8 + 8]
movzx eax, word [r11 + 0x12]
and eax, 0x20
test si, si
je 0x513b10
mov ecx, esi
shl ecx, 0x10
movsx r9d, si
test r9d, r9d
mov edx, 1
cmovle r9d, edx
movabs rdx, 0xfcfc8a15d6c4ae54
mov r10d, edx
not r10d
or r10d, edx
and r10d, r9d
and r10d, 1
cmp ecx, 0x20000
jge 0x513b23
xor edx, edx
xor esi, esi
jmp 0x513bdf
xor r9d, r9d
xor esi, esi
test ax, ax
jne 0x513c21
jmp 0x513c2c
mov r13d, r9d
xor r13d, 0x80000001
and r13d, r9d
xor edx, edx
xor ebx, ebx
nop word cs:[rax + rax]
nop
movzx eax, ax
shr eax, 5
mov esi, eax
not esi
and esi, 1
and eax, 0xfffffffe
or eax, esi
add ebx, eax
mov rdi, rdx
not rdi
mov rax, r14
not rax
mov rsi, rdi
and rsi, r14
mov rbp, rdx
and rbp, rax
or rbp, rsi
mov rsi, r14
and rsi, 0xfffffffffffffffe
mov ecx, eax
and ecx, 1
or rcx, rsi
xor rcx, rbp
not edi
or eax, r14d
and eax, edi
and eax, 1
or rax, rcx
lea rax, [rax + rax*2]
movzx eax, word [r11 + rax*8 + 0x12]
shr eax, 5
mov esi, eax
xor esi, 0x7fe
and esi, eax
mov eax, esi
not eax
and eax, 0x28ef
and esi, 0x710
or esi, eax
xor esi, 0x28ee
add esi, ebx
add rdx, 2
lea rax, [rdx + rdx*2]
movzx ecx, word [r11 + rax*8 + 0x12]
mov eax, ecx
xor eax, 0xffffffdf
and eax, ecx
mov ebx, esi
add r13, 0xfffffffffffffffe
jne 0x513b40
test r10, r10
mov rbx, qword [rsp + 0x70]
je 0x513c10
lea rcx, [rdx + rdx*2]
movzx ecx, word [r11 + rcx*8 + 0x2a]
movzx eax, ax
mov edx, ecx
xor edx, 0xffffffdf
and edx, ecx
shr eax, 5
mov ecx, eax
not ecx
and ecx, 1
and eax, 0xfffffffe
or eax, ecx
add esi, eax
mov eax, edx
mov rdi, qword [rsp + 0x100]
mov ebp, dword [rsp + 0x3c]
test ax, ax
je 0x513c2c
sub r9d, esi
add r9w, word [r8 + 0x38]
mov esi, r9d
movsx r8d, si
add r8d, r12d
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jg 0x513a50
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x32
mov r9d, ebp
call fcn.0047df60
add r15, 1
movsxd r13, dword [rdi + 0x28]
cmp r15, r13
jl 0x513a96
mov r12d, dword [rsp + 0x4c]
mov r15, qword [rsp + 0x40]
mov r14, qword [rsp + 0x50]
mov eax, dword [rsp + 0x120]
add r12d, 0xffffffff
test eax, eax
je 0x513da9
movzx r8d, byte [rdi + 0x2c]
test r8d, r8d
mov rdi, qword [rsp + 0x90]
jne 0x513ce8
mov rax, qword [r15]
mov eax, dword [rax + 0x30]
not eax
or rax, 0xfffffffffff7ffff
cmp rax, 0xffffffffffffffff
jne 0x513ccc
cmp qword [r15 + 0xa0], 0
jne 0x513ccc
cmp byte [r15 + 0x20], 0
je 0x51479e
cmp dword [rsp + 0x118], 0
jle 0x513ce8
mov rax, qword [r15 + 0xa0]
test rax, rax
cmove rax, r15
mov byte [rax + 0x21], 1
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x513d35
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x9e
mov dword [rcx + rax*8 + 4], r8d
mov edx, dword [rsp + 0x118]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x513d52
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x9e
mov r9d, dword [rsp + 0x118]
call fcn.0047df60
mov rcx, qword [rbx + 0x18]
neg edi
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x513ddd
mov eax, dword [rbx + 0x90]
mov rcx, qword [rcx + 0x50]
movsxd rdx, edi
mov dword [rcx + rdx*4], eax
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x513df7
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x7a
mov dword [rcx + rax*8 + 4], r12d
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
jmp 0x513e12
cmp qword [rsp + 0x60], 0
je 0x513e27
cmp r13d, 1
jne 0x513e42
mov al, byte [r15 + 0x1f]
test al, al
je 0x513ef6
add al, 0xff
mov byte [r15 + 0x1f], al
movzx eax, al
mov edx, dword [r15 + rax*4 + 0xd8]
jmp 0x513f01
mov rdx, rbx
mov r8d, edi
call fcn.004d3e00
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jg 0x513d7f
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x7a
mov r8d, r12d
xor r9d, r9d
call fcn.0047df60
nop
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov al, byte [r15 + 0x1f]
test al, al
je 0x513e73
add al, 0xff
mov byte [r15 + 0x1f], al
movzx eax, al
mov r13d, dword [r15 + rax*4 + 0xd8]
jmp 0x513e7f
mov eax, dword [r15 + 0x28]
sub eax, r13d
jge 0x513e5e
mov eax, dword [r15 + 0x38]
lea edx, [rax + 1]
add eax, r13d
mov dword [r15 + 0x38], eax
jmp 0x513f01
mov edx, dword [r15 + 0x2c]
lea ecx, [rdx + r13]
mov dword [r15 + 0x2c], ecx
mov dword [r15 + 0x28], eax
jmp 0x513f01
mov r13d, dword [r15 + 0x38]
add r13d, 1
mov dword [r15 + 0x38], r13d
mov r9, qword [rdi]
mov rax, qword [rsp + 0x108]
mov ebp, dword [rax]
mov eax, dword [r9 + 0x30]
mov ecx, eax
xor ecx, 0xffffffdf
test ecx, eax
mov dword [rsp + 0x58], r13d
je 0x514947
test bp, bp
js 0x514947
mov r14, qword [r9 + 8]
movzx eax, word [r14 + 0x12]
mov edi, eax
xor edi, 0xffffffdf
and edi, eax
test bp, bp
je 0x514794
mov r13d, r12d
mov eax, ebp
shl eax, 0x10
movsx ecx, bp
test ecx, ecx
mov r10d, 1
cmovg r10d, ecx
mov r8, r10
xor r8, 0xfffffffffffffffe
cmp eax, 0x20000
jge 0x514815
xor edx, edx
xor ebp, ebp
jmp 0x5148d3
mov edx, dword [r15 + 0x38]
add edx, 1
mov dword [r15 + 0x38], edx
mov qword [rsp + 0x68], rdx
mov rax, qword [rsp + 0x60]
mov r9d, dword [rax + 0x58]
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x513f56
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x70
mov dword [rcx + rax*8 + 4], r12d
mov dword [rcx + rax*8 + 8], r9d
mov edx, dword [rsp + 0x38]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x513f6e
mov eax, dword [rsp + 0x38]
mov dword [rsp + 0x20], eax
mov rcx, rbx
mov edx, 0x70
mov r8d, r12d
call fcn.0047df60
mov rsi, qword [r15 + 0x10]
mov rcx, r15
mov rdx, qword [rsp + 0x60]
call fcn.004c65a0
test rax, rax
je 0x513f9e
mov rcx, qword [rsi]
cmp byte [rcx + 0x67], 0
je 0x5145cf
mov edx, 0xfffffff8
mov r8, rax
call fcn.00444fc0
mov r10, qword [rdi]
test r13d, r13d
jle 0x5145fc
mov eax, dword [rsp + 0x110]
add eax, 1
mov dword [rsp + 0x38], eax
mov eax, r13d
mov qword [rsp + 0x58], rax
xor r15d, r15d
mov rdx, qword [rsp + 0x68]
jmp 0x514018
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x50
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
add r15, 1
mov r10, qword [rdi]
cmp r15, qword [rsp + 0x58]
je 0x5141d9
mov rax, qword [rsp + 0x108]
mov esi, dword [rax + r15*4]
mov eax, dword [r10 + 0x30]
not eax
or eax, 0xffffffdf
cmp eax, 0xffffffff
je 0x51418d
test si, si
js 0x51418d
mov r11, qword [r10 + 8]
movzx eax, word [r11 + 0x12]
mov edi, eax
xor edi, 0xffffffdf
and edi, eax
test si, si
je 0x514093
mov eax, esi
shl eax, 0x10
movsx r8d, si
test r8d, r8d
mov ecx, 1
cmovle r8d, ecx
movabs rcx, 0x2f6c2d7a4c9982b7
mov r9d, ecx
not r9d
or r9d, ecx
and r9d, r8d
and r9d, 1
cmp eax, 0x20000
jge 0x5140a6
xor ecx, ecx
xor esi, esi
jmp 0x514141
xor r8d, r8d
xor esi, esi
test di, di
jne 0x51417a
jmp 0x514185
movabs rax, 0x321a79aff9dfc97c
mov edx, eax
not edx
or edx, eax
and edx, r8d
and edx, 0x7ffffffe
lea rax, [r11 + 0x42]
xor ecx, ecx
xor ebx, ebx
mov rbp, rdx
nop word [rax + rax]
movzx esi, di
shr esi, 5
mov edi, esi
not edi
and edi, 1
and esi, 0xfffffffe
or esi, edi
add ebx, esi
mov esi, ecx
and esi, 1
mov rdi, rcx
xor rdi, 1
or rdi, rsi
lea rsi, [rdi + rdi*2]
movzx edi, word [r11 + rsi*8 + 0x12]
shr edi, 5
mov esi, edi
xor esi, 0x7fe
and esi, edi
mov edi, esi
not edi
and edi, 0xffffd8dd
and esi, 0x722
or esi, edi
xor esi, 0xffffd8dc
add esi, ebx
add rcx, 2
movzx ebx, word [rax]
mov edi, ebx
xor edi, 0xffffffdf
and edi, ebx
add rbp, 0xfffffffffffffffe
add rax, 0x30
mov ebx, esi
cmp rdx, rcx
jne 0x5140d0
test r9, r9
mov rbx, qword [rsp + 0x70]
mov rdx, qword [rsp + 0x68]
je 0x514171
lea rax, [rcx + rcx*2]
movzx ecx, di
movzx edi, word [r11 + rax*8 + 0x2a]
and edi, 0x20
shr ecx, 5
mov eax, ecx
not eax
and eax, 1
and ecx, 0xfffffffe
or ecx, eax
add esi, ecx
mov ebp, dword [rsp + 0x3c]
test di, di
je 0x514185
sub r8d, esi
add r8w, word [r10 + 0x38]
mov esi, r8d
mov rdi, qword [rsp + 0x100]
movsx r8d, si
add r8d, dword [rsp + 0x38]
lea r9d, [rdx + r15]
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jg 0x513fd0
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x50
call fcn.0047df60
mov rdx, qword [rsp + 0x68]
add r15, 1
mov r10, qword [rdi]
cmp r15, qword [rsp + 0x58]
jne 0x514018
cmp dword [rsp + 0x118], 1
mov r15, qword [rsp + 0x40]
jne 0x514681
cmp r10, r14
jne 0x514681
mov al, 1
test al, al
je 0x514681
mov r10d, dword [rbx + 0x90]
test r13d, r13d
jle 0x514618
mov dword [rsp + 0x4c], r12d
lea eax, [r10 + r13]
add eax, 1
mov dword [rsp + 0x7c], eax
xor r12d, r12d
mov r8, r14
nop word cs:[rax + rax]
nop
mov rax, qword [rsp + 0x108]
mov ebp, dword [rax + r12*4]
mov eax, dword [r8 + 0x30]
mov ecx, eax
xor ecx, 0xffffffdf
test ecx, eax
je 0x514381
test bp, bp
js 0x514381
mov r14, qword [r8 + 8]
movzx ecx, word [r14 + 0x12]
mov eax, ecx
xor eax, 0xffffffdf
and eax, ecx
mov r9, r10
test bp, bp
je 0x5142ae
mov ecx, ebp
shl ecx, 0x10
movsx r10d, bp
test r10d, r10d
mov edx, 1
cmovle r10d, edx
movabs rdx, 0x99c596a28d97cfe9
mov r11d, edx
not r11d
or r11d, edx
and r11d, r10d
and r11d, 1
cmp ecx, 0x20000
jge 0x5142c6
xor ecx, ecx
xor ebp, ebp
jmp 0x514330
xor r10d, r10d
xor ebp, ebp
mov r14, qword [rsp + 0x50]
test ax, ax
jne 0x514373
jmp 0x51437e
mov edi, r10d
xor edi, 0x80000001
and edi, r10d
lea rbx, [r14 + 0x42]
xor ecx, ecx
xor ebp, ebp
mov rdx, rdi
nop dword [rax]
movzx eax, ax
shr eax, 5
mov esi, eax
not esi
and esi, 1
and eax, 0xfffffffe
or eax, esi
add ebp, eax
mov eax, ecx
and eax, 1
mov rsi, rcx
xor rsi, 1
or rsi, rax
lea rax, [rsi + rsi*2]
movzx eax, byte [r14 + rax*8 + 0x12]
and al, 0x20
cmp al, 1
adc bp, 0
add rcx, 2
movzx esi, word [rbx]
mov eax, esi
xor eax, 0xffffffdf
and eax, esi
add rdx, 0xfffffffffffffffe
add rbx, 0x30
cmp rdi, rcx
jne 0x5142e0
test r11, r11
mov rbx, qword [rsp + 0x70]
je 0x514361
lea rcx, [rcx + rcx*2]
movzx ecx, word [r14 + rcx*8 + 0x2a]
movzx eax, ax
mov edx, ecx
xor edx, 0xffffffdf
and edx, ecx
shr eax, 5
mov ecx, eax
not ecx
and ecx, 1
and eax, 0xfffffffe
or eax, ecx
add ebp, eax
mov eax, edx
mov rdi, qword [rsp + 0x100]
mov r14, qword [rsp + 0x50]
test ax, ax
je 0x51437e
sub r10d, ebp
add r10w, word [r8 + 0x38]
mov ebp, r10d
mov r10, r9
movsx r8d, bp
mov rcx, qword [rsp + 0x60]
mov rax, qword [rcx + 8]
mov r11, qword [rcx + 0x18]
movzx r9d, word [rax + r12*2]
mov eax, dword [r11 + 0x30]
mov edx, eax
xor edx, 0xffffffdf
mov esi, r9d
test edx, eax
mov ebp, dword [rsp + 0x3c]
je 0x514509
mov esi, r9d
test r9w, r9w
js 0x514509
mov rax, qword [r11 + 8]
movzx edx, word [rax + 0x12]
mov edi, edx
xor edi, 0xffffffdf
and edi, edx
test r9w, r9w
je 0x514408
movsx r14d, r9w
test r14d, r14d
mov ecx, 1
cmovle r14d, ecx
mov rcx, r14
xor rcx, 0xfffffffffffffffe
cmp r9w, 2
mov qword [rsp + 0x88], r10
mov qword [rsp + 0x80], rcx
jge 0x51441b
xor edx, edx
xor esi, esi
jmp 0x5144a8
xor r14d, r14d
xor esi, esi
test di, di
jne 0x5144f1
jmp 0x5144fc
movabs rcx, 0xefd1bf595803dc81
mov r10d, ecx
not r10d
or r10d, ecx
and r10d, r14d
and r10d, 0x7ffffffe
lea rbx, [rax + 0x42]
xor edx, edx
xor esi, esi
mov r15, r10
nop word cs:[rax + rax]
nop dword [rax]
movzx edi, di
shr edi, 5
mov ebp, edi
not ebp
and ebp, 1
and edi, 0xfffffffe
or edi, ebp
add esi, edi
mov edi, edx
and edi, 1
mov rbp, rdx
xor rbp, 1
or rbp, rdi
lea rdi, [rbp*2]
add rdi, rbp
movzx ecx, byte [rax + rdi*8 + 0x12]
and cl, 0x20
cmp cl, 1
adc si, 0
add rdx, 2
movzx ecx, word [rbx]
mov edi, ecx
xor edi, 0xffffffdf
and edi, ecx
add r15, 0xfffffffffffffffe
add rbx, 0x30
cmp r10, rdx
jne 0x514450
test dword [rsp + 0x80], r14d
je 0x5144d6
lea rcx, [rdx + rdx*2]
movzx eax, word [rax + rcx*8 + 0x2a]
movzx ecx, di
mov edi, eax
xor edi, 0xffffffdf
and edi, eax
shr ecx, 5
mov eax, ecx
not eax
and eax, 1
and ecx, 0xfffffffe
or ecx, eax
add esi, ecx
mov rbx, qword [rsp + 0x70]
mov r15, qword [rsp + 0x40]
mov ebp, dword [rsp + 0x3c]
mov r10, qword [rsp + 0x88]
test di, di
je 0x5144fc
sub r14d, esi
add r14w, word [r11 + 0x38]
mov esi, r14d
mov rdi, qword [rsp + 0x100]
mov r14, qword [rsp + 0x50]
mov ecx, dword [rsp + 0x38]
add r8d, ecx
movsx eax, si
add eax, ecx
cmp r9w, word [r14 + 0x34]
mov ecx, dword [rsp + 0x110]
cmove eax, ecx
cmp dword [rbx + 0x94], r10d
jle 0x514580
lea ecx, [r10 + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
movsxd rdx, r10d
lea rdx, [rdx + rdx*2]
mov dword [rcx + rdx*8], 0x34
mov dword [rcx + rdx*8 + 4], r8d
mov esi, dword [rsp + 0x7c]
mov dword [rcx + rdx*8 + 8], esi
mov dword [rcx + rdx*8 + 0xc], eax
mov qword [rcx + rdx*8 + 0x10], 0
mov r10d, dword [rbx + 0x90]
test r10d, r10d
jg 0x5145a2
jmp 0x5145b8
mov dword [rsp + 0x20], eax
mov rcx, rbx
mov edx, 0x34
mov r9d, dword [rsp + 0x7c]
call fcn.0047df60
mov r10d, dword [rbx + 0x90]
test r10d, r10d
jle 0x5145b8
mov rax, qword [rbx + 0x88]
lea ecx, [r10 - 1]
lea rcx, [rcx + rcx*2]
mov word [rax + rcx*8 + 2], 0x10
add r12, 1
cmp r12, qword [rsp + 0x58]
je 0x514658
mov r8, qword [rdi]
jmp 0x514230
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 r10, qword [rdi]
test r13d, r13d
jg 0x513faa
cmp dword [rsp + 0x118], 1
jne 0x514681
cmp r10, r14
jne 0x514681
mov al, 1
test al, al
je 0x514681
mov r10d, dword [rbx + 0x90]
cmp dword [rbx + 0x94], r10d
jle 0x514666
lea eax, [r10 + 1]
mov dword [rbx + 0x90], eax
mov rax, qword [rbx + 0x88]
movsxd rcx, r10d
lea rcx, [rcx + rcx*2]
mov qword [rax + rcx*8], 8
mov dword [rax + rcx*8 + 8], ebp
mov dword [rax + rcx*8 + 0xc], 0
mov qword [rax + rcx*8 + 0x10], 0
jmp 0x514681
mov r12d, dword [rsp + 0x4c]
cmp dword [rbx + 0x94], r10d
jg 0x514621
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 8
xor r8d, r8d
mov r9d, ebp
call fcn.0047df60
mov rcx, qword [r15]
mov rdx, qword [rsp + 0x60]
call fcn.00506680
mov dword [rsp + 0x30], r13d
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x60
mov rsi, qword [rsp + 0x68]
mov r8d, esi
mov r9d, r13d
call fcn.004c62a0
mov eax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x514705
movsxd rcx, eax
lea edx, [rcx + 1]
mov dword [rbx + 0x90], edx
mov rdx, qword [rbx + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x1c
mov dword [rdx + rcx*8 + 4], r12d
mov dword [rdx + rcx*8 + 8], ebp
mov dword [rdx + rcx*8 + 0xc], esi
mov qword [rdx + rcx*8 + 0x10], 0
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
jne 0x514725
jmp 0x51475b
mov dword [rsp + 0x20], esi
mov rcx, rbx
mov edx, 0x1c
mov r8d, r12d
mov r9d, ebp
call fcn.0047df60
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
je 0x51475b
cmp r13d, 1
mov rdx, qword [rsp + 0x68]
jne 0x51477d
test edx, edx
je 0x513c91
movzx eax, byte [r15 + 0x1f]
cmp rax, 7
ja 0x513c91
lea ecx, [rax + 1]
mov byte [r15 + 0x1f], cl
mov dword [r15 + rax*4 + 0xd8], edx
jmp 0x513c91
mov rcx, qword [rbx + 0x88]
cdqe
lea rax, [rax + rax*2]
mov byte [rcx + rax*8 + 1], 0xfd
mov dword [rcx + rax*8 + 0x10], r13d
cmp r13d, 1
mov rdx, qword [rsp + 0x68]
je 0x514730
cmp dword [r15 + 0x28], r13d
jge 0x513c91
mov dword [r15 + 0x28], r13d
mov dword [r15 + 0x2c], edx
jmp 0x513c91
xor r10d, r10d
xor ebp, ebp
jmp 0x51492a
mov rcx, r15
call fcn.004c6120
mov rsi, rax
mov rax, qword [r15 + 0xa0]
test rax, rax
cmove rax, r15
mov byte [rax + 0x21], 1
mov dword [rsp + 0x30], 0xffffffff
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 0x46
mov r8d, 0x313
mov r9d, 2
call fcn.004c62a0
mov eax, dword [rsi + 0x90]
test eax, eax
jle 0x513d52
mov rcx, qword [rsi + 0x88]
add eax, 0xffffffff
lea rax, [rax + rax*2]
mov word [rcx + rax*8 + 2], 4
jmp 0x513d52
movabs r11, 0xa6b3c9a5985ce22e
mov ecx, r10d
and ecx, 0x7ffffffe
xor edx, edx
mov r12, r11
not r12
mov r15, r11
and r15, 0xfffffffffffffffe
xor eax, eax
nop dword [rax]
movzx edi, di
shr edi, 5
mov ebp, edi
not ebp
and ebp, 1
and edi, 0xfffffffe
or edi, ebp
add eax, edi
mov rdi, rdx
not rdi
mov rbp, rdi
and rbp, r11
mov rsi, rdx
and rsi, r12
or rsi, rbp
mov ebx, r12d
and ebx, 1
or rbx, r15
xor rbx, rsi
not edi
mov esi, r11d
or esi, r12d
and esi, edi
and esi, 1
or rsi, rbx
lea rsi, [rsi + rsi*2]
movzx esi, word [r14 + rsi*8 + 0x12]
shr esi, 5
mov ebp, esi
xor ebp, 0x7fe
and ebp, esi
mov esi, ebp
not esi
and esi, 0x4291
and ebp, 0x56e
or ebp, esi
xor ebp, 0x4290
add ebp, eax
add rdx, 2
lea rax, [rdx + rdx*2]
movzx edi, word [r14 + rax*8 + 0x12]
and edi, 0x20
mov eax, ebp
add rcx, 0xfffffffffffffffe
jne 0x514840
test r8d, r10d
je 0x51491d
movabs rax, 0x8e3746c93a7c29ac
sub rdx, rax
lea rcx, [rdx + rdx*2]
lea rax, [rax + rax*2]
shl rax, 3
lea rax, [rax + rcx*8]
movzx ecx, di
movzx edi, word [r14 + rax + 0x2a]
and edi, 0x20
shr ecx, 5
mov eax, ecx
not eax
and eax, 0x6275
and ecx, 0x58a
or ecx, eax
xor ecx, 0x6274
add ebp, ecx
mov r12d, r13d
mov rbx, qword [rsp + 0x70]
mov r13d, dword [rsp + 0x58]
test di, di
mov r14, qword [rsp + 0x50]
je 0x51493f
sub r10d, ebp
add r10w, word [r9 + 0x38]
mov ebp, r10d
mov rdi, qword [rsp + 0x100]
movsx eax, bp
mov ecx, dword [rsp + 0x110]
lea r8d, [rcx + rax]
add r8d, 1
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x5149d2
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x51
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r13d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov ebp, dword [rsp + 0x3c]
mov r15d, dword [rbx + 0x90]
cmp dword [rbx + 0x94], r15d
jg 0x5149fe
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0xc
mov r8d, r13d
xor r9d, r9d
call fcn.0047df60
mov r15d, eax
jmp 0x514a29
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x51
mov r9d, r13d
call fcn.0047df60
mov ebp, dword [rsp + 0x3c]
mov r15d, dword [rbx + 0x90]
cmp dword [rbx + 0x94], r15d
jle 0x5149b2
movsxd rax, r15d
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0xc
mov dword [rcx + rax*8 + 4], r13d
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
mov esi, dword [rsp + 0x38]
cmp qword [rdi], r14
setne al
cmp dword [rsp + 0x118], 1
sete cl
cmp cl, al
je 0x514add
cmp dword [rsp + 0x118], 1
jne 0x514add
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x514a9d
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x35
mov edx, dword [rsp + 0x110]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], ebp
mov dword [rcx + rax*8 + 0xc], r13d
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x514abe
mov dword [rsp + 0x20], r13d
mov rcx, rbx
mov edx, 0x35
mov r8d, dword [rsp + 0x110]
mov r9d, ebp
call fcn.0047df60
mov esi, dword [rsp + 0x38]
mov eax, dword [rbx + 0x90]
test eax, eax
jle 0x514add
mov rcx, qword [rbx + 0x88]
add eax, 0xffffffff
lea rax, [rax + rax*2]
mov word [rcx + rax*8 + 2], 0x90
mov rcx, qword [rsp + 0x40]
mov r13, qword [rcx + 0x10]
cmp esi, 1
je 0x514b1a
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
movsxd rdx, esi
shl rdx, 5
mov rax, qword [rax + rdx + 8]
cmp byte [rax + 0x11], 0
je 0x514b1a
mov r8d, dword [r14 + 0x28]
mov rax, qword [r14]
mov qword [rsp + 0x20], rax
mov edx, esi
xor r9d, r9d
call fcn.004c63a0
cmp byte [r14 + 0x30], 0
js 0x514b8f
mov r9d, dword [r14 + 0x28]
movsx r14d, word [r14 + 0x38]
mov eax, dword [r13 + 0x90]
cmp dword [r13 + 0x94], eax
jle 0x514c05
movsxd rcx, eax
lea edx, [rcx + 1]
mov dword [r13 + 0x90], edx
mov rdx, qword [r13 + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x70
mov dword [rdx + rcx*8 + 4], r12d
mov dword [rdx + rcx*8 + 8], r9d
mov esi, ebp
mov ebp, dword [rsp + 0x38]
mov dword [rdx + rcx*8 + 0xc], ebp
mov ebp, esi
mov qword [rdx + rcx*8 + 0x10], 0
mov rcx, qword [r13]
cmp byte [rcx + 0x67], 0
jne 0x514c9e
jmp 0x514c27
add r14, 0x10
nop word cs:[rax + rax]
nop dword [rax]
mov rbp, qword [r14]
mov eax, dword [rbp + 0x64]
not eax
or eax, 0xfffffffc
lea r14, [rbp + 0x28]
cmp eax, 0xfffffffd
jne 0x514ba0
mov r9d, dword [rbp + 0x58]
movsxd rax, dword [r13 + 0x90]
cmp dword [r13 + 0x94], eax
jle 0x514c52
lea ecx, [rax + 1]
mov dword [r13 + 0x90], ecx
mov rcx, qword [r13 + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x70
mov dword [rcx + rax*8 + 4], r12d
mov dword [rcx + rax*8 + 8], r9d
mov edx, dword [rsp + 0x38]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x514c6a
mov eax, dword [rsp + 0x38]
mov dword [rsp + 0x20], eax
mov rcx, r13
mov edx, 0x70
mov r8d, r12d
call fcn.0047df60
mov rcx, qword [r13]
cmp byte [rcx + 0x67], 0
jne 0x514c9e
mov rcx, qword [r13 + 0x88]
cdqe
lea rax, [rax + rax*2]
mov byte [rcx + rax*8 + 1], 0xfd
mov dword [rcx + rax*8 + 0x10], r14d
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jg 0x514cb1
jmp 0x514d81
mov eax, dword [rsp + 0x38]
mov dword [rsp + 0x20], eax
mov rcx, r13
mov edx, 0x70
mov r8d, r12d
call fcn.0047df60
mov rcx, qword [rsp + 0x40]
mov rsi, qword [rcx + 0x10]
mov rdx, rbp
call fcn.004c65a0
test rax, rax
mov ebp, dword [rsp + 0x3c]
je 0x514c9e
mov rcx, qword [rsi]
cmp byte [rcx + 0x67], 0
je 0x514d4d
mov edx, 0xfffffff8
mov r8, rax
call fcn.00444fc0
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x514d81
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x1e
mov dword [rcx + rax*8 + 4], r12d
mov dword [rcx + rax*8 + 8], 0
mov esi, dword [rsp + 0x58]
mov dword [rcx + rax*8 + 0xc], esi
mov qword [rcx + rax*8 + 0x10], 0
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jg 0x514daf
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 8
xor r8d, r8d
mov r9d, ebp
call fcn.0047df60
mov eax, dword [rbx + 0x90]
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
je 0x514df3
mov dword [0x0213b3f0], eax
lea rcx, [0x0213b3e8]
mov r15, qword [rsp + 0x40]
mov dword [rcx + 8], eax
test esi, esi
jne 0x514e3d
jmp 0x513c91
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
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jg 0x514cb1
mov esi, dword [rsp + 0x58]
mov dword [rsp + 0x20], esi
mov rcx, rbx
mov edx, 0x1e
mov r8d, r12d
xor r9d, r9d
call fcn.0047df60
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x514cfd
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 8
mov dword [rcx + rax*8 + 8], ebp
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [rbx + 0x90]
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
jne 0x514d2b
xor ecx, ecx
cmp eax, 2
setl cl
lea edx, [rax - 1]
test r15d, r15d
cmovns edx, r15d
lea ecx, [rcx + rax - 2]
mov rbp, qword [rbx + 0x88]
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
mov dword [rbp + rcx*8 + 8], eax
movsxd rcx, edx
lea rcx, [rcx + rcx*2]
lea rcx, [rcx*8]
add rcx, rbp
mov r15, qword [rsp + 0x40]
mov dword [rcx + 8], eax
test esi, esi
je 0x513c91
movzx eax, byte [r15 + 0x1f]
cmp rax, 7
ja 0x513c91
lea ecx, [rax + 1]
mov byte [r15 + 0x1f], cl
mov dword [r15 + rax*4 + 0xd8], esi
jmp 0x513c91