Function at 0x140185e40
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x58
movdqa xmmword [rsp + 0x40], xmm7
movdqa xmmword [rsp + 0x30], xmm6
mov rsi, rcx
mov rdi, qword [rcx]
mov rax, qword [rcx + 8]
sub rax, rdi
cmp rax, 6
jl 0x140185eab
lea rdx, str._:_:__
mov r8d, 6
mov rcx, rdi
call qword [0x1402f0c60]
test eax, eax
je 0x140186063
lea rdx, [0x1402c7a44]
mov r8d, 6
mov rcx, rdi
call qword [0x1402f0c60]
test eax, eax
je 0x1401860b3
mov rax, qword [rsi + 0x30]
movsxd rdi, dword [rax + 0x14]
lea ecx, [rdi + 1]
mov dword [rax + 0x14], ecx
mov rcx, qword [rsi + 0x30]
movsxd rbx, dword [rcx + 0x10]
mov eax, dword [rsi + 0x28]
cmp edi, eax
jge 0x140185fa4
mov rax, qword [rcx + 0x18]
test rax, rax
je 0x140186010
mov r8, qword [rcx + 0x20]
test r8, r8
je 0x140186010
mov rdx, rdi
shl rdx, 5
lea r12, [rax + rdx]
lea ecx, [rdi + 7]
test edi, edi
cmovns ecx, edi
sar ecx, 3
movsxd rcx, ecx
imul rbx, rcx
and dil, 7
mov r9d, 1
mov ecx, edi
shl r9d, cl
add r8, rbx
mov qword [rax + rdx], r8
lea r15, [rax + rdx]
add r15, 8
mov byte [rax + rdx + 8], r9b
mov byte [rax + rdx + 9], 0
pxor xmm0, xmm0
movdqu xmmword [rax + rdx + 0x10], xmm0
mov rcx, qword [rsi]
mov r9, qword [rsi + 8]
mov r8, r9
sub r8, rcx
test r8, r8
jle 0x140186103
movzx r8d, byte [rcx]
cmp r8b, 0x5e
setne dil
jne 0x140185f6f
inc rcx
mov qword [rsi], rcx
sub r9, rcx
test r9, r9
jle 0x14018619f
movzx r8d, byte [rcx]
movzx r9d, r8b
cmp r9b, 0x5d
je 0x140185f89
cmp r9d, 0x2d
jne 0x1401861a1
mov r9d, 0x2d
inc rcx
mov qword [rsi], rcx
movzx ecx, byte [r15]
mov r10, qword [r12]
or byte [r10 + r9], cl
add byte [r15 + 1], r8b
jmp 0x1401861a1
lea edx, [rax + 8]
mov dword [rsi + 0x28], edx
cmp eax, 0xfffffff8
jl 0x140186010
mov r14d, edx
mov rdx, r14
shl rdx, 5
mov rcx, qword [rcx + 0x18]
call qword [0x1402f0c08]
test rax, rax
je 0x140186010
shr r14, 3
imul r14, rbx
mov rcx, qword [rsi + 0x30]
mov qword [rcx + 0x18], rax
mov rax, qword [rsi + 0x30]
mov rcx, qword [rax + 0x20]
mov rdx, r14
call qword [0x1402f0c08]
test rax, rax
je 0x140186010
mov ecx, edi
mov rdx, qword [rsi + 0x30]
mov qword [rdx + 0x20], rax
test ecx, ecx
jle 0x14018617e
cmp ecx, 1
jne 0x14018610b
xor eax, eax
jmp 0x14018615c
mov rax, qword [rsi + 0x30]
mov rcx, qword [rax + 0x18]
mov rdi, qword [0x1402f0bf8]
call rdi
mov rax, qword [rsi + 0x30]
mov qword [rax + 0x18], 0
mov rax, qword [rsi + 0x30]
mov rcx, qword [rax + 0x20]
call rdi
mov rax, qword [rsi + 0x30]
mov qword [rax + 0x20], 0
cmp dword [rsi + 0x10], 0
jne 0x140186050
mov dword [rsi + 0x10], 0xc
lea rax, [0x1402f82c4]
mov qword [rsi], rax
mov qword [rsi + 8], rax
jmp 0x140186d71
cmp dword [rsi + 0x10], 0
jne 0x140186d6a
mov eax, dword [rsi + 0x20]
cmp dword [rsi + 0x24], eax
jl 0x140186c10
lea ecx, [rax + 1]
shr ecx, 0x1f
add ecx, eax
inc ecx
sar ecx, 1
lea edi, [rcx + rcx*2]
cmp eax, edi
jge 0x140186c10
cmp eax, 0xfffffffd
jg 0x140186bf0
mov dword [rsi + 0x10], 0xc
lea rax, [0x1402f82c4]
mov qword [rsi], rax
mov qword [rsi + 8], rax
jmp 0x140186c10
cmp dword [rsi + 0x10], 0
jne 0x140186d6a
mov eax, dword [rsi + 0x20]
cmp dword [rsi + 0x24], eax
jl 0x140186d52
lea ecx, [rax + 1]
shr ecx, 0x1f
add ecx, eax
inc ecx
sar ecx, 1
lea edi, [rcx + rcx*2]
cmp eax, edi
jge 0x140186d52
cmp eax, 0xfffffffd
jg 0x140186d32
mov dword [rsi + 0x10], 0xc
lea rax, [0x1402f82c4]
mov qword [rsi], rax
mov qword [rsi + 8], rax
jmp 0x140186d52
mov dil, 1
jmp 0x1401861a1
mov edx, ecx
and edx, 0xfffffffe
xor r8d, r8d
xor eax, eax
nop word cs:[rax + rax]
mov r9, qword [rsi + 0x30]
mov r10d, eax
shr r10d, 3
imul r10, rbx
mov r11, qword [r9 + 0x20]
add r11, r10
mov r9, qword [r9 + 0x18]
mov qword [r9 + r8], r11
mov r9, qword [rsi + 0x30]
add r10, qword [r9 + 0x20]
mov r9, qword [r9 + 0x18]
mov qword [r9 + r8 + 0x20], r10
add rax, 2
add r8, 0x40
cmp rdx, rax
jne 0x140186120
test cl, 1
je 0x14018617e
mov rcx, qword [rsi + 0x30]
mov edx, eax
shr edx, 3
imul rdx, rbx
add rdx, qword [rcx + 0x20]
mov rcx, qword [rcx + 0x18]
shl rax, 5
mov qword [rcx + rax], rdx
mov rax, qword [rsi + 0x30]
sub r14, rbx
add r14, qword [rax + 0x20]
mov rcx, r14
xor edx, edx
mov r8, rbx
call fcn.140242c10
mov rcx, qword [rsi + 0x30]
jmp 0x140185ecc
xor edi, edi
mov rbp, qword [rsi]
mov r14, qword [rsi + 8]
mov rcx, r14
sub rcx, rbp
test rcx, rcx
jle 0x1401869e9
lea rbx, [rax + rdx]
add rbx, 0x10
lea r13, [rsi + 0x10]
lea r11, [0x1402f82c4]
jmp 0x1401861fc
cmp dword [r13], 0
je 0x140186998
nop word [rax + rax]
mov qword [rsi], r11
mov qword [rsi + 8], r11
mov rbp, r11
mov r14, r11
mov rcx, r14
sub rcx, rbp
test rcx, rcx
jle 0x1401869e9
movsx eax, byte [rbp]
cmp eax, 0x5d
je 0x1401869e9
cmp rcx, 2
jb 0x140186230
cmp al, 0x2d
jne 0x140186230
cmp byte [rbp + 1], 0x5d
jne 0x140186980
jmp 0x1401869cc
cmp eax, 0x2d
je 0x140186980
cmp eax, 0x5b
jne 0x140186550
cmp rcx, 1
jbe 0x140186550
movsx ecx, byte [rbp + 1]
cmp ecx, 0x3d
je 0x1401866cd
cmp ecx, 0x3a
jne 0x140186550
add rbp, 2
mov qword [rsi], rbp
mov rax, r14
sub rax, rbp
test rax, rax
jg 0x140186290
cmp dword [r13], 0
jne 0x140186283
mov dword [r13], 7
mov qword [rsi], r11
mov qword [rsi + 8], r11
mov r14, r11
mov rbp, r11
movzx eax, byte [rbp]
cmp eax, 0x5d
je 0x14018629e
cmp eax, 0x2d
jne 0x1401862ba
cmp dword [r13], 0
jne 0x1401862ad
mov dword [r13], 4
mov qword [rsi], r11
mov qword [rsi + 8], r11
mov r14, r11
mov rbp, r11
mov qword [rsp + 0x28], r13
mov dword [rsp + 0x24], edi
mov rax, r14
sub rax, rbp
mov r13, rbp
test rax, rax
jle 0x140186306
neg r13
lea rdi, [rbp + 1]
nop dword [rax + rax]
movzx ecx, byte [rdi - 1]
call qword [0x1402f0c30]
test eax, eax
je 0x140186303
mov qword [rsi], rdi
lea rax, [r14 + r13]
dec rax
dec r13
inc rdi
test rax, rax
jg 0x1401862e0
neg r13
sub r13, rbp
lea rcx, str.alnum
mov rdx, rbp
mov r8, r13
mov rdi, qword [0x1402f0c60]
call rdi
test eax, eax
jne 0x14018633d
lea rax, str.alnum
cmp byte [r13 + rax], 0
lea rax, str.alnum
je 0x1401867a1
lea rcx, str.alpha
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x14018636a
lea rax, str.alpha
cmp byte [r13 + rax], 0
lea rax, str.xo__
je 0x1401867a1
lea rcx, str.blank
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x140186397
lea rax, str.blank
cmp byte [r13 + rax], 0
lea rax, str.blank
je 0x1401867a1
lea rcx, str.cntrl
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x1401863c4
lea rax, str.cntrl
cmp byte [r13 + rax], 0
lea rax, str.:f_
je 0x1401867a1
lea rcx, [0x14028cfef]
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x1401863f1
lea rax, [0x14028cfef]
cmp byte [r13 + rax], 0
lea rax, [0x14027b410]
je 0x1401867a1
lea rcx, str.graph
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x14018641e
lea rax, str.graph
cmp byte [r13 + rax], 0
lea rax, str.graph
je 0x1401867a1
lea rcx, str.lower
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x14018644b
lea rax, str.lower
cmp byte [r13 + rax], 0
lea rax, str.NJ__
je 0x1401867a1
lea rcx, str.print
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x140186478
lea rax, str.print
cmp byte [r13 + rax], 0
lea rax, str.print
je 0x1401867a1
lea rcx, str.punct
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x1401864a5
lea rax, str.punct
cmp byte [r13 + rax], 0
lea rax, str.punct
je 0x1401867a1
lea rcx, [0x1402b8cdf]
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x1401864d2
lea rax, [0x1402b8cdf]
cmp byte [r13 + rax], 0
lea rax, [0x14027b488]
je 0x1401867a1
lea rcx, [0x1402951ba]
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x1401864ff
lea rax, [0x1402951ba]
cmp byte [r13 + rax], 0
lea rax, [0x14027b4a0]
je 0x1401867a1
lea rcx, str.xdigit
mov rdx, rbp
mov r8, r13
call rdi
test eax, eax
jne 0x14018652c
lea rax, str.xdigit
cmp byte [r13 + rax], 0
lea rax, str.xdigit
je 0x1401867a1
mov rax, qword [rsp + 0x28]
cmp dword [rax], 0
jne 0x14018653c
mov dword [rax], 4
lea rax, [0x1402f82c4]
mov qword [rsi], rax
mov qword [rsi + 8], rax
jmp 0x1401867ea
mov rcx, r14
sub rcx, rbp
cmp rcx, 2
jl 0x1401865b0
cmp al, 0x5b
jne 0x1401865b0
cmp byte [rbp + 1], 0x2e
jne 0x1401865b0
add rbp, 2
mov qword [rsi], rbp
mov rcx, rsi
mov edx, 0x2e
call fcn.140187ab0
mov ebp, eax
mov rcx, qword [rsi]
mov r14, qword [rsi + 8]
mov rax, r14
sub rax, rcx
cmp rax, 1
jle 0x1401865bd
cmp byte [rcx], 0x2e
jne 0x1401865bd
cmp byte [rcx + 1], 0x5d
jne 0x1401865bd
add rcx, 2
mov qword [rsi], rcx
lea r11, [0x1402f82c4]
jmp 0x1401865e0
lea rcx, [rbp + 1]
mov qword [rsi], rcx
movzx ebp, byte [rbp]
jmp 0x1401865e0
cmp dword [r13], 0
lea r11, [0x1402f82c4]
jne 0x1401865d3
mov dword [r13], 3
mov qword [rsi], r11
mov qword [rsi + 8], r11
mov rcx, r11
mov r14, r11
mov rdx, r14
sub rdx, rcx
mov eax, ebp
test rdx, rdx
jle 0x140186970
cmp byte [rcx], 0x2d
mov eax, ebp
jne 0x140186970
mov eax, ebp
cmp rdx, 1
je 0x140186970
cmp byte [rcx + 1], 0x5d
mov eax, ebp
je 0x140186970
lea rax, [rcx + 1]
mov qword [rsi], rax
mov rdx, r14
sub rdx, rax
test rdx, rdx
jle 0x1401868ee
cmp byte [rax], 0x2d
jne 0x14018690a
add rcx, 2
mov qword [rsi], rcx
mov al, 0x2d
cmp bpl, al
jg 0x140186980
movsx ecx, bpl
movsx edx, al
inc edx
mov r8d, edx
sub r8d, ecx
test r8b, 1
je 0x140186670
movzx r8d, byte [r15]
mov r9, qword [r12]
movzx r10d, cl
or byte [r9 + r10], r8b
add byte [r15 + 1], bpl
inc ecx
cmp al, bpl
je 0x1401866c1
nop word cs:[rax + rax]
movzx eax, byte [r15]
mov r8, qword [r12]
movzx r9d, cl
or byte [r8 + r9], al
movzx eax, byte [r15 + 1]
add eax, ecx
mov byte [r15 + 1], al
lea eax, [rcx + 1]
movzx r8d, byte [r15]
mov r9, qword [r12]
movzx eax, al
or byte [r9 + rax], r8b
movzx eax, byte [r15 + 1]
add eax, ecx
inc al
mov byte [r15 + 1], al
add ecx, 2
cmp edx, ecx
jne 0x140186680
mov rbp, qword [rsi]
mov r14, qword [rsi + 8]
jmp 0x1401861ed
add rbp, 2
mov qword [rsi], rbp
sub r14, rbp
test r14, r14
jg 0x1401866f5
cmp dword [r13], 0
jne 0x1401866eb
mov dword [r13], 7
mov qword [rsi], r11
mov qword [rsi + 8], r11
mov rbp, r11
movzx eax, byte [rbp]
cmp eax, 0x5d
je 0x140186703
cmp eax, 0x2d
jne 0x140186719
cmp dword [r13], 0
jne 0x140186712
mov dword [r13], 3
mov qword [rsi], r11
mov qword [rsi + 8], r11
mov rcx, rsi
mov edx, 0x3d
call fcn.140187ab0
lea r11, [0x1402f82c4]
movzx ecx, byte [r15]
mov rdx, qword [r12]
movzx eax, al
or byte [rdx + rax], cl
add byte [r15 + 1], al
mov rbp, qword [rsi]
mov r14, qword [rsi + 8]
mov rax, r14
sub rax, rbp
test rax, rax
jg 0x14018676d
cmp dword [r13], 0
jne 0x140186760
mov dword [r13], 7
mov qword [rsi], r11
mov qword [rsi + 8], r11
mov rbp, r11
mov r14, r11
mov rax, r14
sub rax, rbp
cmp rax, 2
jl 0x140186789
cmp byte [rbp], 0x3d
jne 0x140186789
cmp byte [rbp + 1], 0x5d
je 0x14018684c
cmp dword [r13], 0
jne 0x1401861e0
mov dword [r13], 3
jmp 0x1401861e0
mov rcx, qword [rax + 8]
movzx edx, byte [rcx]
test dl, dl
je 0x1401867cd
inc rcx
nop
movzx r8d, byte [r15]
mov r9, qword [r12]
movzx edx, dl
or byte [r9 + rdx], r8b
add byte [r15 + 1], dl
movzx edx, byte [rcx]
inc rcx
test dl, dl
jne 0x1401867b0
mov r13, qword [rax + 0x10]
cmp byte [r13], 0
mov r14, qword [0x1402f0c08]
mov rbp, qword [0x1402f0bf8]
jne 0x140186895
mov rbp, qword [rsi]
mov r14, qword [rsi + 8]
mov rax, r14
sub rax, rbp
test rax, rax
mov edi, dword [rsp + 0x24]
mov r13, qword [rsp + 0x28]
lea r11, [0x1402f82c4]
jg 0x140186828
cmp dword [r13], 0
jne 0x14018681b
mov dword [r13], 7
mov qword [rsi], r11
mov qword [rsi + 8], r11
mov rbp, r11
mov r14, r11
mov rax, r14
sub rax, rbp
cmp rax, 2
jl 0x1401861cc
cmp byte [rbp], 0x3a
jne 0x1401861cc
cmp byte [rbp + 1], 0x5d
jne 0x1401861cc
add rbp, 2
mov qword [rsi], rbp
jmp 0x1401861ed
mov qword [rbx + 8], rax
mov r8, qword [rbx]
sub r8, rdi
inc r8
lea rcx, [rax + rdi]
dec rcx
mov rdx, r13
call fcn.140237e90
mov rcx, r13
call fcn.140242e00
cmp byte [rax + r13 + 1], 0
lea r13, [rax + r13 + 1]
je 0x1401867ea
mov rdi, qword [rbx]
mov rcx, r13
call fcn.140242e00
lea rdx, [rdi + rax]
inc rdx
mov qword [rbx], rdx
mov rcx, qword [rbx + 8]
call r14
test rax, rax
jne 0x140186860
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x1401868c1
call rbp
mov qword [rbx + 8], 0
mov rax, qword [rsp + 0x28]
cmp dword [rax], 0
jne 0x1401868de
mov rax, qword [rsp + 0x28]
mov dword [rax], 0xc
lea rax, [0x1402f82c4]
mov qword [rsi], rax
mov qword [rsi + 8], rax
jmp 0x14018687c
cmp dword [r13], 0
jne 0x1401868fd
mov dword [r13], 7
mov qword [rsi], r11
mov qword [rsi + 8], r11
mov rax, r11
mov r14, r11
sub r14, rax
cmp r14, 2
jl 0x140186965
cmp byte [rax], 0x5b
jne 0x140186965
cmp byte [rax + 1], 0x2e
jne 0x140186965
add rax, 2
mov qword [rsi], rax
mov rcx, rsi
mov edx, 0x2e
call fcn.140187ab0
mov rcx, qword [rsi]
mov rdx, qword [rsi + 8]
sub rdx, rcx
cmp rdx, 1
jle 0x1401869a5
cmp byte [rcx], 0x2e
jne 0x1401869a5
cmp byte [rcx + 1], 0x5d
jne 0x1401869a5
add rcx, 2
mov qword [rsi], rcx
lea r11, [0x1402f82c4]
cmp bpl, al
jg 0x140186980
jmp 0x140186645
lea rcx, [rax + 1]
mov qword [rsi], rcx
movzx eax, byte [rax]
nop
cmp bpl, al
jle 0x140186645
nop dword [rax]
cmp dword [r13], 0
jne 0x1401861e0
mov dword [r13], 0xb
jmp 0x1401861e0
mov dword [r13], 4
jmp 0x1401861e0
cmp dword [r13], 0
lea r11, [0x1402f82c4]
jne 0x1401869bb
mov dword [r13], 3
mov qword [rsi], r11
mov qword [rsi + 8], r11
cmp bpl, al
jg 0x140186980
jmp 0x140186645
inc rbp
mov qword [rsi], rbp
movzx eax, byte [r15]
mov rcx, qword [r12]
or byte [rcx + 0x2d], al
add byte [r15 + 1], 0x2d
mov rbp, qword [rsi]
mov r14, qword [rsi + 8]
sub r14, rbp
test r14, r14
jle 0x140186aa7
lea rax, [rbp + 1]
mov qword [rsi], rax
cmp byte [rbp], 0x5d
jne 0x140186aa7
cmp dword [rsi + 0x10], 0
jne 0x140186ac2
mov dword [rsp + 0x24], edi
mov rax, qword [rsi + 0x30]
test byte [rax + 0x28], 2
je 0x140186b81
mov r14d, dword [rax + 0x10]
test r14d, r14d
jle 0x140186b81
inc r14d
jmp 0x140186a41
dec r14d
cmp r14d, 1
jbe 0x140186b81
lea edi, [r14 - 2]
mov rbp, qword [r12]
movzx ebx, dil
movzx r13d, byte [r15]
test byte [rbp + rbx], r13b
je 0x140186a34
mov ecx, edi
call qword [0x1402f0c30]
test eax, eax
je 0x140186a34
mov ecx, ebx
call qword [0x1402f0c40]
test eax, eax
je 0x140186a7a
mov ecx, ebx
call qword [0x1402f0c68]
jmp 0x140186a92
mov ecx, ebx
call qword [0x1402f0c38]
mov ecx, eax
mov eax, edi
test ecx, ecx
je 0x140186a92
mov ecx, ebx
call qword [0x1402f0c70]
movsx ecx, al
cmp edi, ecx
je 0x140186a34
movzx ecx, al
or byte [rbp + rcx], r13b
add byte [r15 + 1], al
jmp 0x140186a34
cmp dword [rsi + 0x10], 0
jne 0x140186ab4
mov dword [rsi + 0x10], 7
lea rax, [0x1402f82c4]
mov qword [rsi], rax
mov qword [rsi + 8], rax
mov rcx, qword [rsi + 0x30]
movsxd rax, dword [rcx + 0x14]
shl rax, 5
add rax, qword [rcx + 0x18]
movsxd rcx, dword [rcx + 0x10]
test rcx, rcx
je 0x140186b68
cmp ecx, 1
jne 0x140186ae8
xor edx, edx
jmp 0x140186b4e
mov r8, rcx
and r8, 0xfffffffffffffffe
mov r9b, 0xff
xor edx, edx
nop word cs:[rax + rax]
movzx r10d, byte [r15]
not r10b
mov r11, qword [r12]
mov edi, edx
and edi, 0xfe
and byte [r11 + rdi], r10b
movzx r10d, byte [r15 + 1]
add r10b, r9b
inc r10b
mov byte [r15 + 1], r10b
lea r10d, [rdx + 1]
movzx r11d, byte [r15]
not r11b
mov rdi, qword [r12]
movzx r10d, r10b
and byte [rdi + r10], r11b
add byte [r15 + 1], r9b
add rdx, 2
add r9b, 0xfe
cmp r8, rdx
jne 0x140186b00
test cl, 1
je 0x140186b68
movzx ecx, byte [r15]
not cl
mov r8, qword [r12]
movzx edx, dl
and byte [r8 + rdx], cl
sub byte [r15 + 1], dl
add rax, 0xffffffffffffffe0
cmp rax, r12
jne 0x140186d71
mov rax, qword [rsi + 0x30]
dec dword [rax + 0x14]
jmp 0x140186d71
cmp byte [rsp + 0x24], 0
jne 0x140186c46
mov rcx, qword [rsi + 0x30]
mov eax, dword [rcx + 0x10]
test eax, eax
jle 0x140186c2e
lea ecx, [rax + 1]
mov dl, 1
sub dl, al
jmp 0x140186bc3
not r11b
and r10b, r11b
mov byte [r8 + r9], r10b
movzx r8d, byte [r15 + 1]
add r8b, dl
mov byte [r15 + 1], r8b
dec ecx
inc dl
cmp ecx, 1
jbe 0x140186c2a
dec eax
lea r9d, [rcx - 2]
mov r8, qword [r12]
movzx r9d, r9b
movzx r10d, byte [r8 + r9]
movzx r11d, byte [r15]
test r11b, r10b
jne 0x140186ba4
or r11b, r10b
mov byte [r8 + r9], r11b
movzx r8d, byte [r15 + 1]
add r8b, al
jmp 0x140186bb6
mov edx, edi
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call qword [0x1402f0c08]
test rax, rax
je 0x140186d8c
mov qword [rsi + 0x18], rax
mov dword [rsi + 0x20], edi
mov rax, qword [rsi + 0x18]
movsxd rcx, dword [rsi + 0x24]
lea edx, [rcx + 1]
mov dword [rsi + 0x24], edx
mov dword [rax + rcx*4], 0x98000000
jmp 0x140186d67
mov rcx, qword [rsi + 0x30]
test byte [rcx + 0x28], 8
je 0x140186c46
movzx eax, byte [r15]
not al
mov rcx, qword [r12]
and byte [rcx + 0xa], al
add byte [r15 + 1], 0xf6
mov rdx, qword [rsi + 0x30]
movsxd rax, dword [rdx + 0x10]
xor ecx, ecx
test rax, rax
je 0x140186e2a
mov r8, qword [r12]
movzx r9d, byte [r15]
cmp eax, 8
jb 0x140186d9b
lea r11, [rax - 0x101]
mov r10d, 0
cmp r11, 0xffffffffffffff00
jb 0x140186d9e
mov r10, rax
and r10, 0xfffffffffffffff8
movzx ecx, r9b
movd xmm0, ecx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pxor xmm1, xmm1
xor ecx, ecx
pcmpeqd xmm3, xmm3
movdqa xmm5, xmmword [0x14027b3a0]
pxor xmm4, xmm4
pxor xmm2, xmm2
mov r11d, ecx
and r11d, 0xf8
movd xmm6, dword [r8 + r11]
movd xmm7, dword [r8 + r11 + 4]
pand xmm6, xmm0
pand xmm7, xmm0
pcmpeqb xmm6, xmm1
pxor xmm6, xmm3
punpcklbw xmm6, xmm6
punpcklwd xmm6, xmm6
pand xmm6, xmm5
paddd xmm4, xmm6
pcmpeqb xmm7, xmm1
pxor xmm7, xmm3
punpcklbw xmm7, xmm7
punpcklwd xmm7, xmm7
pand xmm7, xmm5
paddd xmm2, xmm7
add rcx, 8
cmp r10, rcx
jne 0x140186cb6
paddd xmm2, xmm4
pshufd xmm0, xmm2, 0xee
paddd xmm0, xmm2
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd ecx, xmm1
cmp r10, rax
jne 0x140186d9e
jmp 0x140186dfb
mov edx, edi
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call qword [0x1402f0c08]
test rax, rax
je 0x140186f6e
mov qword [rsi + 0x18], rax
mov dword [rsi + 0x20], edi
mov rax, qword [rsi + 0x18]
movsxd rcx, dword [rsi + 0x24]
lea edx, [rcx + 1]
mov dword [rsi + 0x24], edx
mov dword [rax + rcx*4], 0xa0000000
mov rdi, qword [rsi]
add rdi, 6
mov qword [rsi], rdi
movaps xmm6, xmmword [rsp + 0x30]
movaps xmm7, xmmword [rsp + 0x40]
add rsp, 0x58
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp dword [rsi + 0x10], 0
jne 0x1401860a0
jmp 0x140186099
xor r10d, r10d
mov r11, r10
not r11
test al, 1
je 0x140186dc3
mov edi, r10d
and edi, 0xf8
movzx ebx, byte [r8 + rdi]
and bl, r9b
cmp bl, 1
sbb ecx, 0xffffffff
or r10, 1
add r11, rax
je 0x140186dfb
movzx r11d, r10b
movzx r11d, byte [r8 + r11]
and r11b, r9b
cmp r11b, 1
sbb ecx, 0xffffffff
lea r11d, [r10 + 1]
movzx r11d, r11b
movzx r11d, byte [r8 + r11]
and r11b, r9b
cmp r11b, 1
sbb ecx, 0xffffffff
add r10, 2
cmp rax, r10
jne 0x140186dc8
cmp ecx, 1
mov rcx, rax
jne 0x140186e2a
xor edx, edx
xor ecx, ecx
movzx r10d, cl
test byte [r8 + r10], r9b
jne 0x140186ede
inc rcx
add edx, 0x1000000
cmp rax, rcx
jne 0x140186e07
xor edx, edx
jmp 0x140186ee1
movsxd rbx, dword [rdx + 0x14]
test rbx, rbx
jle 0x140186ed6
movzx r8d, byte [r15 + 1]
mov rdi, qword [rdx + 0x18]
shl rbx, 5
add rbx, rdi
cmp rcx, 2
mov edx, 1
cmovae rdx, rcx
mov byte [rsp + 0x28], r8b
jmp 0x140186e79
mov rbx, rax
mov rax, r9
cmp r10, rcx
movzx r8d, byte [rsp + 0x28]
je 0x140186f7d
add rdi, 0x20
cmp rdi, rbx
jae 0x140186ed6
cmp byte [rdi + 9], r8b
jne 0x140186e70
cmp rdi, r12
je 0x140186e70
test eax, eax
je 0x140186ffc
mov r9, rax
mov rax, rbx
mov r11, qword [rdi]
movzx ebx, byte [rdi + 8]
mov r14, qword [r12]
movzx ebp, byte [r15]
xor r10d, r10d
nop word cs:[rax + rax]
movzx r13d, r10b
test byte [r11 + r13], bl
sete r8b
test byte [r14 + r13], bpl
setne r13b
cmp r8b, r13b
je 0x140186e5b
inc r10
cmp rdx, r10
jne 0x140186eb0
mov r10, rdx
jmp 0x140186e5b
mov rdi, r12
jmp 0x14018700c
sar edx, 0x18
mov rcx, rsi
call fcn.1401870a0
mov rcx, qword [rsi + 0x30]
movsxd rax, dword [rcx + 0x14]
shl rax, 5
add rax, qword [rcx + 0x18]
movsxd rcx, dword [rcx + 0x10]
test rcx, rcx
je 0x140186b68
cmp ecx, 1
je 0x140186ae4
mov r8, rcx
and r8, 0xfffffffffffffffe
mov r9b, 0xff
xor edx, edx
movzx r10d, byte [r15]
not r10b
mov r11, qword [r12]
mov edi, edx
and edi, 0xfe
and byte [r11 + rdi], r10b
movzx r10d, byte [r15 + 1]
add r10b, r9b
inc r10b
mov byte [r15 + 1], r10b
lea r10d, [rdx + 1]
movzx r11d, byte [r15]
not r11b
mov rdi, qword [r12]
movzx r10d, r10b
and byte [rdi + r10], r11b
add byte [r15 + 1], r9b
add rdx, 2
add r9b, 0xfe
cmp r8, rdx
jne 0x140186f1b
jmp 0x140186b4e
cmp dword [rsi + 0x10], 0
jne 0x1401860f0
jmp 0x1401860e9
cmp rcx, 1
jne 0x140186f87
xor eax, eax
jmp 0x140186fe3
mov rdx, rcx
and rdx, 0xfffffffffffffffe
mov r9b, 0xff
xor eax, eax
movzx r8d, byte [r15]
not r8b
mov r10, qword [r12]
mov r11d, eax
and r11d, 0xfe
and byte [r10 + r11], r8b
movzx r8d, byte [r15 + 1]
add r8b, r9b
inc r8b
mov byte [r15 + 1], r8b
lea r8d, [rax + 1]
movzx r10d, byte [r15]
not r10b
mov r11, qword [r12]
movzx r8d, r8b
and byte [r11 + r8], r10b
add byte [r15 + 1], r9b
add rax, 2
add r9b, 0xfe
cmp rdx, rax
jne 0x140186f93
test cl, 1
je 0x140186ffc
movzx ecx, byte [r15]
not cl
mov rdx, qword [r12]
movzx eax, al
and byte [rdx + rax], cl
sub byte [r15 + 1], al
add rbx, 0xffffffffffffffe0
cmp rbx, r12
jne 0x14018700c
mov rax, qword [rsi + 0x30]
dec dword [rax + 0x14]
cmp dword [rsi + 0x10], 0
jne 0x140186d71
mov rax, qword [rsi + 0x30]
sub rdi, qword [rax + 0x18]
shr rdi, 5
mov eax, dword [rsi + 0x20]
cmp dword [rsi + 0x24], eax
jl 0x140187075
lea ecx, [rax + 1]
shr ecx, 0x1f
add ecx, eax
inc ecx
sar ecx, 1
lea ebx, [rcx + rcx*2]
cmp eax, ebx
jge 0x140187075
cmp eax, 0xfffffffd
jg 0x140187059
mov dword [rsi + 0x10], 0xc
lea rax, [0x1402f82c4]
mov qword [rsi], rax
mov qword [rsi + 8], rax
jmp 0x140187075
mov edx, ebx
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call qword [0x1402f0c08]
test rax, rax
je 0x140187091
mov qword [rsi + 0x18], rax
mov dword [rsi + 0x20], ebx
or edi, 0x30000000
mov rax, qword [rsi + 0x18]
movsxd rcx, dword [rsi + 0x24]
lea edx, [rcx + 1]
mov dword [rsi + 0x24], edx
mov dword [rax + rcx*4], edi
jmp 0x140186d71
cmp dword [rsi + 0x10], 0
jne 0x140187049
jmp 0x140187042