Function at 0x18001f8c0
Capabilities:
Encrypt data using speck

Disassembly:
push rbp
push rbx
push rsi
push r15
lea rbp, [rsp - 8]
sub rsp, 0x108
mov rsi, qword [rcx + 0x40]
lea rax, [rcx + 0x50]
mov qword [rax], rdx
xor r15d, r15d
mov r8, qword [rcx + 0x10]
mov r10, rcx
mov rbx, qword [rdx + 8]
mov r11d, r15d
mov r9, qword [rdx]
mov qword [rsp + 0x70], rax
mov eax, dword [rcx + 8]
mov qword [rsp + 0x58], rcx
mov qword [rsp + 0x50], rsi
mov dword [rsp + 0x20], r15d
lea rcx, [r8 + rax*4]
mov qword [rsp + 0x28], rbx
cmp r8, rcx
jne 0x18001f927
lea eax, [r15 + 0xd]
add rsp, 0x108
pop r15
pop rsi
pop rbx
pop rbp
ret
mov rax, qword [r10 + 0x30]
mov qword [rsp + 0x138], rdi
mov qword [rsp + 0x140], r12
lea r12, [r9 + 8]
mov qword [rsp + 0x148], r13
mov r9d, 9
mov qword [rsp + 0x100], r14
lea r13, [0x180000000]
movaps xmmword [rsp + 0xf0], xmm6
lea r14, [r8 + 4]
movsd xmm6, qword [0x18003f640]
mov dword [rax], r15d
mov rax, qword [r10 + 0x30]
movaps xmmword [rsp + 0xe0], xmm7
xorps xmm7, xmm7
movaps xmmword [rsp + 0xd0], xmm8
movsd xmm8, qword [0x18003f648]
mov dword [rax + 4], r15d
mov edx, dword [r8]
movzx eax, byte [rsi + rdx]
lea rdi, [rsi + rdx]
movaps xmmword [rsp + 0xc0], xmm9
movsd xmm9, qword [0x18003f638]
movaps xmmword [rsp + 0xb0], xmm10
movsd xmm10, qword [0x18003f750]
mov qword [rbp - 0x80], r14
cmp al, 0x5b
je 0x1800205b1
cmp al, 0x7b
jne 0x18001fa8a
mov ecx, dword [r10 + 8]
mov r8, rsi
mov rax, qword [r10 + 0x10]
dec ecx
mov ecx, dword [rax + rcx*4]
cmp byte [rcx + rsi], 0x7d
jne case.0x18001fab3.35
mov eax, dword [r14]
cmp byte [rax + rsi], 0x7d
jne 0x1800215db
mov rax, qword [r10 + 0x50]
mov rdx, r12
add r14, 4
movabs r8, 0x7b00000000000000
sub rdx, qword [rax]
sar rdx, 3
mov eax, edx
lea ecx, [rdx + 2]
movabs rdx, 0x7d00000000000000
or rcx, r8
mov qword [r12], rcx
or rax, rdx
mov qword [r12 + 8], rax
add r12, 0x10
movabs rdx, 0x7200000000000000
mov qword [r12], rdx
mov rax, qword [r10 + 0x50]
mov rcx, qword [rax]
sub r12, rcx
lea rax, [r12 + 8]
sar rax, 3
mov eax, eax
or rax, rdx
mov qword [rcx], rax
mov eax, 3
sub r14, qword [r10 + 0x10]
sar r14, 2
mov dword [r10 + 0x18], r14d
cmp r14d, dword [r10 + 8]
cmovne r15d, eax
mov eax, r15d
jmp 0x180022496
add eax, 0xffffffde
cmp eax, 0x52
ja case.0x18001fab3.35
lea r13, [0x180000000]
cdqe
movzx eax, byte [rax + r13 + 0x22508]
mov ecx, dword [r13 + rax*4 + 0x224f0]
add rcx, r13
jmp rcx
movdqa xmm3, xmmword [0x18003f6e0]
lea r9, [rdi + 1]
movdqa xmm4, xmmword [0x18003f710]
lea r8, [rbx + 4]
mov rax, qword [rsp + 0x70]
mov rcx, rbx
movdqa xmm0, xmm3
mov rax, qword [rax]
sub rcx, qword [rax + 8]
movabs rax, 0x2200000000000000
or rcx, rax
mov qword [r12], rcx
add r12, 8
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmm2, xmmword [r9]
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
movdqa xmm0, xmm3
pcmpeqb xmm0, xmm2
movdqu xmmword [r8 + 0x10], xmm1
movsxd r10, eax
shl r10, 0x10
pcmpeqb xmm1, xmm4
pmovmskb eax, xmm0
movdqu xmmword [r8], xmm2
movsxd rcx, eax
pcmpeqb xmm2, xmm4
or r10, rcx
pmovmskb eax, xmm1
shl r10, 0x10
movsxd rcx, eax
or r10, rcx
pmovmskb ecx, xmm2
shl r10, 0x10
mov ecx, ecx
or r10, rcx
mov rdx, r10
shr rdx, 0x20
lea eax, [r10 - 1]
test edx, eax
jne 0x18001fda9
test r10d, r10d
je 0x18001fd28
mov eax, r10d
bsf rcx, rax
lea eax, [rcx + 1]
movsxd r10, eax
movzx eax, byte [r10 + r9]
cmp al, 0x75
jne 0x18001fd02
movsxd rax, ecx
add r9, rax
add r8, rax
movzx eax, byte [r9 + 3]
movzx ecx, byte [r9 + 4]
mov edx, dword [r13 + rcx*4 + 0x39c88]
or edx, dword [r13 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or edx, dword [r13 + rax*4 + 0x39940]
movzx eax, byte [r9 + 2]
add r9, 6
or edx, dword [r13 + rax*4 + 0x3a318]
lea r11d, [rdx - 0xd800]
cmp r11d, 0x3ff
ja 0x18001fc4d
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x18001fdb7
movzx eax, byte [r9 + 3]
movzx ecx, byte [r9 + 4]
mov r10d, dword [r13 + rcx*4 + 0x39c88]
or r10d, dword [r13 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or r10d, dword [r13 + rax*4 + 0x39940]
movzx eax, byte [r9 + 2]
or r10d, dword [r13 + rax*4 + 0x3a318]
sub r10d, 0xdc00
cmp r10d, 0x400
jae 0x18001fdb7
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x18001fc5e
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x18001fdb7
cmp edx, 0x7f
ja 0x18001fc6e
mov byte [r8], dl
inc r8
jmp 0x18001fd30
cmp edx, 0x7ff
ja 0x18001fc93
mov eax, edx
and dl, 0x3f
shr eax, 6
add dl, 0x80
sub al, 0x40
mov byte [r8 + 1], dl
mov byte [r8], al
add r8, 2
jmp 0x18001fd30
cmp edx, 0xffff
ja 0x18001fcc2
mov eax, edx
shr eax, 0xc
sub al, 0x20
mov byte [r8], al
mov eax, edx
shr eax, 6
and dl, 0x3f
and al, 0x3f
add dl, 0x80
add al, 0x80
mov byte [r8 + 2], dl
mov byte [r8 + 1], al
add r8, 3
jmp 0x18001fd30
cmp edx, 0x10ffff
ja 0x18001fdb7
mov eax, edx
shr eax, 0x12
sub al, 0x10
mov byte [r8], al
mov eax, edx
shr eax, 0xc
and al, 0x3f
add al, 0x80
mov byte [r8 + 1], al
mov eax, edx
shr eax, 6
and dl, 0x3f
and al, 0x3f
add dl, 0x80
add al, 0x80
mov byte [r8 + 3], dl
mov byte [r8 + 2], al
add r8, 4
jmp 0x18001fd30
movzx edx, byte [rax + r13 + 0x3dea0]
test dl, dl
je 0x18001fdb7
movsxd rax, ecx
mov byte [rax + r8], dl
lea eax, [rcx + 2]
movsxd rcx, eax
add r9, rcx
add r8, r10
jmp 0x18001fd30
add r9, 0x20
add r8, 0x20
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmm2, xmmword [r9]
movdqa xmm0, xmm3
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
movdqa xmm0, xmm3
pcmpeqb xmm0, xmm2
movdqu xmmword [r8], xmm2
movsxd rdx, eax
shl rdx, 0x10
pmovmskb eax, xmm0
movdqa xmm0, xmm4
pcmpeqb xmm0, xmm1
movdqu xmmword [r8 + 0x10], xmm1
movsxd rcx, eax
or rdx, rcx
pmovmskb eax, xmm0
shl rdx, 0x10
movdqa xmm0, xmm4
pcmpeqb xmm0, xmm2
movsxd rcx, eax
or rdx, rcx
pmovmskb ecx, xmm0
shl rdx, 0x10
mov ecx, ecx
or rdx, rcx
mov r10d, edx
shr rdx, 0x20
lea eax, [r10 - 1]
test edx, eax
je 0x18001fb62
mov eax, edx
bsf rcx, rax
movsxd rcx, ecx
add rcx, r8
jne 0x18001fdc4
mov dword [rsp + 0x20], 5
jmp 0x180020139
mov eax, ecx
mov dword [rsp + 0x20], r15d
sub eax, ebx
sub eax, 4
mov dword [rbx], eax
mov byte [rcx], r15b
jmp 0x180020139
mov rcx, qword [r10 + 0x48]
sub rcx, rdx
cmp rcx, 4
jbe 0x18001fdff
movzx eax, byte [rdi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rdi]
xor eax, 0x65757274
or ecx, eax
jmp 0x18001fe07
jne 0x18001fe2a
cmp dword [rdi], 0x65757274
sete al
test al, al
je 0x18001fe2a
movabs rax, 0x7400000000000000
mov dword [rsp + 0x20], r15d
mov qword [r12], rax
add r12, 8
jmp 0x18002013e
mov dword [rsp + 0x20], 6
jmp 0x18002013e
mov rcx, qword [r10 + 0x48]
sub rcx, rdx
cmp rcx, 5
jbe 0x18001fe5d
movzx eax, byte [rdi + 5]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rdi + 1]
xor eax, 0x65736c61
or ecx, eax
jmp 0x18001fe66
jne 0x18001fe89
cmp dword [rdi + 1], 0x65736c61
sete al
test al, al
je 0x18001fe89
movabs rax, 0x6600000000000000
mov dword [rsp + 0x20], r15d
mov qword [r12], rax
add r12, 8
jmp 0x18002013e
mov dword [rsp + 0x20], 7
jmp 0x18002013e
mov rcx, qword [r10 + 0x48]
sub rcx, rdx
cmp rcx, 4
jbe 0x18001febb
movzx eax, byte [rdi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rdi]
xor eax, 0x6c6c756e
or ecx, eax
jmp 0x18001fec3
jne 0x18001fee6
cmp dword [rdi], 0x6c6c756e
sete al
test al, al
je 0x18001fee6
movabs rax, 0x6e00000000000000
mov dword [rsp + 0x20], r15d
mov qword [r12], rax
add r12, 8
jmp 0x18002013e
mov dword [rsp + 0x20], 8
jmp 0x18002013e
mov rcx, qword [r10 + 0x48]
sub rcx, rdx
lea rdx, [0x18003fb40]
add rcx, 0x40
call fcn.18002d22c
mov rbx, rax
test rax, rax
jne 0x18001ff1f
mov dword [rsp + 0x20], 2
jmp 0x180020139
mov eax, dword [r14 - 4]
mov rdx, rdi
mov rsi, qword [rsp + 0x58]
mov rcx, rbx
mov r8, qword [rsi + 0x48]
sub r8, rax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [r14 - 4]
mov rdx, r15
movdqa xmm0, xmmword [str.________________________________0000000000000000]
mov rcx, rbx
sub rcx, rax
mov r8, r15
add rcx, qword [rsi + 0x48]
movups xmmword [rcx], xmm0
movups xmmword [rcx + 0x10], xmm0
movups xmmword [rcx + 0x20], xmm0
movups xmmword [rcx + 0x30], xmm0
movzx edi, byte [rbx]
cmp dil, 0x2d
sete dl
add rdx, rbx
mov rsi, rdx
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x18001ff8e
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x18001ff75
mov r11, rdx
sub r11, rsi
je 0x180020129
cmp byte [rsi], 0x30
jne 0x18001ffa9
cmp r11, 1
ja 0x180020129
xor r9b, r9b
mov r10, r15
cmp byte [rdx], 0x2e
jne 0x180020089
mov rax, qword [rdx + 1]
inc rdx
movabs rcx, 0x606060606060606
movabs r11, 0xf0f0f0f0f0f0f0f
add rcx, rax
mov r9b, 1
shr rcx, 4
mov r10, rdx
xor rcx, rax
and rcx, r11
xor rcx, rax
movabs rax, 0x3333333333333333
cmp rcx, rax
jne 0x180020034
movdqu xmm0, xmmword [rdx]
imul r8, r8, 0x5f5e100
psubb xmm0, xmmword [0x18003f6f0]
pmaddubsw xmm0, xmmword [0x18003f690]
pmaddwd xmm0, xmmword [0x18003f660]
packusdw xmm0, xmm0
pmaddwd xmm0, xmmword [0x18003f670]
movd ecx, xmm0
add r8, rcx
add rdx, 8
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
jbe 0x180020041
xor cl, cl
jmp 0x180020050
lea rcx, [r8 + r8*4]
movzx eax, al
lea r8, [rax + rcx*2]
movzx ecx, r9b
lea rax, [rdx + 1]
test cl, cl
cmove rax, rdx
mov rdx, rax
nop dword [rax]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180020079
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x180020060
sub r10, rdx
je 0x180020129
mov eax, edx
sub eax, esi
movsxd r11, eax
movzx eax, byte [rdx]
sub al, 0x45
test al, 0xdf
je 0x1800201a4
test r9b, r9b
jne 0x180020225
cmp dil, 0x2d
mov rax, r15
setne al
add rax, 0x13
cmp r11, rax
jbe 0x1800200bc
mov dword [rsp + 0x20], 0xa
jmp 0x180020131
jne 0x18002014f
cmp dil, 0x2d
jne 0x180020114
movabs rax, 0x8000000000000000
cmp r8, rax
jbe 0x1800200e1
mov dword [rsp + 0x20], 0xa
jmp 0x180020131
neg r8
movabs rax, 0x6c00000000000000
mov qword [r12], rax
mov qword [r12 + 8], r8
add r12, 0x10
movzx eax, byte [rdx]
movzx ecx, byte [rax + r13 + 0x39740]
neg cl
sbb eax, eax
and eax, 9
mov dword [rsp + 0x20], eax
jmp 0x180020131
cmp dil, 0x31
jne 0x180020129
movabs rax, 0x7fffffffffffffff
cmp r8, rax
ja 0x18002015e
mov dword [rsp + 0x20], 9
mov rcx, rbx
call fcn.18002d224
mov r10, qword [rsp + 0x58]
mov eax, dword [rsp + 0x20]
test eax, eax
je 0x18001fa40
jmp 0x180022496
movabs rax, 0x7fffffffffffffff
cmp r8, rax
jbe 0x18002016a
movabs r9, 0x7500000000000000
jmp 0x18002017d
cmp dil, 0x2d
jne 0x180020173
neg r8
movabs r9, 0x6c00000000000000
lea rax, [r12 + 8]
mov qword [r12], r9
mov rcx, rax
mov qword [rax], r8
movzx eax, byte [rdx]
lea r12, [rcx + 8]
cmp byte [rax + r13 + 0x39740], r15b
jne 0x180020129
mov dword [rsp + 0x20], r15d
jmp 0x180020131
movzx r14d, byte [rdx + 1]
inc rdx
lea eax, [r14 - 0x2b]
test al, 0xfd
jne 0x1800201b7
inc rdx
mov r9, rdx
mov rcx, r15
nop dword [rax]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x1800201d9
movzx eax, al
lea rcx, [rcx + rcx*4]
inc rdx
lea rcx, [rax + rcx*2]
jmp 0x1800201c0
cmp rdx, r9
jne 0x1800201e7
mov r14, qword [rbp - 0x80]
jmp 0x180020129
lea rax, [r9 + 0x12]
cmp rdx, rax
jbe 0x180020214
cmp byte [r9], 0x30
jne 0x1800201ff
inc r9
cmp byte [r9], 0x30
je 0x1800201f6
lea rax, [r9 + 0x12]
movabs r9, 0xde0b6b3a763ffff
cmp rdx, rax
cmova rcx, r9
mov rax, rcx
neg rax
cmp r14b, 0x2d
cmovne rax, rcx
add r10, rax
movzx eax, byte [rdx]
movzx r15d, byte [rax + r13 + 0x39740]
cmp r11, 0x13
jbe 0x1800202c4
mov rcx, rsi
nop
movzx eax, byte [rcx]
sub al, 0x2e
test al, 0xfd
jne 0x18002024e
inc rcx
jmp 0x180020240
sub r11, rcx
add r11, rsi
cmp r11, 0x13
jbe 0x1800202c4
mov rcx, rbx
call fcn.1800151a0
comisd xmm0, xmmword [0x18003f638]
ja 0x18002027e
movsd xmm1, qword [0x18003f648]
comisd xmm1, xmm0
ja 0x18002027e
mov dl, 1
jmp 0x180020280
xor dl, dl
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x70], xmm0
mov qword [r12], rax
xor ecx, ecx
mov rax, qword [rsp + 0x70]
mov qword [r12 + 8], rax
add r12, 0x10
test dl, dl
mov eax, 9
cmove ecx, eax
mov dword [rsp + 0x20], ecx
jne 0x180020599
mov r14, qword [rbp - 0x80]
xor r15d, r15d
jmp 0x180020131
cmp r10, 0xfffffffffffffeaa
jl 0x180020564
cmp r10, 0x134
jg 0x18002054b
lea rax, [r10 + 0x16]
cmp rax, 0x2c
ja 0x180020354
movabs rax, 0x1fffffffffffff
cmp r8, rax
ja 0x180020354
xorps xmm0, xmm0
test r8, r8
js 0x180020306
cvtsi2sd xmm0, r8
jmp 0x18002031c
mov rax, r8
and r8d, 1
shr rax, 1
or rax, r8
cvtsi2sd xmm0, rax
addsd xmm0, xmm0
lea rax, [r10*8]
lea rcx, [0x18003a920]
test r10, r10
jns 0x180020339
sub rcx, rax
divsd xmm0, qword [rcx]
jmp 0x18002033e
mulsd xmm0, qword [rax + rcx]
cmp dil, 0x2d
jne 0x180020577
xorps xmm0, xmmword [0x18003f750]
jmp 0x180020577
test r8, r8
je 0x180020564
imul r14, r10, 0x3526a
mov dword [rsp + 0x20], 0
sar r14, 0x10
add r14, 0x43f
bsr rax, r8
je 0x180020386
mov ecx, 0x3f
sub ecx, eax
jmp 0x18002038b
mov ecx, 0x40
shl r8, cl
mov dword [rsp + 0x20], ecx
lea ecx, [r10*2 + 0x2ac]
mov rax, qword [r13 + rcx*8 + 0x3a9e0]
mul r8
mov qword [rsp + 0x78], rdx
mov r9, rax
mov qword [rsp + 0x70], rax
and edx, 0x1ff
movaps xmm0, xmmword [rsp + 0x70]
movdqa xmmword [rsp + 0x70], xmm0
cmp rdx, 0x1ff
jne 0x1800203ec
inc ecx
mov rax, qword [r13 + rcx*8 + 0x3a9e0]
mul r8
lea r11, [r9 + rdx]
cmp rdx, r11
mov rdx, qword [rsp + 0x78]
jbe 0x1800203f6
inc rdx
jmp 0x1800203f6
mov rdx, qword [rsp + 0x78]
mov r11, qword [rsp + 0x70]
mov rax, rdx
mov r8, rdx
shr rax, 0x3f
mov r9, r14
lea rsi, [rax + 9]
xor eax, 1
add eax, dword [rsp + 0x20]
mov rcx, rsi
shr r8, cl
movsxd rcx, eax
sub r9, rcx
test r9, r9
jg 0x180020488
sub rcx, r14
inc rcx
cmp rcx, 0x40
jge 0x180020564
shr r8, cl
xor eax, eax
mov rdx, r8
mov ecx, eax
and edx, 1
add rdx, r8
movabs r8, 0x8000000000000000
shr rdx, 1
cmp dil, 0x2d
cmove rcx, r8
movabs r8, 0x10000000000000
cmp rdx, r8
cmovae rax, r8
or rcx, rax
movabs rax, 0xffefffffffffffff
and rdx, rax
or rcx, rdx
mov qword [rsp + 0x40], rcx
movsd xmm0, qword [rsp + 0x40]
jmp 0x180020577
cmp r11, 1
ja 0x1800204b4
lea rax, [r10 + 4]
cmp rax, 0x1b
ja 0x1800204b4
movzx eax, r8b
and al, 3
cmp al, 1
jne 0x1800204b4
mov rcx, rsi
mov rax, r8
shl rax, cl
cmp rax, rdx
jne 0x1800204b4
and r8, 0xfffffffffffffffe
mov rcx, r8
movabs rax, 0x20000000000000
and ecx, 1
add rcx, r8
shr rcx, 1
cmp rcx, rax
jb 0x1800204dc
movabs rcx, 0x10000000000000
inc r9
cmp r9, 0x7fe
jle 0x180020519
mov rcx, rbx
call fcn.1800151a0
comisd xmm0, xmmword [0x18003f638]
ja 0x180020550
movsd xmm1, qword [0x18003f648]
comisd xmm1, xmm0
jbe 0x180020577
mov r14, qword [rbp - 0x80]
xor r15d, r15d
mov dword [rsp + 0x20], 9
jmp 0x180020131
xor eax, eax
mov edx, 0x800
cmp dil, 0x2d
cmove eax, edx
movabs rdx, 0xffefffffffffffff
or rax, r9
and rcx, rdx
shl rax, 0x34
or rax, rcx
mov qword [rsp + 0x40], rax
movsd xmm0, qword [rsp + 0x40]
jmp 0x180020577
test r8, r8
je 0x180020564
mov r14, qword [rbp - 0x80]
xor r15d, r15d
mov dword [rsp + 0x20], 9
jmp 0x180020131
cmp dil, 0x2d
jne 0x180020574
movsd xmm0, qword [0x18003f640]
jmp 0x180020577
xorps xmm0, xmm0
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x70], xmm0
mov qword [r12], rax
mov rax, qword [rsp + 0x70]
mov qword [r12 + 8], rax
add r12, 0x10
mov r14, qword [rbp - 0x80]
neg r15b
sbb eax, eax
and eax, 9
mov dword [rsp + 0x20], eax
xor r15d, r15d
jmp 0x180020131
mov ecx, dword [r10 + 8]
mov r8, rsi
mov rax, qword [r10 + 0x10]
dec ecx
mov ecx, dword [rax + rcx*4]
cmp byte [rcx + rsi], 0x5d
jne case.0x18001fab3.35
mov eax, dword [r14]
cmp byte [rax + rsi], 0x5d
jne 0x18002060b
mov rax, qword [r10 + 0x50]
mov rdx, r12
add r14, 4
sub rdx, qword [rax]
movabs rax, 0x5b00000000000000
sar rdx, 3
lea ecx, [rdx + 2]
or rcx, rax
mov eax, edx
mov qword [r12], rcx
movabs rdx, 0x5d00000000000000
jmp 0x18001fa34
inc r11d
mov eax, r11d
mov dword [rsp + 0x20], r11d
cmp rax, qword [r10 + 0x28]
jae 0x180022491
mov rax, qword [r10 + 0x38]
mov rcx, r12
add r12, 8
mov byte [r11 + rax], 1
mov rax, qword [r10 + 0x50]
sub rcx, qword [rax]
mov rax, qword [r10 + 0x30]
sar rcx, 3
mov dword [rax + r11*8], ecx
mov rax, qword [r10 + 0x30]
mov dword [rax + r11*8 + 4], r15d
mov rax, qword [r10 + 0x30]
inc dword [rax + r11*8 + 4]
mov esi, dword [r14]
mov r11, r12
add rsi, r8
add r14, 4
mov qword [rbp - 0x80], r14
movzx edi, byte [rsi]
cmp dil, 0x5b
je 0x180021146
cmp dil, 0x7b
je 0x1800210ea
cmp dil, 0x22
jne 0x1800209a4
mov rax, qword [r10 + 0x50]
lea r9, [rsi + 1]
movdqa xmm3, xmmword [0x18003f6e0]
lea r8, [rbx + 4]
movdqa xmm4, xmmword [0x18003f710]
mov rcx, rbx
movdqa xmm0, xmm3
sub rcx, qword [rax + 8]
movabs rax, 0x2200000000000000
or rcx, rax
mov qword [r12], rcx
add r12, 8
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmm2, xmmword [r9]
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
movdqa xmm0, xmm3
pcmpeqb xmm0, xmm2
movdqu xmmword [r8 + 0x10], xmm1
movsxd r10, eax
shl r10, 0x10
pcmpeqb xmm1, xmm4
pmovmskb eax, xmm0
movdqu xmmword [r8], xmm2
movsxd rcx, eax
pcmpeqb xmm2, xmm4
or r10, rcx
pmovmskb eax, xmm1
shl r10, 0x10
movsxd rcx, eax
or r10, rcx
pmovmskb ecx, xmm2
shl r10, 0x10
mov ecx, ecx
or r10, rcx
mov rdx, r10
shr rdx, 0x20
lea eax, [r10 - 1]
test edx, eax
jne 0x18002096f
test r10d, r10d
je 0x1800208f6
mov eax, r10d
bsf rcx, rax
lea eax, [rcx + 1]
movsxd r10, eax
movzx eax, byte [r9 + r10]
cmp al, 0x75
jne 0x1800208d0
movsxd rax, ecx
add r9, rax
add r8, rax
movzx eax, byte [r9 + 3]
movzx ecx, byte [r9 + 4]
mov edx, dword [r13 + rcx*4 + 0x39c88]
or edx, dword [r13 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or edx, dword [r13 + rax*4 + 0x39940]
movzx eax, byte [r9 + 2]
add r9, 6
or edx, dword [r13 + rax*4 + 0x3a318]
lea r11d, [rdx - 0xd800]
cmp r11d, 0x3ff
ja 0x18002081b
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x18002097d
movzx eax, byte [r9 + 3]
movzx ecx, byte [r9 + 4]
mov r10d, dword [r13 + rcx*4 + 0x39c88]
or r10d, dword [r13 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or r10d, dword [r13 + rax*4 + 0x39940]
movzx eax, byte [r9 + 2]
or r10d, dword [r13 + rax*4 + 0x3a318]
sub r10d, 0xdc00
cmp r10d, 0x400
jae 0x18002097d
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x18002082c
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x18002097d
cmp edx, 0x7f
ja 0x18002083c
mov byte [r8], dl
inc r8
jmp 0x1800208fe
cmp edx, 0x7ff
ja 0x180020861
mov eax, edx
and dl, 0x3f
shr eax, 6
add dl, 0x80
sub al, 0x40
mov byte [r8 + 1], dl
mov byte [r8], al
add r8, 2
jmp 0x1800208fe
cmp edx, 0xffff
ja 0x180020890
mov eax, edx
shr eax, 0xc
sub al, 0x20
mov byte [r8], al
mov eax, edx
shr eax, 6
and dl, 0x3f
and al, 0x3f
add dl, 0x80
add al, 0x80
mov byte [r8 + 2], dl
mov byte [r8 + 1], al
add r8, 3
jmp 0x1800208fe
cmp edx, 0x10ffff
ja 0x18002097d
mov eax, edx
shr eax, 0x12
sub al, 0x10
mov byte [r8], al
mov eax, edx
shr eax, 0xc
and al, 0x3f
add al, 0x80
mov byte [r8 + 1], al
mov eax, edx
shr eax, 6
and dl, 0x3f
and al, 0x3f
add dl, 0x80
add al, 0x80
mov byte [r8 + 3], dl
mov byte [r8 + 2], al
add r8, 4
jmp 0x1800208fe
movzx edx, byte [rax + r13 + 0x3dea0]
test dl, dl
je 0x18002097d
movsxd rax, ecx
mov byte [rax + r8], dl
lea eax, [rcx + 2]
movsxd rcx, eax
add r9, rcx
add r8, r10
jmp 0x1800208fe
add r9, 0x20
add r8, 0x20
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmm2, xmmword [r9]
movdqa xmm0, xmm3
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
movdqa xmm0, xmm2
movdqu xmmword [r8], xmm2
movsxd rdx, eax
pcmpeqb xmm0, xmm3
shl rdx, 0x10
pcmpeqb xmm2, xmm4
pmovmskb eax, xmm0
movdqu xmmword [r8 + 0x10], xmm1
movsxd rcx, eax
pcmpeqb xmm1, xmm4
or rdx, rcx
pmovmskb eax, xmm1
shl rdx, 0x10
movsxd rcx, eax
or rdx, rcx
pmovmskb ecx, xmm2
shl rdx, 0x10
mov ecx, ecx
or rdx, rcx
mov r10d, edx
shr rdx, 0x20
lea eax, [r10 - 1]
test edx, eax
je 0x180020730
mov eax, edx
bsf rcx, rax
movsxd rcx, ecx
add rcx, r8
jne 0x180020987
mov eax, 5
jmp 0x1800210c5
mov eax, ecx
sub eax, ebx
sub eax, 4
mov dword [rbx], eax
lea rbx, [rcx + 1]
mov qword [rsp + 0x28], rbx
mov eax, r15d
mov byte [rcx], 0
jmp 0x1800210c5
cmp dil, 0x3a
jb 0x180020a7d
cmp dil, 0x66
je 0x180020a40
cmp dil, 0x6e
je 0x180020a04
cmp dil, 0x74
jne case.0x18001fab3.35
movzx eax, byte [rsi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi]
xor eax, 0x65757274
or ecx, eax
je 0x1800209ea
mov eax, 6
jmp 0x1800210cf
movabs rax, 0x7400000000000000
mov qword [r12], rax
add r12, 8
mov eax, r15d
jmp 0x1800210cf
movzx eax, byte [rsi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi]
xor eax, 0x6c6c756e
or ecx, eax
je 0x180020a26
mov eax, 8
jmp 0x1800210cf
movabs rax, 0x6e00000000000000
mov qword [r12], rax
add r12, 8
mov eax, r15d
jmp 0x1800210cf
movzx eax, byte [rsi + 5]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi + 1]
xor eax, 0x65736c61
or ecx, eax
je 0x180020a63
mov eax, 7
jmp 0x1800210cf
movabs rax, 0x6600000000000000
mov qword [r12], rax
add r12, 8
mov eax, r15d
jmp 0x1800210cf
cmp dil, 0x2d
mov rdx, r15
mov r8, r15
sete dl
add rdx, rsi
mov r14, rdx
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180020aa9
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x180020a90
mov r10, rdx
sub r10, r14
je 0x1800210be
cmp byte [r14], 0x30
jne 0x180020ac5
cmp r10, 1
ja 0x1800210be
xor r9b, r9b
mov rbx, r15
cmp byte [rdx], 0x2e
jne 0x180020b8a
mov rax, qword [rdx + 1]
inc rdx
movabs rcx, 0x606060606060606
movabs r10, 0xf0f0f0f0f0f0f0f
add rcx, rax
mov r9b, 1
shr rcx, 4
mov rbx, rdx
xor rcx, rax
and rcx, r10
xor rcx, rax
movabs rax, 0x3333333333333333
cmp rcx, rax
jne 0x180020b50
movdqu xmm0, xmmword [rdx]
imul r8, r8, 0x5f5e100
psubb xmm0, xmmword [0x18003f6f0]
pmaddubsw xmm0, xmmword [0x18003f690]
pmaddwd xmm0, xmmword [0x18003f660]
packusdw xmm0, xmm0
pmaddwd xmm0, xmmword [0x18003f670]
movd ecx, xmm0
add r8, rcx
add rdx, 8
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180020b67
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
jbe 0x180020b59
sub rbx, rdx
jne 0x180020b82
lea eax, [rbx + 9]
mov rbx, qword [rsp + 0x28]
jmp 0x1800210c1
mov eax, edx
sub eax, r14d
movsxd r10, eax
movzx eax, byte [rdx]
sub al, 0x45
test al, 0xdf
je 0x180020c9c
test r9b, r9b
jne 0x180020d20
cmp dil, 0x2d
mov rax, r15
setne al
add rax, 0x13
cmp r10, rax
jbe 0x180020bc2
mov rbx, qword [rsp + 0x28]
mov eax, 0xa
jmp 0x1800210c1
jne 0x180020c3e
cmp dil, 0x2d
jne 0x180020c1a
mov rbx, qword [rsp + 0x28]
movabs rax, 0x8000000000000000
cmp r8, rax
jbe 0x180020be8
mov eax, 0xa
jmp 0x1800210c1
neg r8
movabs rax, 0x6c00000000000000
mov qword [r12], rax
mov qword [r12 + 8], r8
add r12, 0x10
movzx eax, byte [rdx]
movzx ecx, byte [rax + r13 + 0x39740]
neg cl
sbb eax, eax
and eax, 9
jmp 0x1800210c1
cmp dil, 0x31
jne 0x180020c2f
movabs rax, 0x7fffffffffffffff
cmp r8, rax
ja 0x180020c4d
mov rbx, qword [rsp + 0x28]
mov eax, 9
jmp 0x1800210c1
movabs rax, 0x7fffffffffffffff
cmp r8, rax
jbe 0x180020c59
movabs rax, 0x7500000000000000
jmp 0x180020c6c
cmp dil, 0x2d
jne 0x180020c62
neg r8
movabs rax, 0x6c00000000000000
mov rbx, qword [rsp + 0x28]
add r12, 0x10
mov qword [r11], rax
mov qword [r11 + 8], r8
movzx eax, byte [rdx]
cmp byte [rax + r13 + 0x39740], 0
je 0x180020c94
mov eax, 9
jmp 0x1800210c1
mov eax, r15d
jmp 0x1800210c1
movzx r11d, byte [rdx + 1]
inc rdx
lea eax, [r11 - 0x2b]
test al, 0xfd
jne 0x180020caf
inc rdx
mov r9, rdx
mov rcx, r15
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180020cce
movzx eax, al
lea rcx, [rcx + rcx*4]
inc rdx
lea rcx, [rax + rcx*2]
jmp 0x180020cb5
cmp rdx, r9
jne 0x180020ce2
mov rbx, qword [rsp + 0x28]
mov eax, 9
jmp 0x1800210c1
lea rax, [r9 + 0x12]
cmp rdx, rax
jbe 0x180020d0f
cmp byte [r9], 0x30
jne 0x180020cfa
inc r9
cmp byte [r9], 0x30
je 0x180020cf1
lea rax, [r9 + 0x12]
cmp rdx, rax
movabs rax, 0xde0b6b3a763ffff
cmova rcx, rax
mov rax, rcx
neg rax
cmp r11b, 0x2d
cmovne rax, rcx
add rbx, rax
movzx eax, byte [rdx]
movzx r15d, byte [rax + r13 + 0x39740]
cmp r10, 0x13
jbe 0x180020dac
mov rcx, r14
movzx eax, byte [rcx]
sub al, 0x2e
test al, 0xfd
jne 0x180020d43
inc rcx
jmp 0x180020d35
sub r10, rcx
add r10, r14
cmp r10, 0x13
jbe 0x180020dac
mov rcx, rsi
call fcn.1800151a0
comisd xmm0, xmm9
ja 0x180020d69
comisd xmm8, xmm0
ja 0x180020d69
mov dl, 1
jmp 0x180020d6b
xor dl, dl
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x40], xmm0
mov qword [r12], rax
mov ecx, 9
mov rax, qword [rsp + 0x40]
mov qword [r12 + 8], rax
xor eax, eax
add r12, 0x10
test dl, dl
cmove eax, ecx
jne 0x1800210ac
mov rbx, qword [rsp + 0x28]
xor r15d, r15d
jmp 0x1800210c1
cmp rbx, 0xfffffffffffffeaa
jl 0x18002107c
cmp rbx, 0x134
jg 0x180021068
lea rax, [rbx + 0x16]
cmp rax, 0x2c
ja 0x180020e51
movabs rax, 0x1fffffffffffff
cmp r8, rax
ja 0x180020e51
xorps xmm0, xmm0
test r8, r8
js 0x180020df2
cvtsi2sd xmm0, r8
jmp 0x180020e08
mov rax, r8
and r8d, 1
shr rax, 1
or rax, r8
cvtsi2sd xmm0, rax
addsd xmm0, xmm0
lea rcx, [rbx*8]
lea rax, [0x18003a920]
test rbx, rbx
jns 0x180020e25
sub rax, rcx
divsd xmm0, qword [rax]
jmp 0x180020e2a
mulsd xmm0, qword [rcx + rax]
movsd qword [rsp + 0x30], xmm0
cmp dil, 0x2d
jne 0x180021060
movq xmm0, xmm0
xorps xmm0, xmm10
movsd qword [rsp + 0x30], xmm0
movq xmm0, xmm0
jmp 0x18002108a
test r8, r8
jne 0x180020e7a
cmp dil, 0x2d
jne 0x180020e6b
movsd qword [rsp + 0x30], xmm6
movq xmm0, xmm6
jmp 0x18002108a
movsd qword [rsp + 0x30], xmm7
movq xmm0, xmm7
jmp 0x18002108a
imul r9, rbx, 0x3526a
xor r14d, r14d
sar r9, 0x10
add r9, 0x43f
mov dword [rsp + 0x60], r14d
bsr rax, r8
je 0x180020ea5
mov r10d, 0x3f
sub r10d, eax
jmp 0x180020eab
mov r10d, 0x40
mov ecx, r10d
shl r8, cl
lea ecx, [rbx*2 + 0x2ac]
mov rax, qword [r13 + rcx*8 + 0x3a9e0]
mul r8
mov qword [rbp - 0x68], rdx
mov r11, rax
and edx, 0x1ff
mov qword [rbp - 0x70], rax
movaps xmm0, xmmword [rbp - 0x70]
movdqa xmmword [rsp + 0x40], xmm0
cmp rdx, 0x1ff
jne 0x180020f06
inc ecx
mov rax, qword [r13 + rcx*8 + 0x3a9e0]
mul r8
add r11, rdx
cmp rdx, r11
mov rdx, qword [rsp + 0x48]
jbe 0x180020f10
inc rdx
jmp 0x180020f10
mov rdx, qword [rsp + 0x48]
mov r11, qword [rsp + 0x40]
mov rax, rdx
mov r8, rdx
shr rax, 0x3f
lea rcx, [rax + 9]
xor eax, 1
add eax, r10d
shr r8, cl
cdqe
sub r9, rax
test r9, r9
jg 0x180020fb7
mov ecx, 1
sub rcx, r9
cmp rcx, 0x40
jl 0x180020f5c
cmp dil, 0x2d
jne 0x180020e6b
movsd qword [rsp + 0x30], xmm6
movq xmm0, xmm6
jmp 0x18002108a
shr r8, cl
movabs rax, 0x10000000000000
mov rdx, r8
mov rcx, r14
and edx, 1
add rdx, r8
movabs r8, 0x8000000000000000
shr rdx, 1
cmp rdx, rax
cmovae rcx, rax
cmp dil, 0x2d
mov rax, r14
cmove rax, r8
or rcx, rax
movabs rax, 0xffefffffffffffff
and rdx, rax
or rcx, rdx
mov qword [rsp + 0x30], rcx
movsd xmm0, qword [rsp + 0x30]
jmp 0x18002108a
cmp r11, 1
ja 0x180020fe0
lea rax, [rbx + 4]
cmp rax, 0x1b
ja 0x180020fe0
movzx eax, r8b
and al, 3
cmp al, 1
jne 0x180020fe0
mov rax, r8
shl rax, cl
cmp rax, rdx
jne 0x180020fe0
and r8, 0xfffffffffffffffe
mov rcx, r8
movabs rax, 0x20000000000000
and ecx, 1
add rcx, r8
shr rcx, 1
cmp rcx, rax
jb 0x180021008
movabs rcx, 0x10000000000000
inc r9
cmp r9, 0x7fe
jle 0x180021034
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.180015d00
test al, al
jne 0x180021060
mov rbx, qword [rsp + 0x28]
mov eax, 9
xor r15d, r15d
jmp 0x1800210c1
cmp dil, 0x2d
mov edx, 0x800
mov rax, r14
cmove rax, rdx
movabs rdx, 0xffefffffffffffff
or rax, r9
and rcx, rdx
shl rax, 0x34
or rax, rcx
mov qword [rsp + 0x30], rax
movsd xmm0, qword [rsp + 0x30]
jmp 0x18002108a
test r8, r8
je 0x18002107c
mov rbx, qword [rsp + 0x28]
mov eax, 9
xor r15d, r15d
jmp 0x1800210c1
cmp dil, 0x2d
jne 0x180021087
movaps xmm0, xmm6
jmp 0x18002108a
movaps xmm0, xmm7
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x40], xmm0
mov qword [r12], rax
mov rax, qword [rsp + 0x40]
mov qword [r12 + 8], rax
add r12, 0x10
mov rbx, qword [rsp + 0x28]
neg r15b
sbb eax, eax
and eax, 9
xor r15d, r15d
jmp 0x1800210c1
mov eax, r9d
mov r14, qword [rbp - 0x80]
mov r8, qword [rsp + 0x50]
mov r10, qword [rsp + 0x58]
test eax, eax
jne 0x180022496
mov edi, dword [rsp + 0x20]
movabs rdx, 0x5d00000000000000
jmp 0x18002119a
mov eax, dword [r14]
cmp byte [rax + r8], 0x7d
jne 0x1800215db
mov rax, qword [r10 + 0x50]
mov rdx, r12
mov edi, dword [rsp + 0x20]
movabs rsi, 0x7b00000000000000
add r14, 4
sub rdx, qword [rax]
sar rdx, 3
mov eax, edx
lea ecx, [rdx + 2]
movabs rdx, 0x7d00000000000000
or rcx, rsi
or rax, rdx
mov qword [r12], rcx
mov qword [r12 + 8], rax
add r12, 0x10
movabs rdx, 0x5d00000000000000
jmp 0x1800211a4
mov eax, dword [r14]
mov r11d, dword [rsp + 0x20]
cmp byte [rax + r8], 0x5d
jne 0x18002060b
mov rax, qword [r10 + 0x50]
mov rdx, r12
add r14, 4
mov edi, r11d
sub rdx, qword [rax]
movabs rax, 0x5b00000000000000
sar rdx, 3
lea ecx, [rdx + 2]
or rcx, rax
mov eax, edx
mov qword [r12], rcx
movabs rdx, 0x5d00000000000000
or rax, rdx
mov qword [r12 + 8], rax
add r12, 0x10
movabs rsi, 0x7b00000000000000
mov eax, dword [r14]
add r14, 4
movzx ecx, byte [rax + r8]
cmp cl, 0x2c
je 0x18002245e
cmp cl, 0x5d
jne case.0x18001fab3.35
mov rax, qword [r10 + 0x30]
lea r11, [r10 + 0x50]
mov ecx, edi
mov r9d, dword [rax + rcx*8]
mov eax, r9d
or rax, rdx
mov qword [r12], rax
add r12, 8
mov rax, qword [r10 + 0x30]
mov ecx, dword [rax + rcx*8 + 4]
mov rax, qword [r11]
mov r8, qword [rax]
mov eax, 0xffffff
cmp ecx, eax
cmova ecx, eax
mov rax, r12
sub rax, r8
mov edx, ecx
sar rax, 3
mov eax, eax
shl rdx, 0x20
or rdx, rax
movabs rax, 0x5b00000000000000
or rdx, rax
mov qword [rsp + 0x40], r11
mov qword [r8 + r9*8], rdx
sub edi, 1
mov dword [rsp + 0x20], edi
je 0x18001fa40
mov rax, qword [r10 + 0x38]
mov r8, qword [rsp + 0x50]
cmp byte [rdi + rax], 0
jne 0x18002113a
mov eax, dword [r14]
add r14, 4
movzx ecx, byte [rax + r8]
cmp cl, 0x2c
jne 0x1800223fa
mov rax, qword [r10 + 0x30]
mov ecx, edi
inc dword [rax + rcx*8 + 4]
mov r9d, dword [r14]
add r14, 4
add r9, r8
cmp byte [r9], 0x22
jne case.0x18001fab3.35
mov rax, qword [r11]
lea r8, [rbx + 4]
movdqa xmm3, xmmword [0x18003f6e0]
mov rcx, rbx
movdqa xmm4, xmmword [0x18003f710]
sub rcx, qword [rax + 8]
movabs rax, 0x2200000000000000
or rcx, rax
mov qword [r12], rcx
add r12, 8
movdqu xmm1, xmmword [r9 + 0x11]
inc r9
movdqa xmm0, xmm1
pcmpeqb xmm0, xmm3
movdqu xmm2, xmmword [r9]
pmovmskb eax, xmm0
movdqa xmm0, xmm2
pcmpeqb xmm0, xmm3
movsxd r10, eax
shl r10, 0x10
pmovmskb eax, xmm0
movdqu xmmword [r8 + 0x10], xmm1
movsxd rcx, eax
pcmpeqb xmm1, xmm4
or r10, rcx
pmovmskb eax, xmm1
shl r10, 0x10
movdqu xmmword [r8], xmm2
movsxd rcx, eax
or r10, rcx
pcmpeqb xmm2, xmm4
shl r10, 0x10
pmovmskb ecx, xmm2
mov ecx, ecx
or r10, rcx
mov rdx, r10
shr rdx, 0x20
lea eax, [r10 - 1]
test edx, eax
jne 0x180021564
nop dword [rax + rax]
test r10d, r10d
je 0x1800214e6
mov eax, r10d
bsf rcx, rax
lea eax, [rcx + 1]
movsxd r10, eax
movzx eax, byte [r10 + r9]
cmp al, 0x75
jne 0x1800214c0
movsxd rax, ecx
add r9, rax
add r8, rax
movzx eax, byte [r9 + 3]
movzx ecx, byte [r9 + 4]
mov edx, dword [r13 + rcx*4 + 0x39c88]
or edx, dword [r13 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or edx, dword [r13 + rax*4 + 0x39940]
movzx eax, byte [r9 + 2]
add r9, 6
or edx, dword [r13 + rax*4 + 0x3a318]
lea r11d, [rdx - 0xd800]
cmp r11d, 0x3ff
ja 0x18002140b
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x180022483
movzx eax, byte [r9 + 3]
movzx ecx, byte [r9 + 4]
mov r10d, dword [r13 + rcx*4 + 0x39c88]
or r10d, dword [r13 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or r10d, dword [r13 + rax*4 + 0x39940]
movzx eax, byte [r9 + 2]
or r10d, dword [r13 + rax*4 + 0x3a318]
sub r10d, 0xdc00
cmp r10d, 0x400
jae 0x180022483
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x18002141c
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x180022483
cmp edx, 0x7f
ja 0x18002142c
mov byte [r8], dl
inc r8
jmp 0x1800214ee
cmp edx, 0x7ff
ja 0x180021451
mov eax, edx
and dl, 0x3f
shr eax, 6
add dl, 0x80
sub al, 0x40
mov byte [r8 + 1], dl
mov byte [r8], al
add r8, 2
jmp 0x1800214ee
cmp edx, 0xffff
ja 0x180021480
mov eax, edx
shr eax, 0xc
sub al, 0x20
mov byte [r8], al
mov eax, edx
shr eax, 6
and dl, 0x3f
and al, 0x3f
add dl, 0x80
add al, 0x80
mov byte [r8 + 2], dl
mov byte [r8 + 1], al
add r8, 3
jmp 0x1800214ee
cmp edx, 0x10ffff
ja 0x180022483
mov eax, edx
shr eax, 0x12
sub al, 0x10
mov byte [r8], al
mov eax, edx
shr eax, 0xc
and al, 0x3f
add al, 0x80
mov byte [r8 + 1], al
mov eax, edx
shr eax, 6
and dl, 0x3f
and al, 0x3f
add dl, 0x80
add al, 0x80
mov byte [r8 + 3], dl
mov byte [r8 + 2], al
add r8, 4
jmp 0x1800214ee
movzx edx, byte [rax + r13 + 0x3dea0]
test dl, dl
je 0x180022483
movsxd rax, ecx
mov byte [rax + r8], dl
lea eax, [rcx + 2]
movsxd rcx, eax
add r9, rcx
add r8, r10
jmp 0x1800214ee
add r9, 0x20
add r8, 0x20
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmm2, xmmword [r9]
movdqa xmm0, xmm1
pcmpeqb xmm0, xmm3
pmovmskb eax, xmm0
movdqa xmm0, xmm2
movdqu xmmword [r8], xmm2
movsxd rdx, eax
pcmpeqb xmm0, xmm3
shl rdx, 0x10
pcmpeqb xmm2, xmm4
pmovmskb eax, xmm0
movdqu xmmword [r8 + 0x10], xmm1
movsxd rcx, eax
pcmpeqb xmm1, xmm4
or rdx, rcx
pmovmskb eax, xmm1
shl rdx, 0x10
movsxd rcx, eax
or rdx, rcx
pmovmskb ecx, xmm2
shl rdx, 0x10
mov ecx, ecx
or rdx, rcx
mov r10d, edx
shr rdx, 0x20
lea eax, [r10 - 1]
test edx, eax
je 0x180021320
mov r11, qword [rsp + 0x40]
mov eax, edx
bsf rcx, rax
movsxd rcx, ecx
add rcx, r8
je 0x180022483
mov eax, ecx
lea rdx, [rcx + 1]
sub eax, ebx
mov qword [rsp + 0x28], rdx
sub eax, 4
mov dword [rbx], eax
mov byte [rcx], 0
mov eax, dword [r14]
mov rdi, r12
mov r8, qword [rsp + 0x50]
cmp byte [rax + r8], 0x3a
jne case.0x18001fab3.35
mov esi, dword [r14 + 4]
add r14, 8
add rsi, r8
mov qword [rbp - 0x80], r14
movzx ebx, byte [rsi]
cmp bl, 0x5b
je 0x180022388
cmp bl, 0x7b
jne 0x180021984
mov eax, dword [r14]
mov rbx, rdx
mov r10, qword [rsp + 0x58]
cmp byte [rax + r8], 0x7d
je 0x180021934
mov ecx, dword [rsp + 0x20]
inc ecx
mov eax, ecx
mov dword [rsp + 0x20], ecx
cmp rax, qword [r10 + 0x28]
jae 0x180022491
mov rax, qword [r10 + 0x38]
lea r11, [r10 + 0x50]
mov edx, ecx
mov qword [rsp + 0x40], r11
mov byte [rcx + rax], 0
mov rcx, r12
mov rax, qword [r11]
sub rcx, qword [rax]
mov rax, qword [r10 + 0x30]
sar rcx, 3
mov dword [rax + rdx*8], ecx
mov rax, qword [r10 + 0x30]
mov dword [rax + rdx*8 + 4], r15d
mov r9d, dword [r14]
add r14, 4
add r9, qword [rsp + 0x50]
cmp byte [r9], 0x22
jne case.0x18001fab3.35
mov rax, qword [r10 + 0x30]
lea r8, [rbx + 4]
movdqa xmm3, xmmword [0x18003f6e0]
mov rcx, rbx
movdqa xmm4, xmmword [0x18003f710]
movdqa xmm0, xmm3
inc dword [rax + rdx*8 + 4]
mov rax, qword [r11]
sub rcx, qword [rax + 8]
movabs rax, 0x2200000000000000
or rcx, rax
mov qword [r12 + 8], rcx
add r12, 0x10
movdqu xmm1, xmmword [r9 + 0x11]
inc r9
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
movdqa xmm0, xmm3
movdqu xmm2, xmmword [r9]
movsxd r10, eax
shl r10, 0x10
pcmpeqb xmm0, xmm2
pmovmskb eax, xmm0
movdqa xmm0, xmm4
pcmpeqb xmm0, xmm1
movdqu xmmword [r8], xmm2
movsxd rcx, eax
or r10, rcx
pmovmskb eax, xmm0
shl r10, 0x10
movdqa xmm0, xmm4
pcmpeqb xmm0, xmm2
movsxd rcx, eax
or r10, rcx
pmovmskb ecx, xmm0
shl r10, 0x10
movdqu xmmword [r8 + 0x10], xmm1
mov ecx, ecx
or r10, rcx
mov rdx, r10
shr rdx, 0x20
lea eax, [r10 - 1]
test edx, eax
jne 0x180021564
nop
test r10d, r10d
je 0x1800218b6
mov eax, r10d
bsf rcx, rax
lea eax, [rcx + 1]
movsxd r10, eax
movzx eax, byte [r10 + r9]
cmp al, 0x75
jne 0x180021890
movsxd rax, ecx
add r9, rax
add r8, rax
movzx eax, byte [r9 + 3]
movzx ecx, byte [r9 + 4]
mov edx, dword [r13 + rcx*4 + 0x39c88]
or edx, dword [r13 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or edx, dword [r13 + rax*4 + 0x39940]
movzx eax, byte [r9 + 2]
add r9, 6
or edx, dword [r13 + rax*4 + 0x3a318]
lea r11d, [rdx - 0xd800]
cmp r11d, 0x3ff
ja 0x1800217db
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x180022483
movzx eax, byte [r9 + 3]
movzx ecx, byte [r9 + 4]
mov r10d, dword [r13 + rcx*4 + 0x39c88]
or r10d, dword [r13 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or r10d, dword [r13 + rax*4 + 0x39940]
movzx eax, byte [r9 + 2]
or r10d, dword [r13 + rax*4 + 0x3a318]
sub r10d, 0xdc00
cmp r10d, 0x400
jae 0x180022483
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x1800217ec
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x180022483
cmp edx, 0x7f
ja 0x1800217fc
mov byte [r8], dl
inc r8
jmp 0x1800218be
cmp edx, 0x7ff
ja 0x180021821
mov eax, edx
and dl, 0x3f
shr eax, 6
add dl, 0x80
sub al, 0x40
mov byte [r8 + 1], dl
mov byte [r8], al
add r8, 2
jmp 0x1800218be
cmp edx, 0xffff
ja 0x180021850
mov eax, edx
shr eax, 0xc
sub al, 0x20
mov byte [r8], al
mov eax, edx
shr eax, 6
and dl, 0x3f
and al, 0x3f
add dl, 0x80
add al, 0x80
mov byte [r8 + 2], dl
mov byte [r8 + 1], al
add r8, 3
jmp 0x1800218be
cmp edx, 0x10ffff
ja 0x180022483
mov eax, edx
shr eax, 0x12
sub al, 0x10
mov byte [r8], al
mov eax, edx
shr eax, 0xc
and al, 0x3f
add al, 0x80
mov byte [r8 + 1], al
mov eax, edx
shr eax, 6
and dl, 0x3f
and al, 0x3f
add dl, 0x80
add al, 0x80
mov byte [r8 + 3], dl
mov byte [r8 + 2], al
add r8, 4
jmp 0x1800218be
movzx edx, byte [rax + r13 + 0x3dea0]
test dl, dl
je 0x180022483
movsxd rax, ecx
mov byte [rax + r8], dl
lea eax, [rcx + 2]
movsxd rcx, eax
add r9, rcx
add r8, r10
jmp 0x1800218be
add r9, 0x20
add r8, 0x20
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmm2, xmmword [r9]
movdqa xmm0, xmm1
pcmpeqb xmm0, xmm3
pmovmskb eax, xmm0
movdqa xmm0, xmm2
movdqu xmmword [r8], xmm2
movsxd rdx, eax
pcmpeqb xmm0, xmm3
shl rdx, 0x10
pcmpeqb xmm2, xmm4
pmovmskb eax, xmm0
movdqu xmmword [r8 + 0x10], xmm1
movsxd rcx, eax
pcmpeqb xmm1, xmm4
or rdx, rcx
pmovmskb eax, xmm1
shl rdx, 0x10
movsxd rcx, eax
or rdx, rcx
pmovmskb ecx, xmm2
shl rdx, 0x10
mov ecx, ecx
or rdx, rcx
mov r10d, edx
shr rdx, 0x20
lea eax, [r10 - 1]
test edx, eax
je 0x1800216f0
jmp 0x18002155f
mov rax, qword [r10 + 0x50]
lea r11, [r10 + 0x50]
mov edi, dword [rsp + 0x20]
mov rdx, r12
movabs rsi, 0x7b00000000000000
mov qword [rsp + 0x40], r11
add r14, 4
sub rdx, qword [rax]
sar rdx, 3
mov eax, edx
lea ecx, [rdx + 2]
movabs rdx, 0x7d00000000000000
or rcx, rsi
or rax, rdx
mov qword [r12], rcx
mov qword [r12 + 8], rax
add r12, 0x10
jmp 0x180021241
cmp bl, 0x22
jne 0x180021cd3
movdqa xmm3, xmmword [0x18003f6e0]
lea r8, [rdx + 4]
movdqa xmm4, xmmword [0x18003f710]
lea r9, [rsi + 1]
mov rbx, qword [rsp + 0x70]
mov rcx, rdx
mov rax, qword [rbx]
sub rcx, qword [rax + 8]
movabs rax, 0x2200000000000000
or rcx, rax
mov qword [r12], rcx
add r12, 8
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmm2, xmmword [r9]
movdqa xmm0, xmm1
pcmpeqb xmm0, xmm3
pmovmskb eax, xmm0
movdqa xmm0, xmm2
pcmpeqb xmm0, xmm3
movdqu xmmword [r8], xmm2
movsxd r10, eax
pmovmskb eax, xmm0
movdqa xmm0, xmm4
shl r10, 0x10
pcmpeqb xmm0, xmm1
movdqu xmmword [r8 + 0x10], xmm1
movsxd rcx, eax
or r10, rcx
pmovmskb eax, xmm0
shl r10, 0x10
movdqa xmm0, xmm4
pcmpeqb xmm0, xmm2
movsxd rcx, eax
or r10, rcx
pmovmskb ecx, xmm0
shl r10, 0x10
mov ecx, ecx
or r10, rcx
mov rdx, r10
shr rdx, 0x20
lea eax, [r10 - 1]
test edx, eax
jne 0x180021c89
test r10d, r10d
je 0x180021c08
mov eax, r10d
bsf rcx, rax
lea eax, [rcx + 1]
movsxd r10, eax
movzx eax, byte [r9 + r10]
cmp al, 0x75
jne 0x180021be2
movsxd rax, ecx
add r9, rax
add r8, rax
movzx eax, byte [r9 + 4]
movzx ecx, byte [r9 + 5]
mov edx, dword [r13 + rcx*4 + 0x39940]
or edx, dword [r13 + rax*4 + 0x39c88]
movzx eax, byte [r9 + 3]
or edx, dword [r13 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 2]
add r9, 6
or edx, dword [r13 + rax*4 + 0x3a318]
lea r11d, [rdx - 0xd800]
cmp r11d, 0x3ff
ja 0x180021b2d
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x180021c97
movzx eax, byte [r9 + 4]
movzx ecx, byte [r9 + 5]
mov r10d, dword [r13 + rcx*4 + 0x39940]
or r10d, dword [r13 + rax*4 + 0x39c88]
movzx eax, byte [r9 + 3]
or r10d, dword [r13 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 2]
or r10d, dword [r13 + rax*4 + 0x3a318]
sub r10d, 0xdc00
cmp r10d, 0x400
jae 0x180021c97
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x180021b3e
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x180021c97
cmp edx, 0x7f
ja 0x180021b4e
mov byte [r8], dl
inc r8
jmp 0x180021c10
cmp edx, 0x7ff
ja 0x180021b73
mov eax, edx
and dl, 0x3f
shr eax, 6
add dl, 0x80
sub al, 0x40
mov byte [r8 + 1], dl
mov byte [r8], al
add r8, 2
jmp 0x180021c10
cmp edx, 0xffff
ja 0x180021ba2
mov eax, edx
shr eax, 0xc
sub al, 0x20
mov byte [r8], al
mov eax, edx
shr eax, 6
and dl, 0x3f
and al, 0x3f
add dl, 0x80
add al, 0x80
mov byte [r8 + 2], dl
mov byte [r8 + 1], al
add r8, 3
jmp 0x180021c10
cmp edx, 0x10ffff
ja 0x180021c97
mov eax, edx
shr eax, 0x12
sub al, 0x10
mov byte [r8], al
mov eax, edx
shr eax, 0xc
and al, 0x3f
add al, 0x80
mov byte [r8 + 1], al
mov eax, edx
shr eax, 6
and dl, 0x3f
and al, 0x3f
add dl, 0x80
add al, 0x80
mov byte [r8 + 3], dl
mov byte [r8 + 2], al
add r8, 4
jmp 0x180021c10
movzx edx, byte [rax + r13 + 0x3dea0]
test dl, dl
je 0x180021c97
movsxd rax, ecx
mov byte [rax + r8], dl
lea eax, [rcx + 2]
movsxd rcx, eax
add r9, rcx
add r8, r10
jmp 0x180021c10
add r9, 0x20
add r8, 0x20
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmm2, xmmword [r9]
movdqa xmm0, xmm1
pcmpeqb xmm0, xmm3
pmovmskb eax, xmm0
movdqa xmm0, xmm3
pcmpeqb xmm0, xmm2
movdqu xmmword [r8], xmm2
movsxd rdx, eax
shl rdx, 0x10
pmovmskb eax, xmm0
movdqa xmm0, xmm4
pcmpeqb xmm0, xmm1
movdqu xmmword [r8 + 0x10], xmm1
movsxd rcx, eax
or rdx, rcx
pmovmskb eax, xmm0
shl rdx, 0x10
movdqa xmm0, xmm4
pcmpeqb xmm0, xmm2
movsxd rcx, eax
or rdx, rcx
pmovmskb ecx, xmm0
shl rdx, 0x10
mov ecx, ecx
or rdx, rcx
mov r10d, edx
shr rdx, 0x20
lea eax, [r10 - 1]
test edx, eax
je 0x180021a42
mov eax, edx
bsf rcx, rax
movsxd rcx, ecx
add rcx, r8
jne 0x180021ca9
mov eax, 5
mov qword [rsp + 0x40], rbx
mov r11, rbx
jmp 0x180021f52
mov rdx, qword [rsp + 0x28]
mov eax, ecx
sub eax, edx
mov qword [rsp + 0x40], rbx
sub eax, 4
mov r11, rbx
mov dword [rdx], eax
lea rdx, [rcx + 1]
mov qword [rsp + 0x28], rdx
mov eax, r15d
mov byte [rcx], 0
jmp 0x180021f52
cmp bl, 0x3a
jb 0x180021da8
cmp bl, 0x66
je 0x180021d6b
cmp bl, 0x6e
je 0x180021d2f
cmp bl, 0x74
jne case.0x18001fab3.35
movzx eax, byte [rsi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi]
xor eax, 0x65757274
or ecx, eax
je 0x180021d15
mov eax, 6
jmp 0x180021f57
movabs rax, 0x7400000000000000
mov qword [r12], rax
add r12, 8
mov eax, r15d
jmp 0x180021f57
movzx eax, byte [rsi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi]
xor eax, 0x6c6c756e
or ecx, eax
je 0x180021d51
mov eax, 8
jmp 0x180021f57
movabs rax, 0x6e00000000000000
mov qword [r12], rax
add r12, 8
mov eax, r15d
jmp 0x180021f57
movzx eax, byte [rsi + 5]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi + 1]
xor eax, 0x65736c61
or ecx, eax
je 0x180021d8e
mov eax, 7
jmp 0x180021f57
movabs rax, 0x6600000000000000
mov qword [r12], rax
add r12, 8
mov eax, r15d
jmp 0x180021f57
cmp bl, 0x2d
mov rdx, r15
mov r8, r15
sete dl
add rdx, rsi
mov r14, rdx
nop word [rax + rax]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180021dd9
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x180021dc0
mov r9, rdx
sub r9, r14
je 0x180021f44
cmp byte [r14], 0x30
jne 0x180021df5
cmp r9, 1
ja 0x180021f44
xor r10b, r10b
mov r11, r15
cmp byte [rdx], 0x2e
jne 0x180021eb1
mov rax, qword [rdx + 1]
inc rdx
movabs rcx, 0x606060606060606
movabs r9, 0xf0f0f0f0f0f0f0f
add rcx, rax
mov r10b, 1
shr rcx, 4
mov r11, rdx
xor rcx, rax
and rcx, r9
xor rcx, rax
movabs rax, 0x3333333333333333
cmp rcx, rax
jne 0x180021e80
movdqu xmm0, xmmword [rdx]
imul r8, r8, 0x5f5e100
psubb xmm0, xmmword [0x18003f6f0]
pmaddubsw xmm0, xmmword [0x18003f690]
pmaddwd xmm0, xmmword [0x18003f660]
packusdw xmm0, xmm0
pmaddwd xmm0, xmmword [0x18003f670]
movd ecx, xmm0
add r8, rcx
add rdx, 8
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180021e97
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
jbe 0x180021e89
sub r11, rdx
je 0x180021f44
mov eax, edx
sub eax, r14d
movsxd r9, eax
movzx eax, byte [rdx]
sub al, 0x45
test al, 0xdf
je 0x180021fc7
test r10b, r10b
jne 0x180022040
cmp bl, 0x2d
mov rax, r15
setne al
add rax, 0x13
cmp r9, rax
jbe 0x180021ee0
mov eax, 0xa
jmp 0x180021f49
jne 0x180021f7c
cmp bl, 0x2d
jne 0x180021f30
movabs rax, 0x8000000000000000
cmp r8, rax
jbe 0x180021f01
mov eax, 0xa
jmp 0x180021f49
neg r8
movabs rax, 0x6c00000000000000
mov qword [r12], rax
mov qword [r12 + 8], r8
add r12, 0x10
movzx eax, byte [rdx]
movzx ecx, byte [rax + r13 + 0x39740]
neg cl
sbb eax, eax
and eax, 9
jmp 0x180021f49
cmp bl, 0x31
jne 0x180021f44
movabs rax, 0x7fffffffffffffff
cmp r8, rax
ja 0x180021f8b
mov eax, 9
mov r14, qword [rbp - 0x80]
mov r11, qword [rsp + 0x40]
mov r8, qword [rsp + 0x50]
test eax, eax
jne 0x180022496
mov rbx, qword [rsp + 0x28]
movabs rsi, 0x7b00000000000000
mov r10, qword [rsp + 0x58]
mov edi, dword [rsp + 0x20]
jmp 0x180021241
movabs rax, 0x7fffffffffffffff
cmp r8, rax
jbe 0x180021f97
movabs rax, 0x7500000000000000
jmp 0x180021fa9
cmp bl, 0x2d
jne 0x180021f9f
neg r8
movabs rax, 0x6c00000000000000
mov qword [rdi], rax
add r12, 0x10
mov qword [rdi + 8], r8
movzx eax, byte [rdx]
cmp byte [rax + r13 + 0x39740], 0
jne 0x180021f44
mov eax, r15d
jmp 0x180021f49
movzx edi, byte [rdx + 1]
inc rdx
lea eax, [rdi - 0x2b]
test al, 0xfd
jne 0x180021fd8
inc rdx
mov r10, rdx
mov rcx, r15
nop
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180021ff9
movzx eax, al
lea rcx, [rcx + rcx*4]
inc rdx
lea rcx, [rax + rcx*2]
jmp 0x180021fe0
cmp rdx, r10
je 0x180021f44
lea rax, [r10 + 0x12]
cmp rdx, rax
jbe 0x18002202f
cmp byte [r10], 0x30
jne 0x18002201a
inc r10
cmp byte [r10], 0x30
je 0x180022011
lea rax, [r10 + 0x12]
cmp rdx, rax
movabs rax, 0xde0b6b3a763ffff
cmova rcx, rax
mov rax, rcx
neg rax
cmp dil, 0x2d
cmovne rax, rcx
add r11, rax
movzx eax, byte [rdx]
movzx r15d, byte [rax + r13 + 0x39740]
cmp r9, 0x13
jbe 0x1800220c7
mov rcx, r14
movzx eax, byte [rcx]
sub al, 0x2e
test al, 0xfd
jne 0x180022063
inc rcx
jmp 0x180022055
sub r9, rcx
add r9, r14
cmp r9, 0x13
jbe 0x1800220c7
mov rcx, rsi
call fcn.1800151a0
comisd xmm0, xmm9
ja 0x180022089
comisd xmm8, xmm0
ja 0x180022089
mov dl, 1
jmp 0x18002208b
xor dl, dl
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x60], xmm0
mov qword [r12], rax
mov ecx, 9
mov rax, qword [rsp + 0x60]
mov qword [r12 + 8], rax
xor eax, eax
add r12, 0x10
test dl, dl
cmove eax, ecx
jne 0x180022378
xor r15d, r15d
jmp 0x180021f49
cmp r11, 0xfffffffffffffeaa
jl 0x180022222
cmp r11, 0x134
jg 0x18002233d
lea rax, [r11 + 0x16]
cmp rax, 0x2c
ja 0x180022153
movabs rax, 0x1fffffffffffff
cmp r8, rax
ja 0x180022153
xorps xmm0, xmm0
test r8, r8
js 0x180022109
cvtsi2sd xmm0, r8
jmp 0x18002211f
mov rax, r8
and r8d, 1
shr rax, 1
or rax, r8
cvtsi2sd xmm0, rax
addsd xmm0, xmm0
lea rcx, [r11*8]
lea rax, [0x18003a920]
test r11, r11
jns 0x18002213c
sub rax, rcx
divsd xmm0, qword [rax]
jmp 0x180022141
mulsd xmm0, qword [rcx + rax]
cmp bl, 0x2d
jne 0x180022356
xorps xmm0, xmm10
jmp 0x180022356
test r8, r8
je 0x180022222
imul r9, r11, 0x3526a
xor r14d, r14d
sar r9, 0x10
add r9, 0x43f
mov dword [rsp + 0x60], r14d
bsr rax, r8
je 0x180022187
mov r10d, 0x3f
sub r10d, eax
jmp 0x18002218d
mov r10d, 0x40
mov ecx, r10d
shl r8, cl
lea ecx, [r11*2 + 0x2ac]
mov rax, qword [r13 + rcx*8 + 0x3a9e0]
mul r8
mov qword [rbp - 0x58], rdx
mov rdi, rax
and edx, 0x1ff
mov qword [rbp - 0x60], rax
movaps xmm0, xmmword [rbp - 0x60]
movdqa xmmword [rsp + 0x60], xmm0
cmp rdx, 0x1ff
jne 0x1800221e9
inc ecx
mov rax, qword [r13 + rcx*8 + 0x3a9e0]
mul r8
add rdi, rdx
cmp rdx, rdi
mov rdx, qword [rsp + 0x68]
jbe 0x1800221f3
inc rdx
jmp 0x1800221f3
mov rdx, qword [rsp + 0x68]
mov rdi, qword [rsp + 0x60]
mov rax, rdx
mov r8, rdx
shr rax, 0x3f
lea rcx, [rax + 9]
xor eax, 1
add eax, r10d
shr r8, cl
cdqe
sub r9, rax
test r9, r9
jg 0x18002228d
mov ecx, 1
sub rcx, r9
cmp rcx, 0x40
jl 0x180022233
cmp bl, 0x2d
jne 0x180022353
movaps xmm0, xmm6
jmp 0x180022356
shr r8, cl
movabs rax, 0x10000000000000
mov rdx, r8
mov rcx, r14
and edx, 1
add rdx, r8
movabs r8, 0x8000000000000000
shr rdx, 1
cmp rdx, rax
cmovae rcx, rax
cmp bl, 0x2d
mov rax, r14
cmove rax, r8
or rcx, rax
movabs rax, 0xffefffffffffffff
and rdx, rax
or rcx, rdx
mov qword [rsp + 0x60], rcx
movsd xmm0, qword [rsp + 0x60]
jmp 0x180022356
cmp rdi, 1
ja 0x1800222b6
lea rax, [r11 + 4]
cmp rax, 0x1b
ja 0x1800222b6
movzx eax, r8b
and al, 3
cmp al, 1
jne 0x1800222b6
mov rax, r8
shl rax, cl
cmp rax, rdx
jne 0x1800222b6
and r8, 0xfffffffffffffffe
mov rcx, r8
movabs rax, 0x20000000000000
and ecx, 1
add rcx, r8
shr rcx, 1
cmp rcx, rax
jb 0x1800222de
movabs rcx, 0x10000000000000
inc r9
cmp r9, 0x7fe
jle 0x18002230a
mov rcx, rsi
call fcn.1800151a0
comisd xmm0, xmm9
ja 0x180022346
comisd xmm8, xmm0
jbe 0x180022356
mov eax, 9
xor r15d, r15d
jmp 0x180021f49
cmp bl, 0x2d
mov edx, 0x800
mov rax, r14
cmove rax, rdx
movabs rdx, 0xffefffffffffffff
or rax, r9
and rcx, rdx
shl rax, 0x34
or rax, rcx
mov qword [rsp + 0x60], rax
movsd xmm0, qword [rsp + 0x60]
jmp 0x180022356
test r8, r8
je 0x180022222
mov eax, 9
xor r15d, r15d
jmp 0x180021f49
movaps xmm0, xmm7
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x60], xmm0
mov qword [r12], rax
mov rax, qword [rsp + 0x60]
mov qword [r12 + 8], rax
add r12, 0x10
neg r15b
sbb eax, eax
and eax, 9
xor r15d, r15d
jmp 0x180021f49
mov eax, dword [r14]
mov r10, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x28]
cmp byte [rax + r8], 0x5d
jne 0x180022473
mov rax, qword [r10 + 0x50]
lea r11, [r10 + 0x50]
mov edi, dword [rsp + 0x20]
mov rdx, r12
add r14, 4
mov qword [rsp + 0x40], r11
movabs rsi, 0x7b00000000000000
sub rdx, qword [rax]
movabs rax, 0x5b00000000000000
sar rdx, 3
lea ecx, [rdx + 2]
or rcx, rax
mov eax, edx
mov qword [r12], rcx
movabs rdx, 0x5d00000000000000
or rax, rdx
mov qword [r12 + 8], rax
add r12, 0x10
jmp 0x180021241
cmp cl, 0x7d
jne case.0x18001fab3.35
mov rax, qword [r10 + 0x30]
lea r11, [r10 + 0x50]
mov ecx, edi
movabs rdx, 0x7d00000000000000
mov r9d, dword [rax + rcx*8]
mov eax, r9d
or rax, rdx
mov qword [r12], rax
add r12, 8
mov rax, qword [r10 + 0x30]
mov ecx, dword [rax + rcx*8 + 4]
mov rax, qword [r11]
mov r8, qword [rax]
mov eax, 0xffffff
cmp ecx, eax
cmova ecx, eax
mov rax, r12
sub rax, r8
mov edx, ecx
sar rax, 3
shl rdx, 0x20
mov eax, eax
or rdx, rax
or rdx, rsi
jmp 0x180021218
mov rax, qword [r10 + 0x30]
mov r9d, 9
mov ecx, edi
inc dword [rax + rcx*8 + 4]
jmp 0x180020655
mov r11d, dword [rsp + 0x20]
mov r9d, 9
jmp 0x18002060b
mov eax, 5
jmp 0x180022496
mov eax, 3
jmp 0x180022496
mov eax, 4
movaps xmm9, xmmword [rsp + 0xc0]
movaps xmm8, xmmword [rsp + 0xd0]
movaps xmm7, xmmword [rsp + 0xe0]
movaps xmm6, xmmword [rsp + 0xf0]
mov r14, qword [rsp + 0x100]
mov r13, qword [rsp + 0x148]
mov r12, qword [rsp + 0x140]
mov rdi, qword [rsp + 0x138]
movaps xmm10, xmmword [rsp + 0xb0]
add rsp, 0x108
pop r15
pop rsi
pop rbx
pop rbp
ret