Function at 0x180022560
Capabilities:
Encrypt data using speck

Disassembly:
push rbx
push rsi
push rdi
push r14
sub rsp, 0xe8
mov r11, qword [rcx + 0x40]
lea rax, [rcx + 0x50]
mov qword [rax], rdx
xor edi, edi
mov r8, qword [rcx + 0x10]
mov rsi, rcx
mov rbx, qword [rdx + 8]
mov r14d, edi
mov r10, qword [rdx]
mov qword [rsp + 0x60], rax
mov eax, dword [rcx + 0x18]
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x48], r11
mov dword [rsp + 0x20], edi
lea r9, [r8 + rax*4]
mov qword [rsp + 0x28], rbx
mov eax, dword [rcx + 8]
lea rcx, [r8 + rax*4]
cmp r9, rcx
jne 0x1800225c6
lea eax, [rdi + 0xd]
add rsp, 0xe8
pop r14
pop rdi
pop rsi
pop rbx
ret
mov rax, qword [rsi + 0x30]
movabs rcx, 0x3333333333333333
mov qword [rsp + 0x118], rbp
movabs r8, 0x7400000000000000
mov qword [rsp + 0x120], r12
lea rbp, [0x180000000]
mov qword [rsp + 0x128], r13
mov r12d, 9
mov qword [rsp + 0xe0], r15
lea r13, [r9 + 4]
mov dword [rax], edi
lea r15, [r10 + 8]
mov rax, qword [rsi + 0x30]
movaps xmmword [rsp + 0xd0], xmm6
movsd xmm6, qword [0x18003f640]
movaps xmmword [rsp + 0xc0], xmm7
xorps xmm7, xmm7
mov dword [rax + 4], edi
mov edx, dword [r9]
movabs r9, 0x6e00000000000000
movzx eax, byte [r11 + rdx]
lea rdi, [r11 + rdx]
movaps xmmword [rsp + 0xb0], xmm8
movabs r11, 0x2200000000000000
movsd xmm8, qword [0x18003f648]
movaps xmmword [rsp + 0xa0], xmm9
movsd xmm9, qword [0x18003f638]
movaps xmmword [rsp + 0x90], xmm10
movsd xmm10, qword [0x18003f750]
mov qword [rsp + 0x50], rcx
cmp al, 0x5b
je 0x1800230e7
cmp al, 0x7b
je 0x18002308c
add eax, 0xffffffde
cmp eax, 0x52
ja case.0x1800226cb.35
lea r12, [0x180000000]
cdqe
movzx eax, byte [r12 + rax + 0x24c18]
mov ecx, dword [r12 + rax*4 + 0x24c00]
add rcx, r12
jmp rcx
mov rax, qword [rsp + 0x60]
lea r9, [rdi + 1]
mov rcx, rbx
lea r8, [rbx + 4]
mov rax, qword [rax]
sub rcx, qword [rax + 8]
mov rax, r11
or rcx, rax
mov qword [r15], rcx
add r15, 8
movzx eax, byte [r9]
mov byte [r8], al
movzx eax, byte [r9]
cmp al, 0x22
je 0x1800228b8
cmp al, 0x5c
jne 0x18002289f
movzx eax, byte [r9 + 1]
cmp al, 0x75
jne 0x180022889
movzx eax, byte [r9 + 2]
movzx ecx, byte [r9 + 4]
mov edx, dword [r12 + rcx*4 + 0x39c88]
or edx, dword [r12 + rax*4 + 0x3a318]
movzx eax, byte [r9 + 3]
or edx, dword [r12 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
add r9, 6
or edx, dword [r12 + rax*4 + 0x39940]
lea r11d, [rdx - 0xd800]
cmp r11d, 0x3ff
ja 0x1800227d8
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x1800228bd
movzx eax, byte [r9 + 2]
movzx ecx, byte [r9 + 4]
mov r10d, dword [r12 + rcx*4 + 0x39c88]
or r10d, dword [r12 + rax*4 + 0x3a318]
movzx eax, byte [r9 + 3]
or r10d, dword [r12 + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or r10d, dword [r12 + rax*4 + 0x39940]
sub r10d, 0xdc00
cmp r10d, 0x400
jae 0x1800228bd
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x1800227e9
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x1800228bd
cmp edx, 0x7f
ja 0x1800227f9
mov byte [r8], dl
inc r8
jmp 0x1800228a5
cmp edx, 0x7ff
ja 0x18002281e
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 0x1800228a5
cmp edx, 0xffff
ja 0x18002284d
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 0x1800228a5
cmp edx, 0x10ffff
ja 0x1800228bd
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 0x1800228a5
movzx ecx, byte [rax + r12 + 0x3dfa0]
test cl, cl
je 0x1800228bd
mov byte [r8], cl
add r9, 2
jmp 0x1800228a2
inc r9
inc r8
movzx eax, byte [r9]
mov byte [r8], al
movzx eax, byte [r9]
cmp al, 0x22
jne 0x180022704
test r8, r8
jne 0x1800228ca
mov dword [rsp + 0x20], 5
jmp 0x180022c1a
mov eax, r8d
mov dword [rsp + 0x20], r14d
sub eax, ebx
sub eax, 4
mov dword [rbx], eax
mov byte [r8], r14b
jmp 0x180022c1a
mov rcx, qword [rsi + 0x48]
sub rcx, rdx
cmp rcx, 4
jbe 0x180022906
movzx eax, byte [rdi + 4]
movzx ecx, byte [rax + r12 + 0x39740]
mov eax, dword [rdi]
xor eax, 0x65757274
or ecx, eax
jmp 0x18002290e
jne 0x180022929
cmp dword [rdi], 0x65757274
sete al
test al, al
je 0x180022929
mov rax, r8
mov dword [rsp + 0x20], r14d
mov qword [r15], rax
add r15, 8
jmp 0x180022c1a
mov dword [rsp + 0x20], 6
jmp 0x180022c1a
mov rcx, qword [rsi + 0x48]
sub rcx, rdx
cmp rcx, 5
jbe 0x18002295c
movzx eax, byte [rdi + 5]
movzx ecx, byte [rax + r12 + 0x39740]
mov eax, dword [rdi + 1]
xor eax, 0x65736c61
or ecx, eax
jmp 0x180022965
jne 0x180022987
cmp dword [rdi + 1], 0x65736c61
sete al
test al, al
je 0x180022987
movabs rax, 0x6600000000000000
mov dword [rsp + 0x20], r14d
mov qword [r15], rax
add r15, 8
jmp 0x180022c1a
mov dword [rsp + 0x20], 7
jmp 0x180022c1a
mov rcx, qword [rsi + 0x48]
sub rcx, rdx
cmp rcx, 4
jbe 0x1800229b9
movzx eax, byte [rdi + 4]
movzx ecx, byte [rax + r12 + 0x39740]
mov eax, dword [rdi]
xor eax, 0x6c6c756e
or ecx, eax
jmp 0x1800229c1
jne 0x1800229dc
cmp dword [rdi], 0x6c6c756e
sete al
test al, al
je 0x1800229dc
mov rax, r9
mov dword [rsp + 0x20], r14d
mov qword [r15], rax
add r15, 8
jmp 0x180022c1a
mov dword [rsp + 0x20], 8
jmp 0x180022c1a
mov rcx, qword [rsi + 0x48]
sub rcx, rdx
lea rdx, [0x18003fb40]
add rcx, 0x40
call fcn.18002d22c
mov rbx, rax
test rax, rax
jne 0x180022a15
mov dword [rsp + 0x20], 2
jmp 0x180022c1a
mov eax, dword [r13 - 4]
mov rdx, rdi
mov r8, qword [rsi + 0x48]
mov rcx, rbx
sub r8, rax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [r13 - 4]
mov rdx, r14
movdqa xmm0, xmmword [str.________________________________0000000000000000]
mov rcx, rbx
sub rcx, rax
mov r8, r14
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 0x180022a7f
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x180022a66
mov r11, rdx
sub r11, rsi
je 0x180022c0a
cmp byte [rsi], 0x30
jne 0x180022a9a
cmp r11, 1
ja 0x180022c0a
xor r9b, r9b
mov r10, r14
cmp byte [rdx], 0x2e
jne 0x180022b6c
mov rcx, qword [rdx + 1]
inc rdx
movabs rax, 0x606060606060606
movabs r11, 0xf0f0f0f0f0f0f0f
add rax, rcx
movabs rbp, 0x3333333333333333
shr rax, 4
mov r9b, 1
xor rax, rcx
mov r10, rdx
and rax, r11
xor rax, rcx
cmp rax, rbp
jne 0x180022b3c
and rcx, r11
imul rax, rcx, 0xa01
imul r8, r8, 0x5f5e100
shr rax, 8
movabs rcx, 0xff00ff00ff00ff
and rax, rcx
imul rcx, rax, 0x640001
movabs rax, 0xffff0000ffff
shr rcx, 0x10
and rcx, rax
movabs rax, 0x271000000001
imul rcx, rax
shr rcx, 0x20
add r8, rcx
add rdx, 8
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180022b53
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 0x180022b45
sub r10, rdx
je 0x180022c0a
mov eax, edx
sub eax, esi
movsxd r11, eax
movzx eax, byte [rdx]
sub al, 0x45
test al, 0xdf
je 0x180022cbf
test r9b, r9b
jne 0x180022d36
cmp dil, 0x2d
mov rax, r14
setne al
add rax, 0x13
cmp r11, rax
jbe 0x180022b9f
mov dword [rsp + 0x20], 0xa
jmp 0x180022c12
jne 0x180022c65
cmp dil, 0x2d
jne 0x180022bf5
movabs rax, 0x8000000000000000
cmp r8, rax
jbe 0x180022bc4
mov dword [rsp + 0x20], 0xa
jmp 0x180022c12
neg r8
movabs rax, 0x6c00000000000000
mov qword [r15], rax
mov qword [r15 + 8], r8
add r15, 0x10
movzx eax, byte [rdx]
movzx ecx, byte [rax + r12 + 0x39740]
neg cl
sbb edi, edi
and edi, 9
mov dword [rsp + 0x20], edi
jmp 0x180022c12
cmp dil, 0x31
jne 0x180022c0a
movabs rax, 0x7fffffffffffffff
cmp r8, rax
ja 0x180022c74
mov dword [rsp + 0x20], 9
mov rcx, rbx
call fcn.18002d224
mov eax, dword [rsp + 0x20]
test eax, eax
jne 0x180024ba8
mov r10, qword [rsp + 0x40]
movabs rdx, 0x7200000000000000
mov qword [r15], rdx
mov rax, qword [r10 + 0x50]
mov rcx, qword [rax]
sub r15, rcx
lea rax, [r15 + 8]
sar rax, 3
mov eax, eax
or rax, rdx
mov qword [rcx], rax
sub r13, qword [r10 + 0x10]
sar r13, 2
mov dword [r10 + 0x18], r13d
xor eax, eax
jmp 0x180024ba8
movabs rax, 0x7fffffffffffffff
cmp r8, rax
jbe 0x180022c80
movabs r9, 0x7500000000000000
jmp 0x180022c93
cmp dil, 0x2d
jne 0x180022c89
neg r8
movabs r9, 0x6c00000000000000
lea rax, [r15 + 8]
mov qword [r15], r9
mov rcx, rax
mov qword [rax], r8
movzx eax, byte [rdx]
lea r15, [rcx + 8]
cmp byte [rax + r12 + 0x39740], r14b
jne 0x180022c0a
mov dword [rsp + 0x20], r14d
jmp 0x180022c12
movzx ebp, byte [rdx + 1]
inc rdx
lea eax, [rbp - 0x2b]
test al, 0xfd
jne 0x180022cd0
inc rdx
mov r9, rdx
mov rcx, r14
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180022cef
movzx eax, al
lea rcx, [rcx + rcx*4]
inc rdx
lea rcx, [rax + rcx*2]
jmp 0x180022cd6
cmp rdx, r9
je 0x180022c0a
lea rax, [r9 + 0x12]
cmp rdx, rax
jbe 0x180022d25
cmp byte [r9], 0x30
jne 0x180022d10
inc r9
cmp byte [r9], 0x30
je 0x180022d07
lea rax, [r9 + 0x12]
movabs r9, 0xde0b6b3a763ffff
cmp rdx, rax
cmova rcx, r9
mov rax, rcx
neg rax
cmp bpl, 0x2d
cmovne rax, rcx
add r10, rax
movzx eax, byte [rdx]
movzx ebp, byte [rax + r12 + 0x39740]
cmp r11, 0x13
jbe 0x180022dcc
mov rcx, rsi
nop
movzx eax, byte [rcx]
sub al, 0x2e
test al, 0xfd
jne 0x180022d5e
inc rcx
jmp 0x180022d50
sub r11, rcx
add r11, rsi
cmp r11, 0x13
jbe 0x180022dcc
mov rcx, rbx
call fcn.1800151a0
comisd xmm0, xmmword [0x18003f638]
ja 0x180022d8e
movsd xmm1, qword [0x18003f648]
comisd xmm1, xmm0
ja 0x180022d8e
mov dl, 1
jmp 0x180022d90
xor dl, dl
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x50], xmm0
mov qword [r15], rax
mov edi, r14d
mov rax, qword [rsp + 0x50]
mov qword [r15 + 8], rax
add r15, 0x10
test dl, dl
mov eax, 9
cmove edi, eax
mov dword [rsp + 0x20], edi
jne 0x18002307b
jmp 0x180022c12
cmp r10, 0xfffffffffffffeaa
jl 0x180023048
cmp r10, 0x134
jg 0x18002303f
lea rax, [r10 + 0x16]
cmp rax, 0x2c
ja 0x180022e5c
movabs rax, 0x1fffffffffffff
cmp r8, rax
ja 0x180022e5c
xorps xmm0, xmm0
test r8, r8
js 0x180022e0e
cvtsi2sd xmm0, r8
jmp 0x180022e24
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 0x180022e41
sub rcx, rax
divsd xmm0, qword [rcx]
jmp 0x180022e46
mulsd xmm0, qword [rax + rcx]
cmp dil, 0x2d
jne 0x18002305b
xorps xmm0, xmmword [0x18003f750]
jmp 0x18002305b
test r8, r8
je 0x180023048
imul r9, r10, 0x3526a
mov dword [rsp + 0x20], r14d
sar r9, 0x10
add r9, 0x43f
bsr rax, r8
je 0x180022e8b
mov esi, 0x3f
sub esi, eax
jmp 0x180022e90
mov esi, 0x40
mov ecx, esi
shl r8, cl
lea ecx, [r10*2 + 0x2ac]
mov rax, qword [r12 + rcx*8 + 0x3a9e0]
mul r8
mov qword [rsp + 0x58], rdx
mov r11, rax
mov qword [rsp + 0x50], rax
and edx, 0x1ff
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rsp + 0x50], xmm0
cmp rdx, 0x1ff
jne 0x180022eee
inc ecx
mov rax, qword [r12 + rcx*8 + 0x3a9e0]
mul r8
add r11, rdx
cmp rdx, r11
mov rdx, qword [rsp + 0x58]
jbe 0x180022ef8
inc rdx
jmp 0x180022ef8
mov rdx, qword [rsp + 0x58]
mov r11, qword [rsp + 0x50]
mov rax, rdx
mov r8, rdx
shr rax, 0x3f
lea rcx, [rax + 9]
xor eax, 1
add eax, esi
shr r8, cl
cdqe
sub r9, rax
test r9, r9
jg 0x180022f88
mov eax, 1
sub rax, r9
cmp rax, 0x40
jge 0x180023048
mov rcx, rax
movabs rax, 0x10000000000000
shr r8, cl
mov rcx, r14
mov rdx, r8
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 + 0x48], rcx
movsd xmm0, qword [rsp + 0x48]
jmp 0x18002305b
cmp r11, 1
ja 0x180022fb1
lea rax, [r10 + 4]
cmp rax, 0x1b
ja 0x180022fb1
movzx eax, r8b
and al, 3
cmp al, 1
jne 0x180022fb1
mov rax, r8
shl rax, cl
cmp rax, rdx
jne 0x180022fb1
and r8, 0xfffffffffffffffe
mov rcx, r8
movabs rax, 0x20000000000000
and ecx, 1
add rcx, r8
shr rcx, 1
cmp rcx, rax
jb 0x180022fd9
movabs rcx, 0x10000000000000
inc r9
cmp r9, 0x7fe
jle 0x18002300b
mov rcx, rbx
call fcn.1800151a0
comisd xmm0, xmmword [0x18003f638]
ja 0x180022c0a
movsd xmm1, qword [0x18003f648]
comisd xmm1, xmm0
jbe 0x18002305b
jmp 0x180022c0a
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 + 0x48], rax
movsd xmm0, qword [rsp + 0x48]
jmp 0x18002305b
test r8, r8
jne 0x180022c0a
cmp dil, 0x2d
jne 0x180023058
movsd xmm0, qword [0x18003f640]
jmp 0x18002305b
xorps xmm0, xmm0
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x50], xmm0
mov qword [r15], rax
mov rax, qword [rsp + 0x50]
mov qword [r15 + 8], rax
add r15, 0x10
neg bpl
sbb eax, eax
and eax, 9
mov dword [rsp + 0x20], eax
jmp 0x180022c12
mov eax, dword [r13]
mov rdi, qword [rsp + 0x48]
cmp byte [rax + rdi], 0x7d
jne 0x180023ff4
mov rax, qword [rsp + 0x60]
mov rdx, r15
movabs r10, 0x7b00000000000000
add r13, 4
mov rax, qword [rax]
sub rdx, qword [rax]
sar rdx, 3
mov eax, edx
lea ecx, [rdx + 2]
movabs rdx, 0x7d00000000000000
or rcx, r10
or rax, rdx
mov qword [r15], rcx
mov r10, rsi
mov qword [r15 + 8], rax
add r15, 0x10
jmp 0x180022c2b
mov eax, dword [r13]
mov rdi, qword [rsp + 0x48]
cmp byte [rax + rdi], 0x5d
jne 0x18002313e
mov rax, qword [rsp + 0x60]
mov rdx, r15
movabs r10, 0x5b00000000000000
add r13, 4
mov rax, qword [rax]
sub rdx, qword [rax]
sar rdx, 3
mov eax, edx
lea ecx, [rdx + 2]
movabs rdx, 0x5d00000000000000
or rcx, r10
or rax, rdx
mov qword [r15], rcx
mov r10, rsi
mov qword [r15 + 8], rax
add r15, 0x10
jmp 0x180022c2b
mov r10, rsi
inc r14d
mov eax, r14d
mov dword [rsp + 0x20], r14d
cmp rax, qword [r10 + 0x28]
jae 0x180024ba3
mov rax, qword [r10 + 0x38]
mov rcx, r15
add r15, 8
mov byte [r14 + rax], 1
mov rax, qword [r10 + 0x50]
sub rcx, qword [rax]
mov rax, qword [r10 + 0x30]
sar rcx, 3
mov dword [rax + r14*8], ecx
mov rax, qword [r10 + 0x30]
mov dword [rax + r14*8 + 4], 0
mov rax, qword [r10 + 0x30]
inc dword [rax + r14*8 + 4]
mov r14d, dword [r13]
mov r11, r15
add r14, rdi
add r13, 4
movzx esi, byte [r14]
cmp sil, 0x5b
je 0x180023b0d
cmp sil, 0x7b
je 0x180023aad
cmp sil, 0x22
jne 0x1800233dc
mov rax, qword [r10 + 0x50]
lea r9, [r14 + 1]
mov rcx, rbx
lea r8, [rbx + 4]
sub rcx, qword [rax + 8]
movabs rax, 0x2200000000000000
or rcx, rax
mov qword [r15], rcx
add r15, 8
movzx eax, byte [r9]
mov byte [r8], al
movzx eax, byte [r9]
cmp al, sil
je 0x1800233af
nop word [rax + rax]
cmp al, 0x5c
jne 0x180023396
movzx eax, byte [r9 + 1]
cmp al, 0x75
jne 0x180023381
movzx eax, byte [r9 + 2]
movzx ecx, byte [r9 + 4]
mov edx, dword [rbp + rcx*4 + 0x39c88]
or edx, dword [rbp + rax*4 + 0x3a318]
movzx eax, byte [r9 + 3]
or edx, dword [rbp + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
add r9, 6
or edx, dword [rbp + rax*4 + 0x39940]
lea r11d, [rdx - 0xd800]
cmp r11d, 0x3ff
ja 0x1800232d0
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x1800233b4
movzx eax, byte [r9 + 2]
movzx ecx, byte [r9 + 4]
mov r10d, dword [rbp + rcx*4 + 0x39c88]
or r10d, dword [rbp + rax*4 + 0x3a318]
movzx eax, byte [r9 + 3]
or r10d, dword [rbp + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or r10d, dword [rbp + rax*4 + 0x39940]
sub r10d, 0xdc00
cmp r10d, 0x400
jae 0x1800233b4
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x1800232e1
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x1800233b4
cmp edx, 0x7f
ja 0x1800232f1
mov byte [r8], dl
inc r8
jmp 0x18002339c
cmp edx, 0x7ff
ja 0x180023316
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 0x18002339c
cmp edx, 0xffff
ja 0x180023345
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 0x18002339c
cmp edx, 0x10ffff
ja 0x1800233b4
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 0x18002339c
movzx ecx, byte [rax + rbp + 0x3dfa0]
test cl, cl
je 0x1800233b4
mov byte [r8], cl
add r9, 2
jmp 0x180023399
inc r9
inc r8
movzx eax, byte [r9]
mov byte [r8], al
movzx eax, byte [r9]
cmp al, 0x22
jne 0x180023200
test r8, r8
jne 0x1800233be
mov eax, 5
jmp 0x180023656
mov eax, r8d
sub eax, ebx
sub eax, 4
mov dword [rbx], eax
lea rbx, [r8 + 1]
mov qword [rsp + 0x28], rbx
xor eax, eax
mov byte [r8], 0
jmp 0x180023656
cmp sil, 0x3a
jb 0x18002349a
cmp sil, 0x66
je 0x18002345e
cmp sil, 0x6e
je 0x18002342d
cmp sil, 0x74
jne case.0x1800226cb.35
movzx eax, byte [r14 + 4]
movzx ecx, byte [rax + rbp + 0x39740]
mov eax, dword [r14]
xor eax, 0x65757274
or ecx, eax
je 0x18002341f
mov eax, 6
jmp 0x18002365b
mov qword [r15], r8
add r15, 8
xor eax, eax
jmp 0x18002365b
movzx eax, byte [r14 + 4]
movzx ecx, byte [rax + rbp + 0x39740]
mov eax, dword [r14]
xor eax, 0x6c6c756e
or ecx, eax
je 0x180023450
mov eax, 8
jmp 0x18002365b
mov qword [r15], r9
add r15, 8
xor eax, eax
jmp 0x18002365b
movzx eax, byte [r14 + 5]
movzx ecx, byte [rax + rbp + 0x39740]
mov eax, dword [r14 + 1]
xor eax, 0x65736c61
or ecx, eax
je 0x180023482
mov eax, 7
jmp 0x18002365b
movabs rax, 0x6600000000000000
mov qword [r15], rax
add r15, 8
xor eax, eax
jmp 0x18002365b
xor edx, edx
cmp sil, 0x2d
sete dl
add rdx, r14
mov rdi, rdx
xor r8d, r8d
nop dword [rax]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x1800234c9
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x1800234b0
mov r10, rdx
sub r10, rdi
je 0x18002364e
cmp byte [rdi], 0x30
jne 0x1800234e4
cmp r10, 1
ja 0x18002364e
xor ebx, ebx
xor r9b, r9b
cmp byte [rdx], 0x2e
jne 0x1800235ad
mov rcx, qword [rdx + 1]
inc rdx
movabs rax, 0x606060606060606
movabs r10, 0xf0f0f0f0f0f0f0f
add rax, rcx
mov r9b, 1
shr rax, 4
mov rbx, rdx
xor rax, rcx
and rax, r10
xor rax, rcx
cmp rax, qword [rsp + 0x50]
jne 0x18002357d
and rcx, r10
imul rax, rcx, 0xa01
imul r8, r8, 0x5f5e100
shr rax, 8
movabs rcx, 0xff00ff00ff00ff
and rax, rcx
imul rcx, rax, 0x640001
movabs rax, 0xffff0000ffff
shr rcx, 0x10
and rcx, rax
movabs rax, 0x271000000001
imul rcx, rax
shr rcx, 0x20
add r8, rcx
add rdx, 8
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180023594
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 0x180023586
sub rbx, rdx
je 0x180023649
mov eax, edx
sub eax, edi
movsxd r10, eax
movzx eax, byte [rdx]
sub al, 0x45
test al, 0xdf
je 0x1800236cb
test r9b, r9b
jne 0x180023743
xor eax, eax
cmp sil, 0x2d
setne al
add rax, 0x13
cmp r10, rax
jbe 0x1800235e1
mov rbx, qword [rsp + 0x28]
mov eax, 0xa
jmp 0x180023651
jne 0x18002367c
cmp sil, 0x2d
jne 0x180023634
mov rbx, qword [rsp + 0x28]
movabs r9, 0x8000000000000000
cmp r8, r9
jbe 0x180023608
mov eax, 0xa
jmp 0x180023651
neg r8
movabs rax, 0x6c00000000000000
mov qword [r15], rax
mov qword [r15 + 8], r8
add r15, 0x10
movzx eax, byte [rdx]
movzx ecx, byte [rax + rbp + 0x39740]
neg cl
sbb eax, eax
and eax, 9
jmp 0x180023651
cmp sil, 0x31
jne 0x180023649
movabs rax, 0x7fffffffffffffff
cmp r8, rax
ja 0x18002368b
mov rbx, qword [rsp + 0x28]
mov eax, r12d
mov rdi, qword [rsp + 0x48]
mov r10, qword [rsp + 0x40]
test eax, eax
jne 0x180024ba8
movabs r14, 0x5b00000000000000
movabs r8, 0x5d00000000000000
jmp 0x180023b5c
movabs rax, 0x7fffffffffffffff
cmp r8, rax
jbe 0x180023697
movabs rax, 0x7500000000000000
jmp 0x1800236aa
cmp sil, 0x2d
jne 0x1800236a0
neg r8
movabs rax, 0x6c00000000000000
mov rbx, qword [rsp + 0x28]
add r15, 0x10
mov qword [r11], rax
mov qword [r11 + 8], r8
movzx eax, byte [rdx]
cmp byte [rax + rbp + 0x39740], 0
jne 0x18002364e
xor eax, eax
jmp 0x180023651
movzx r11d, byte [rdx + 1]
inc rdx
lea eax, [r11 - 0x2b]
test al, 0xfd
jne 0x1800236de
inc rdx
mov r9, rdx
xor ecx, ecx
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x1800236fc
movzx eax, al
lea rcx, [rcx + rcx*4]
inc rdx
lea rcx, [rax + rcx*2]
jmp 0x1800236e3
cmp rdx, r9
je 0x180023649
lea rax, [r9 + 0x12]
cmp rdx, rax
jbe 0x180023732
cmp byte [r9], 0x30
jne 0x18002371d
inc r9
cmp byte [r9], 0x30
je 0x180023714
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 ebp, byte [rax + rbp + 0x39740]
cmp r10, 0x13
jbe 0x1800237cc
mov rcx, rdi
movzx eax, byte [rcx]
sub al, 0x2e
test al, 0xfd
jne 0x180023765
inc rcx
jmp 0x180023757
sub r10, rcx
add r10, rdi
cmp r10, 0x13
jbe 0x1800237cc
mov rcx, r14
call fcn.1800151a0
comisd xmm0, xmm9
ja 0x18002378b
comisd xmm8, xmm0
ja 0x18002378b
mov dl, 1
jmp 0x18002378d
xor dl, dl
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x30], xmm0
mov qword [r15], rax
mov rax, qword [rsp + 0x30]
mov qword [r15 + 8], rax
xor eax, eax
add r15, 0x10
test dl, dl
cmove eax, r12d
jne 0x180023a94
mov rbx, qword [rsp + 0x28]
lea rbp, [0x180000000]
jmp 0x180023651
cmp rbx, 0xfffffffffffffeaa
jl 0x180023931
cmp rbx, 0x134
jg 0x180023a54
lea rax, [rbx + 0x16]
cmp rax, 0x2c
ja 0x180023859
movabs rax, 0x1fffffffffffff
cmp r8, rax
ja 0x180023859
xorps xmm0, xmm0
test r8, r8
js 0x18002380e
cvtsi2sd xmm0, r8
jmp 0x180023824
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 0x180023841
sub rax, rcx
divsd xmm0, qword [rax]
jmp 0x180023846
mulsd xmm0, qword [rcx + rax]
cmp sil, 0x2d
jne 0x180023a74
xorps xmm0, xmm10
jmp 0x180023a74
test r8, r8
je 0x180023931
imul r9, rbx, 0x3526a
mov dword [rsp + 0x30], 0
sar r9, 0x10
add r9, 0x43f
bsr rax, r8
je 0x18002388d
mov r10d, 0x3f
sub r10d, eax
jmp 0x180023893
mov r10d, 0x40
mov ecx, r10d
lea r12, [0x180000000]
shl r8, cl
lea ecx, [rbx*2 + 0x2ac]
mov rax, qword [r12 + rcx*8 + 0x3a9e0]
mul r8
mov qword [rsp + 0x78], rdx
mov r11, rax
and edx, 0x1ff
mov qword [rsp + 0x70], rax
movaps xmm0, xmmword [rsp + 0x70]
movdqa xmmword [rsp + 0x30], xmm0
cmp rdx, 0x1ff
jne 0x1800238f8
inc ecx
mov rax, qword [r12 + rcx*8 + 0x3a9e0]
mul r8
add r11, rdx
cmp rdx, r11
mov rdx, qword [rsp + 0x38]
jbe 0x180023902
inc rdx
jmp 0x180023902
mov rdx, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
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 0x18002399c
mov ecx, 1
sub rcx, r9
cmp rcx, 0x40
jl 0x180023943
cmp sil, 0x2d
jne 0x180023a71
movaps xmm0, xmm6
jmp 0x180023a74
shr r8, cl
movabs rax, 0x10000000000000
xor ecx, ecx
mov rdx, r8
and edx, 1
movabs r9, 0x8000000000000000
add rdx, r8
shr rdx, 1
cmp rdx, rax
cmovae rcx, rax
xor eax, eax
cmp sil, 0x2d
cmove rax, r9
or rcx, rax
movabs rax, 0xffefffffffffffff
and rdx, rax
or rcx, rdx
mov qword [rsp + 0x30], rcx
movsd xmm0, qword [rsp + 0x30]
jmp 0x180023a74
cmp r11, 1
ja 0x1800239c5
lea rax, [rbx + 4]
cmp rax, 0x1b
ja 0x1800239c5
movzx eax, r8b
and al, 3
cmp al, 1
jne 0x1800239c5
mov rax, r8
shl rax, cl
cmp rax, rdx
jne 0x1800239c5
and r8, 0xfffffffffffffffe
mov rcx, r8
movabs rax, 0x20000000000000
and ecx, 1
add rcx, r8
shr rcx, 1
cmp rcx, rax
jb 0x1800239ed
movabs rcx, 0x10000000000000
inc r9
cmp r9, 0x7fe
jle 0x180023a22
mov rcx, r14
call fcn.1800151a0
comisd xmm0, xmm9
ja 0x180023a0c
comisd xmm8, xmm0
jbe 0x180023a74
mov rbx, qword [rsp + 0x28]
lea rbp, [0x180000000]
mov eax, 9
jmp 0x180023651
xor eax, eax
mov edx, 0x800
cmp sil, 0x2d
cmove eax, edx
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 0x180023a74
test r8, r8
je 0x180023931
mov rbx, qword [rsp + 0x28]
lea rbp, [0x180000000]
mov eax, r12d
jmp 0x180023651
movaps xmm0, xmm7
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x30], xmm0
mov qword [r15], rax
mov rax, qword [rsp + 0x30]
mov qword [r15 + 8], rax
add r15, 0x10
mov rbx, qword [rsp + 0x28]
neg bpl
lea rbp, [0x180000000]
sbb eax, eax
and eax, 9
jmp 0x180023651
mov eax, dword [r13]
cmp byte [rax + rdi], 0x7d
jne 0x180023e89
mov rax, qword [r10 + 0x50]
mov rdx, r15
movabs r11, 0x7b00000000000000
add r13, 4
movabs r14, 0x5b00000000000000
movabs r8, 0x5d00000000000000
sub rdx, qword [rax]
sar rdx, 3
mov eax, edx
lea ecx, [rdx + 2]
movabs rdx, 0x7d00000000000000
or rcx, r11
or rax, rdx
mov qword [r15], rcx
mov qword [r15 + 8], rax
add r15, 0x10
jmp 0x180023b66
mov eax, dword [r13]
mov r14d, dword [rsp + 0x20]
cmp byte [rax + rdi], 0x5d
jne 0x180023141
mov rax, qword [r10 + 0x50]
mov rdx, r15
movabs r14, 0x5b00000000000000
movabs r8, 0x5d00000000000000
add r13, 4
sub rdx, qword [rax]
sar rdx, 3
mov eax, edx
or rax, r8
lea ecx, [rdx + 2]
or rcx, r14
mov qword [r15], rcx
mov qword [r15 + 8], rax
add r15, 0x10
movabs r11, 0x7b00000000000000
mov esi, dword [rsp + 0x20]
lea rdx, [r10 + 0x50]
mov eax, dword [r13]
add r13, 4
movzx ecx, byte [rax + rdi]
cmp cl, 0x2c
je 0x180024b48
cmp cl, 0x5d
jne case.0x1800226cb.35
mov rax, qword [r10 + 0x30]
mov ecx, esi
mov r9d, dword [rax + rcx*8]
mov eax, r9d
or rax, r8
mov qword [r15], rax
add r15, 8
mov rax, qword [r10 + 0x30]
mov ecx, dword [rax + rcx*8 + 4]
mov rax, qword [rdx]
mov r8, qword [rax]
mov eax, 0xffffff
cmp ecx, eax
cmova ecx, eax
mov rax, r15
sub rax, r8
mov edx, ecx
shl rdx, 0x20
sar rax, 3
mov eax, eax
or rdx, rax
or rdx, r14
mov qword [r8 + r9*8], rdx
lea rdx, [r10 + 0x50]
mov r12, rdx
sub esi, 1
mov dword [rsp + 0x20], esi
je 0x180022c2b
mov rax, qword [r10 + 0x38]
cmp byte [rsi + rax], 0
jne 0x180024b39
mov eax, dword [r13]
add r13, 4
movzx ecx, byte [rax + rdi]
cmp cl, 0x2c
jne 0x180024acd
mov rax, qword [r10 + 0x30]
mov ecx, esi
inc dword [rax + rcx*8 + 4]
mov r9d, dword [r13]
add r13, 4
add r9, rdi
cmp byte [r9], 0x22
jne case.0x1800226cb.35
mov rax, qword [r12]
lea r8, [rbx + 4]
mov rcx, rbx
sub rcx, qword [rax + 8]
movabs rax, 0x2200000000000000
or rcx, rax
mov qword [r15], rcx
add r15, 8
movzx eax, byte [r9 + 1]
inc r9
mov byte [r8], al
movzx eax, byte [r9]
cmp al, 0x22
je 0x180023e23
cmp al, 0x5c
jne 0x180023e05
movzx eax, byte [r9 + 1]
cmp al, 0x75
jne 0x180023dec
movzx eax, byte [r9 + 2]
movzx ecx, byte [r9 + 4]
mov edx, dword [rbp + rcx*4 + 0x39c88]
or edx, dword [rbp + rax*4 + 0x3a318]
movzx eax, byte [r9 + 3]
or edx, dword [rbp + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
add r9, 6
or edx, dword [rbp + rax*4 + 0x39940]
lea r11d, [rdx - 0xd800]
cmp r11d, 0x3ff
ja 0x180023d37
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x180024b95
movzx eax, byte [r9 + 2]
movzx ecx, byte [r9 + 4]
mov r10d, dword [rbp + rcx*4 + 0x39c88]
or r10d, dword [rbp + rax*4 + 0x3a318]
movzx eax, byte [r9 + 3]
or r10d, dword [rbp + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or r10d, dword [rbp + rax*4 + 0x39940]
sub r10d, 0xdc00
cmp r10d, 0x400
jae 0x180024b95
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x180023d48
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x180024b95
cmp edx, 0x7f
ja 0x180023d58
mov byte [r8], dl
inc r8
jmp 0x180023e0b
cmp edx, 0x7ff
ja 0x180023d7d
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 0x180023e0b
cmp edx, 0xffff
ja 0x180023dac
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 0x180023e0b
cmp edx, 0x10ffff
ja 0x180024b95
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 0x180023e0b
movzx ecx, byte [rax + rbp + 0x3dfa0]
test cl, cl
je 0x180024b95
mov byte [r8], cl
add r9, 2
jmp 0x180023e08
inc r9
inc r8
movzx eax, byte [r9]
mov byte [r8], al
movzx eax, byte [r9]
cmp al, 0x22
jne 0x180023c67
mov r10, qword [rsp + 0x40]
test r8, r8
je 0x180024b95
mov eax, r8d
sub eax, ebx
sub eax, 4
mov dword [rbx], eax
lea rbx, [r8 + 1]
mov qword [rsp + 0x28], rbx
mov byte [r8], 0
mov eax, dword [r13]
lea r8, [r13 + 4]
mov r11, r15
cmp byte [rax + rdi], 0x3a
jne case.0x1800226cb.35
mov r14d, dword [r13 + 4]
add r13, 8
add r14, rdi
movzx esi, byte [r14]
cmp sil, 0x5b
je 0x180024a6c
cmp sil, 0x7b
jne 0x18002413b
mov eax, dword [r13]
cmp byte [rax + rdi], 0x7d
je 0x1800240e8
movabs r11, 0x2200000000000000
mov esi, dword [rsp + 0x20]
inc esi
mov eax, esi
mov dword [rsp + 0x20], esi
cmp rax, qword [r10 + 0x28]
jae 0x180024ba3
mov rax, qword [r10 + 0x38]
lea r12, [r10 + 0x50]
mov rcx, r15
mov byte [rsi + rax], 0
mov rax, qword [r12]
sub rcx, qword [rax]
mov rax, qword [r10 + 0x30]
sar rcx, 3
mov dword [rax + rsi*8], ecx
mov rax, qword [r10 + 0x30]
mov dword [rax + rsi*8 + 4], 0
mov r9d, dword [r13]
add r13, 4
add r9, rdi
cmp byte [r9], 0x22
jne case.0x1800226cb.35
mov rax, qword [r10 + 0x30]
lea r8, [rbx + 4]
mov rcx, rbx
inc dword [rax + rsi*8 + 4]
mov rax, qword [r12]
sub rcx, qword [rax + 8]
or rcx, r11
mov qword [r15 + 8], rcx
add r15, 0x10
movzx eax, byte [r9 + 1]
inc r9
mov byte [r8], al
movzx eax, byte [r9]
cmp al, 0x22
je 0x180023e23
cmp al, 0x5c
jne 0x1800240ca
movzx eax, byte [r9 + 1]
cmp al, 0x75
jne 0x1800240b1
movzx eax, byte [r9 + 2]
movzx ecx, byte [r9 + 4]
mov edx, dword [rbp + rcx*4 + 0x39c88]
or edx, dword [rbp + rax*4 + 0x3a318]
movzx eax, byte [r9 + 3]
or edx, dword [rbp + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
add r9, 6
or edx, dword [rbp + rax*4 + 0x39940]
lea r11d, [rdx - 0xd800]
cmp r11d, 0x3ff
ja 0x180023ffc
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x180024b95
movzx eax, byte [r9 + 2]
movzx ecx, byte [r9 + 4]
mov r10d, dword [rbp + rcx*4 + 0x39c88]
or r10d, dword [rbp + rax*4 + 0x3a318]
movzx eax, byte [r9 + 3]
or r10d, dword [rbp + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or r10d, dword [rbp + rax*4 + 0x39940]
sub r10d, 0xdc00
cmp r10d, 0x400
jae 0x180024b95
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x18002400d
mov r10, rsi
jmp 0x180023e93
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x180024b95
cmp edx, 0x7f
ja 0x18002401d
mov byte [r8], dl
inc r8
jmp 0x1800240d0
cmp edx, 0x7ff
ja 0x180024042
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 0x1800240d0
cmp edx, 0xffff
ja 0x180024071
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 0x1800240d0
cmp edx, 0x10ffff
ja 0x180024b95
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 0x1800240d0
movzx ecx, byte [rax + rbp + 0x3dfa0]
test cl, cl
je 0x180024b95
mov byte [r8], cl
add r9, 2
jmp 0x1800240cd
inc r9
inc r8
movzx eax, byte [r9]
mov byte [r8], al
movzx eax, byte [r9]
cmp al, 0x22
jne 0x180023f24
jmp 0x180023e1e
mov rax, qword [r10 + 0x50]
lea r12, [r10 + 0x50]
mov esi, dword [rsp + 0x20]
lea r13, [r8 + 8]
mov rdx, r15
movabs r11, 0x7b00000000000000
movabs r14, 0x5b00000000000000
sub rdx, qword [rax]
sar rdx, 3
mov eax, edx
lea ecx, [rdx + 2]
movabs rdx, 0x7d00000000000000
or rcx, r11
or rax, rdx
mov qword [r15], rcx
mov qword [r15 + 8], rax
add r15, 0x10
jmp 0x180023bf9
cmp sil, 0x22
jne 0x180024370
mov rdx, qword [rsp + 0x60]
lea r9, [r14 + 1]
mov rcx, rbx
lea r8, [rbx + 4]
mov rax, qword [rdx]
sub rcx, qword [rax + 8]
movabs rax, 0x2200000000000000
or rcx, rax
mov qword [r15], rcx
add r15, 8
movzx eax, byte [r9]
mov byte [r8], al
movzx eax, byte [r9]
cmp al, sil
je 0x180024338
cmp al, 0x5c
jne 0x18002431a
movzx eax, byte [r9 + 1]
cmp al, 0x75
jne 0x180024305
movzx eax, byte [r9 + 2]
movzx ecx, byte [r9 + 4]
mov edx, dword [rbp + rcx*4 + 0x39c88]
or edx, dword [rbp + rax*4 + 0x3a318]
movzx eax, byte [r9 + 3]
or edx, dword [rbp + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
add r9, 6
or edx, dword [rbp + rax*4 + 0x39940]
lea r11d, [rdx - 0xd800]
cmp r11d, 0x3ff
ja 0x180024254
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x18002433d
movzx eax, byte [r9 + 2]
movzx ecx, byte [r9 + 4]
mov r10d, dword [rbp + rcx*4 + 0x39c88]
or r10d, dword [rbp + rax*4 + 0x3a318]
movzx eax, byte [r9 + 3]
or r10d, dword [rbp + rax*4 + 0x39fd0]
movzx eax, byte [r9 + 5]
or r10d, dword [rbp + rax*4 + 0x39940]
sub r10d, 0xdc00
cmp r10d, 0x400
jae 0x18002433d
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x180024265
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x18002433d
cmp edx, 0x7f
ja 0x180024275
mov byte [r8], dl
inc r8
jmp 0x180024320
cmp edx, 0x7ff
ja 0x18002429a
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 0x180024320
cmp edx, 0xffff
ja 0x1800242c9
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 0x180024320
cmp edx, 0x10ffff
ja 0x18002433d
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 0x180024320
movzx ecx, byte [rax + rbp + 0x3dfa0]
test cl, cl
je 0x18002433d
mov byte [r8], cl
add r9, 2
jmp 0x18002431d
inc r9
inc r8
movzx eax, byte [r9]
mov byte [r8], al
movzx eax, byte [r9]
cmp al, 0x22
jne 0x180024184
mov rdx, qword [rsp + 0x60]
test r8, r8
jne 0x18002434f
mov rdx, qword [rsp + 0x60]
mov eax, 5
mov r12, rdx
jmp 0x180024608
mov eax, r8d
mov r12, rdx
sub eax, ebx
sub eax, 4
mov dword [rbx], eax
lea rbx, [r8 + 1]
mov qword [rsp + 0x28], rbx
xor eax, eax
mov byte [r8], 0
jmp 0x180024608
cmp sil, 0x3a
jb 0x180024446
cmp sil, 0x66
je 0x18002440a
cmp sil, 0x6e
je 0x1800243cf
cmp sil, 0x74
jne case.0x1800226cb.35
movzx eax, byte [r14 + 4]
movzx ecx, byte [rax + rbp + 0x39740]
mov eax, dword [r14]
xor eax, 0x65757274
or ecx, eax
je 0x1800243b7
mov eax, 6
jmp 0x180024608
movabs rax, 0x7400000000000000
mov qword [r15], rax
add r15, 8
xor eax, eax
jmp 0x180024608
movzx eax, byte [r14 + 4]
movzx ecx, byte [rax + rbp + 0x39740]
mov eax, dword [r14]
xor eax, 0x6c6c756e
or ecx, eax
je 0x1800243f2
mov eax, 8
jmp 0x180024608
movabs rax, 0x6e00000000000000
mov qword [r15], rax
add r15, 8
xor eax, eax
jmp 0x180024608
movzx eax, byte [r14 + 5]
movzx ecx, byte [rax + rbp + 0x39740]
mov eax, dword [r14 + 1]
xor eax, 0x65736c61
or ecx, eax
je 0x18002442e
mov eax, 7
jmp 0x180024608
movabs rax, 0x6600000000000000
mov qword [r15], rax
add r15, 8
xor eax, eax
jmp 0x180024608
xor edx, edx
cmp sil, 0x2d
sete dl
add rdx, r14
mov rdi, rdx
xor r8d, r8d
nop dword [rax + rax]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180024479
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x180024460
mov r10, rdx
sub r10, rdi
je 0x1800245fe
cmp byte [rdi], 0x30
jne 0x180024494
cmp r10, 1
ja 0x1800245fe
xor ebx, ebx
xor r9b, r9b
cmp byte [rdx], 0x2e
jne 0x18002455d
mov rcx, qword [rdx + 1]
inc rdx
movabs rax, 0x606060606060606
movabs r10, 0xf0f0f0f0f0f0f0f
add rax, rcx
mov r9b, 1
shr rax, 4
mov rbx, rdx
xor rax, rcx
and rax, r10
xor rax, rcx
cmp rax, qword [rsp + 0x50]
jne 0x18002452d
and rcx, r10
imul rax, rcx, 0xa01
imul r8, r8, 0x5f5e100
shr rax, 8
movabs rcx, 0xff00ff00ff00ff
and rax, rcx
imul rcx, rax, 0x640001
movabs rax, 0xffff0000ffff
shr rcx, 0x10
and rcx, rax
movabs rax, 0x271000000001
imul rcx, rax
shr rcx, 0x20
add r8, rcx
add rdx, 8
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x180024544
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 0x180024536
sub rbx, rdx
je 0x1800245f9
mov eax, edx
sub eax, edi
movsxd r10, eax
movzx eax, byte [rdx]
sub al, 0x45
test al, 0xdf
je 0x18002468f
test r9b, r9b
jne 0x18002470f
xor eax, eax
cmp sil, 0x2d
setne al
add rax, 0x13
cmp r10, rax
jbe 0x180024591
mov rbx, qword [rsp + 0x28]
mov eax, 0xa
jmp 0x180024603
jne 0x180024639
cmp sil, 0x2d
jne 0x1800245e4
mov rbx, qword [rsp + 0x28]
movabs rax, 0x8000000000000000
cmp r8, rax
jbe 0x1800245b8
mov eax, 0xa
jmp 0x180024603
neg r8
movabs rax, 0x6c00000000000000
mov qword [r15], rax
mov qword [r15 + 8], r8
add r15, 0x10
movzx eax, byte [rdx]
movzx ecx, byte [rax + rbp + 0x39740]
neg cl
sbb eax, eax
and eax, 9
jmp 0x180024603
cmp sil, 0x31
jne 0x1800245f9
movabs rax, 0x7fffffffffffffff
cmp r8, rax
ja 0x180024648
mov rbx, qword [rsp + 0x28]
mov eax, 9
mov rdi, qword [rsp + 0x48]
test eax, eax
jne 0x180024ba8
mov r10, qword [rsp + 0x40]
lea rbp, [0x180000000]
mov esi, dword [rsp + 0x20]
movabs r11, 0x7b00000000000000
movabs r14, 0x5b00000000000000
jmp 0x180023bf9
movabs rax, 0x7fffffffffffffff
cmp r8, rax
jbe 0x180024654
movabs rax, 0x7500000000000000
jmp 0x180024667
cmp sil, 0x2d
jne 0x18002465d
neg r8
movabs rax, 0x6c00000000000000
mov rbx, qword [rsp + 0x28]
add r15, 0x10
mov qword [r11], rax
mov qword [r11 + 8], r8
movzx eax, byte [rdx]
cmp byte [rax + rbp + 0x39740], 0
jne 0x1800245fe
xor eax, eax
jmp 0x180024603
movzx r11d, byte [rdx + 1]
inc rdx
lea eax, [r11 - 0x2b]
test al, 0xfd
jne 0x1800246a2
inc rdx
mov r9, rdx
xor ecx, ecx
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x1800246c0
movzx eax, al
lea rcx, [rcx + rcx*4]
inc rdx
lea rcx, [rax + rcx*2]
jmp 0x1800246a7
cmp rdx, r9
je 0x1800245f9
lea rax, [r9 + 0x12]
cmp rdx, rax
jbe 0x1800246fe
cmp byte [r9], 0x30
jne 0x1800246e9
nop dword [rax + rax]
inc r9
cmp byte [r9], 0x30
je 0x1800246e0
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 ebp, byte [rax + rbp + 0x39740]
cmp r10, 0x13
jbe 0x180024795
mov rcx, rdi
movzx eax, byte [rcx]
sub al, 0x2e
test al, 0xfd
jne 0x180024731
inc rcx
jmp 0x180024723
sub r10, rcx
add r10, rdi
cmp r10, 0x13
jbe 0x180024795
mov rcx, r14
call fcn.1800151a0
comisd xmm0, xmm9
ja 0x180024757
comisd xmm8, xmm0
ja 0x180024757
mov dl, 1
jmp 0x180024759
xor dl, dl
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x30], xmm0
mov qword [r15], rax
mov ecx, 9
mov rax, qword [rsp + 0x30]
mov qword [r15 + 8], rax
xor eax, eax
add r15, 0x10
test dl, dl
cmove eax, ecx
jne 0x180024a5a
mov rbx, qword [rsp + 0x28]
jmp 0x180024603
cmp rbx, 0xfffffffffffffeaa
jl 0x180024903
cmp rbx, 0x134
jg 0x180024a1f
lea rax, [rbx + 0x16]
cmp rax, 0x2c
ja 0x180024822
movabs rax, 0x1fffffffffffff
cmp r8, rax
ja 0x180024822
xorps xmm0, xmm0
test r8, r8
js 0x1800247d7
cvtsi2sd xmm0, r8
jmp 0x1800247ed
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 0x18002480a
sub rax, rcx
divsd xmm0, qword [rax]
jmp 0x18002480f
mulsd xmm0, qword [rcx + rax]
cmp sil, 0x2d
jne 0x180024a3a
xorps xmm0, xmm10
jmp 0x180024a3a
test r8, r8
je 0x180024903
imul r9, rbx, 0x3526a
mov dword [rsp + 0x30], 0
sar r9, 0x10
add r9, 0x43f
bsr rax, r8
je 0x180024856
mov r10d, 0x3f
sub r10d, eax
jmp 0x18002485c
mov r10d, 0x40
mov ecx, r10d
lea rdi, [0x180000000]
shl r8, cl
lea ecx, [rbx*2 + 0x2ac]
mov rax, qword [rdi + rcx*8 + 0x3a9e0]
mul r8
mov qword [rsp + 0x88], rdx
mov r11, rax
and edx, 0x1ff
mov qword [rsp + 0x80], rax
movaps xmm0, xmmword [rsp + 0x80]
movdqa xmmword [rsp + 0x30], xmm0
cmp rdx, 0x1ff
jne 0x1800248ca
inc ecx
mov rax, qword [rdi + rcx*8 + 0x3a9e0]
mul r8
add r11, rdx
cmp rdx, r11
mov rdx, qword [rsp + 0x38]
jbe 0x1800248d4
inc rdx
jmp 0x1800248d4
mov rdx, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
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 0x18002496e
mov ecx, 1
sub rcx, r9
cmp rcx, 0x40
jl 0x180024915
cmp sil, 0x2d
jne 0x180024a37
movaps xmm0, xmm6
jmp 0x180024a3a
shr r8, cl
movabs rax, 0x8000000000000000
xor ecx, ecx
mov rdx, r8
and edx, 1
add rdx, r8
movabs r8, 0x10000000000000
shr rdx, 1
cmp sil, 0x2d
cmove rcx, rax
xor eax, eax
cmp rdx, r8
cmovae 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 0x180024a3a
cmp r11, 1
ja 0x180024997
lea rax, [rbx + 4]
cmp rax, 0x1b
ja 0x180024997
movzx eax, r8b
and al, 3
cmp al, 1
jne 0x180024997
mov rax, r8
shl rax, cl
cmp rax, rdx
jne 0x180024997
and r8, 0xfffffffffffffffe
mov rcx, r8
movabs rax, 0x20000000000000
and ecx, 1
add rcx, r8
shr rcx, 1
cmp rcx, rax
jb 0x1800249bf
movabs rcx, 0x10000000000000
inc r9
cmp r9, 0x7fe
jle 0x1800249ed
mov rcx, r14
call fcn.1800151a0
comisd xmm0, xmm9
ja 0x180024a28
comisd xmm8, xmm0
jbe 0x180024a3a
mov rbx, qword [rsp + 0x28]
mov eax, 9
jmp 0x180024603
xor eax, eax
mov edx, 0x800
cmp sil, 0x2d
cmove eax, edx
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 0x180024a3a
test r8, r8
je 0x180024903
mov rbx, qword [rsp + 0x28]
mov eax, 9
jmp 0x180024603
movaps xmm0, xmm7
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x30], xmm0
mov qword [r15], rax
mov rax, qword [rsp + 0x30]
mov qword [r15 + 8], rax
add r15, 0x10
mov rbx, qword [rsp + 0x28]
neg bpl
sbb eax, eax
and eax, 9
jmp 0x180024603
mov eax, dword [r13]
cmp byte [rax + rdi], 0x5d
jne 0x180024b71
mov rax, qword [r10 + 0x50]
lea r12, [r10 + 0x50]
mov esi, dword [rsp + 0x20]
lea r13, [r8 + 8]
mov rdx, r15
movabs r14, 0x5b00000000000000
movabs r11, 0x7b00000000000000
sub rdx, qword [rax]
sar rdx, 3
mov eax, edx
lea ecx, [rdx + 2]
movabs rdx, 0x5d00000000000000
or rcx, r14
or rax, rdx
mov qword [r15], rcx
mov qword [r15 + 8], rax
add r15, 0x10
jmp 0x180023bf9
cmp cl, 0x7d
jne case.0x1800226cb.35
mov rax, qword [r10 + 0x30]
lea r12, [r10 + 0x50]
mov ecx, esi
movabs rdx, 0x7d00000000000000
mov r9d, dword [rax + rcx*8]
mov eax, r9d
or rax, rdx
mov qword [r15], rax
add r15, 8
mov rax, qword [r10 + 0x30]
mov edx, dword [rax + rcx*8 + 4]
mov rcx, r15
mov rax, qword [r12]
mov r8, qword [rax]
mov eax, 0xffffff
sub rcx, r8
sar rcx, 3
cmp edx, eax
mov ecx, ecx
cmova edx, eax
mov eax, edx
lea rdx, [r10 + 0x50]
shl rax, 0x20
or rcx, rax
or rcx, r11
mov qword [r8 + r9*8], rcx
jmp 0x180023bde
movabs r8, 0x5d00000000000000
jmp 0x180023b6e
mov rax, qword [r10 + 0x30]
mov r12d, 9
mov ecx, esi
movabs r8, 0x7400000000000000
movabs r9, 0x6e00000000000000
inc dword [rax + rcx*8 + 4]
jmp 0x18002318f
mov r14d, dword [rsp + 0x20]
mov r12d, 9
movabs r8, 0x7400000000000000
movabs r9, 0x6e00000000000000
jmp 0x180023141
mov eax, 5
jmp 0x180024ba8
mov eax, 3
jmp 0x180024ba8
mov eax, 4
movaps xmm9, xmmword [rsp + 0xa0]
movaps xmm8, xmmword [rsp + 0xb0]
movaps xmm7, xmmword [rsp + 0xc0]
movaps xmm6, xmmword [rsp + 0xd0]
mov r15, qword [rsp + 0xe0]
mov r13, qword [rsp + 0x128]
mov r12, qword [rsp + 0x120]
mov rbp, qword [rsp + 0x118]
movaps xmm10, xmmword [rsp + 0x90]
add rsp, 0xe8
pop r14
pop rdi
pop rsi
pop rbx
ret