Function at 0x180029f50
Capabilities:
Encrypt data using speck

Disassembly:
push rbp
push rbx
push rsi
push r15
lea rbp, [rsp - 8]
sub rsp, 0x108
mov qword [rcx + 0x50], rdx
lea rax, [rcx + 0x50]
mov r8, qword [rcx + 0x10]
mov rbx, rcx
mov r15, qword [rdx + 8]
xor esi, esi
mov r10, qword [rdx]
mov qword [rbp - 0x78], rax
mov rax, qword [rcx + 0x40]
mov qword [rsp + 0x40], rax
mov eax, dword [rcx + 0x18]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x60], r15
lea r9, [r8 + rax*4]
mov eax, dword [rcx + 8]
lea rcx, [r8 + rax*4]
cmp r9, rcx
jne 0x180029fb4
lea eax, [rsi + 0xd]
add rsp, 0x108
pop r15
pop rsi
pop rbx
pop rbp
ret
mov rax, qword [rbx + 0x30]
movabs r8, 0x2200000000000000
mov qword [rsp + 0x138], rdi
mov qword [rsp + 0x140], r12
lea r12, [r10 + 8]
mov r10, qword [rsp + 0x40]
mov qword [rsp + 0x148], r13
lea r13, [0x180000000]
mov qword [rsp + 0x100], r14
lea r14, [r9 + 4]
movaps xmmword [rsp + 0xf0], xmm6
movsd xmm6, qword [0x18003f640]
mov dword [rax], esi
mov rax, qword [rbx + 0x30]
movaps xmmword [rsp + 0xe0], xmm7
xorps xmm7, xmm7
movaps xmmword [rsp + 0xd0], xmm8
movsd xmm8, qword [0x18003f648]
mov dword [rax + 4], esi
mov edx, dword [r9]
mov r9d, 9
movzx eax, byte [r10 + rdx]
lea rdi, [r10 + 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 0x18002ac0d
cmp al, 0x7b
je 0x18002ab85
add eax, 0xffffffde
cmp eax, 0x52
ja case.0x18002a09f.35
lea r13, [0x180000000]
cdqe
movzx eax, byte [rax + r13 + 0x2cb24]
mov ecx, dword [r13 + rax*4 + 0x2cb0c]
add rcx, r13
jmp rcx
mov rax, qword [rbx + 0x50]
lea r9, [rdi + 1]
movdqa xmm3, xmmword [0x18003f6e0]
mov rcx, r15
movdqa xmm4, xmmword [0x18003f710]
movdqa xmm0, xmm3
sub rcx, qword [rax + 8]
mov rax, r8
or rcx, rax
lea r8, [r15 + 4]
mov qword [r12], rcx
add r12, 8
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmm2, xmmword [r9]
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
movdqa xmm0, xmm2
pcmpeqb xmm0, xmm3
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 0x18002a38a
test r10d, r10d
je 0x18002a309
mov eax, r10d
bsf rcx, rax
lea eax, [rcx + 1]
movsxd r10, eax
movzx eax, byte [r10 + r9]
cmp al, 0x75
jne 0x18002a2e3
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 0x18002a22e
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x18002a398
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 0x18002a398
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x18002a23f
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x18002a398
cmp edx, 0x7f
ja 0x18002a24f
mov byte [r8], dl
inc r8
jmp 0x18002a311
cmp edx, 0x7ff
ja 0x18002a274
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 0x18002a311
cmp edx, 0xffff
ja 0x18002a2a3
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 0x18002a311
cmp edx, 0x10ffff
ja 0x18002a398
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 0x18002a311
movzx edx, byte [rax + r13 + 0x3dea0]
test dl, dl
je 0x18002a398
movsxd rax, ecx
mov byte [rax + r8], dl
lea eax, [rcx + 2]
movsxd rcx, eax
add r9, rcx
add r8, r10
jmp 0x18002a311
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 0x18002a143
mov eax, edx
bsf rcx, rax
movsxd rcx, ecx
add rcx, r8
jne 0x18002a3a5
mov dword [rsp + 0x20], 5
jmp 0x18002a71d
mov eax, ecx
mov dword [rsp + 0x20], esi
sub eax, r15d
sub eax, 4
mov dword [r15], eax
mov byte [rcx], sil
jmp 0x18002a71d
mov rcx, qword [rbx + 0x48]
sub rcx, rdx
cmp rcx, 4
jbe 0x18002a3e1
movzx eax, byte [rdi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rdi]
xor eax, 0x65757274
or ecx, eax
jmp 0x18002a3e9
jne 0x18002a40b
cmp dword [rdi], 0x65757274
sete al
test al, al
je 0x18002a40b
movabs rax, 0x7400000000000000
mov dword [rsp + 0x20], esi
mov qword [r12], rax
add r12, 8
jmp 0x18002a71d
mov dword [rsp + 0x20], 6
jmp 0x18002a71d
mov rcx, qword [rbx + 0x48]
sub rcx, rdx
cmp rcx, 5
jbe 0x18002a43e
movzx eax, byte [rdi + 5]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rdi + 1]
xor eax, 0x65736c61
or ecx, eax
jmp 0x18002a447
jne 0x18002a469
cmp dword [rdi + 1], 0x65736c61
sete al
test al, al
je 0x18002a469
movabs rax, 0x6600000000000000
mov dword [rsp + 0x20], esi
mov qword [r12], rax
add r12, 8
jmp 0x18002a71d
mov dword [rsp + 0x20], 7
jmp 0x18002a71d
mov rcx, qword [rbx + 0x48]
sub rcx, rdx
cmp rcx, 4
jbe 0x18002a49b
movzx eax, byte [rdi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rdi]
xor eax, 0x6c6c756e
or ecx, eax
jmp 0x18002a4a3
jne 0x18002a4c5
cmp dword [rdi], 0x6c6c756e
sete al
test al, al
je 0x18002a4c5
movabs rax, 0x6e00000000000000
mov dword [rsp + 0x20], esi
mov qword [r12], rax
add r12, 8
jmp 0x18002a71d
mov dword [rsp + 0x20], 8
jmp 0x18002a71d
mov rcx, qword [rbx + 0x48]
sub rcx, rdx
lea rdx, [0x18003fb40]
add rcx, 0x40
call fcn.18002d22c
mov rbx, rax
test rax, rax
jne 0x18002a4fe
mov dword [rsp + 0x20], 2
jmp 0x18002a718
mov eax, dword [r14 - 4]
mov rdx, rdi
mov rsi, qword [rsp + 0x28]
mov rcx, rbx
mov r8, qword [rsi + 0x48]
sub r8, rax
call sub.VCRUNTIME140.dll_memcpy
mov rcx, qword [rsi + 0x48]
xor edx, edx
mov eax, dword [r14 - 4]
movdqa xmm0, xmmword [str.________________________________0000000000000000]
sub rcx, rax
add rcx, rbx
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
xor r8d, r8d
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x18002a56c
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x18002a553
mov r11, rdx
sub r11, rsi
je 0x18002a708
cmp byte [rsi], 0x30
jne 0x18002a587
cmp r11, 1
ja 0x18002a708
xor r10d, r10d
xor r9b, r9b
cmp byte [rdx], 0x2e
jne 0x18002a669
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 0x18002a612
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 0x18002a61f
xor cl, cl
jmp 0x18002a62e
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 + rax]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x18002a659
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x18002a640
sub r10, rdx
je 0x18002a708
mov eax, edx
sub eax, esi
movsxd r11, eax
movzx eax, byte [rdx]
sub al, 0x45
test al, 0xdf
je 0x18002a787
test r9b, r9b
jne 0x18002a805
xor eax, eax
cmp dil, 0x2d
setne al
add rax, 0x13
cmp r11, rax
jbe 0x18002a69b
mov dword [rsp + 0x20], 0xa
jmp 0x18002a710
jne 0x18002a72e
cmp dil, 0x2d
jne 0x18002a6f3
movabs rax, 0x8000000000000000
cmp r8, rax
jbe 0x18002a6c0
mov dword [rsp + 0x20], 0xa
jmp 0x18002a710
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 edi, edi
and edi, 9
mov dword [rsp + 0x20], edi
jmp 0x18002a710
cmp dil, 0x31
jne 0x18002a708
movabs rax, 0x7fffffffffffffff
cmp r8, rax
ja 0x18002a73d
mov dword [rsp + 0x20], 9
mov rcx, rbx
call fcn.18002d224
mov rbx, qword [rsp + 0x28]
mov eax, dword [rsp + 0x20]
test eax, eax
je 0x18002abd1
jmp 0x18002cab4
movabs rax, 0x7fffffffffffffff
cmp r8, rax
jbe 0x18002a749
movabs r9, 0x7500000000000000
jmp 0x18002a75c
cmp dil, 0x2d
jne 0x18002a752
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], 0
jne 0x18002a708
mov dword [rsp + 0x20], 0
jmp 0x18002a710
movzx r14d, byte [rdx + 1]
inc rdx
lea eax, [r14 - 0x2b]
test al, 0xfd
jne 0x18002a79a
inc rdx
mov r9, rdx
xor ecx, ecx
nop
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x18002a7b9
movzx eax, al
lea rcx, [rcx + rcx*4]
inc rdx
lea rcx, [rax + rcx*2]
jmp 0x18002a7a0
cmp rdx, r9
jne 0x18002a7c7
mov r14, qword [rbp - 0x80]
jmp 0x18002a708
lea rax, [r9 + 0x12]
cmp rdx, rax
jbe 0x18002a7f4
cmp byte [r9], 0x30
jne 0x18002a7df
inc r9
cmp byte [r9], 0x30
je 0x18002a7d6
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 0x18002a8a1
mov rcx, rsi
nop
movzx eax, byte [rcx]
sub al, 0x2e
test al, 0xfd
jne 0x18002a82e
inc rcx
jmp 0x18002a820
sub r11, rcx
add r11, rsi
cmp r11, 0x13
jbe 0x18002a8a1
mov rcx, rbx
call fcn.1800151a0
comisd xmm0, xmmword [0x18003f638]
ja 0x18002a85e
movsd xmm1, qword [0x18003f648]
comisd xmm1, xmm0
ja 0x18002a85e
mov dl, 1
jmp 0x18002a860
xor dl, dl
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x40], xmm0
mov qword [r12], rax
xor edi, edi
mov rax, qword [rsp + 0x40]
mov qword [r12 + 8], rax
add r12, 0x10
test dl, dl
mov eax, 9
cmove edi, eax
mov dword [rsp + 0x20], edi
jne 0x18002ab70
mov r14, qword [rbp - 0x80]
jmp 0x18002a710
cmp r10, 0xfffffffffffffeaa
jl 0x18002ab3b
cmp r10, 0x134
jg 0x18002ab25
lea rax, [r10 + 0x16]
cmp rax, 0x2c
ja 0x18002a931
movabs rax, 0x1fffffffffffff
cmp r8, rax
ja 0x18002a931
xorps xmm0, xmm0
test r8, r8
js 0x18002a8e3
cvtsi2sd xmm0, r8
jmp 0x18002a8f9
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 0x18002a916
sub rcx, rax
divsd xmm0, qword [rcx]
jmp 0x18002a91b
mulsd xmm0, qword [rax + rcx]
cmp dil, 0x2d
jne 0x18002ab4e
xorps xmm0, xmmword [0x18003f750]
jmp 0x18002ab4e
test r8, r8
je 0x18002ab3b
imul r14, r10, 0x3526a
mov dword [rsp + 0x20], 0
sar r14, 0x10
add r14, 0x43f
bsr rax, r8
je 0x18002a963
mov ecx, 0x3f
sub ecx, eax
jmp 0x18002a968
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 + 0x48], rdx
mov r9, rax
mov qword [rsp + 0x40], rax
and edx, 0x1ff
movaps xmm0, xmmword [rsp + 0x40]
movdqa xmmword [rsp + 0x40], xmm0
cmp rdx, 0x1ff
jne 0x18002a9c9
inc ecx
mov rax, qword [r13 + rcx*8 + 0x3a9e0]
mul r8
lea r11, [r9 + rdx]
cmp rdx, r11
mov rdx, qword [rsp + 0x48]
jbe 0x18002a9d3
inc rdx
jmp 0x18002a9d3
mov rdx, qword [rsp + 0x48]
mov r11, qword [rsp + 0x40]
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 0x18002aa65
sub rcx, r14
inc rcx
cmp rcx, 0x40
jge 0x18002ab3b
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 dil, 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 + 0x40], rcx
movsd xmm0, qword [rsp + 0x40]
jmp 0x18002ab4e
cmp r11, 1
ja 0x18002aa91
lea rax, [r10 + 4]
cmp rax, 0x1b
ja 0x18002aa91
movzx eax, r8b
and al, 3
cmp al, 1
jne 0x18002aa91
mov rcx, rsi
mov rax, r8
shl rax, cl
cmp rax, rdx
jne 0x18002aa91
and r8, 0xfffffffffffffffe
mov rcx, r8
movabs rax, 0x20000000000000
and ecx, 1
add rcx, r8
shr rcx, 1
cmp rcx, rax
jb 0x18002aab9
movabs rcx, 0x10000000000000
inc r9
cmp r9, 0x7fe
jle 0x18002aaf3
mov rcx, rbx
call fcn.1800151a0
comisd xmm0, xmmword [0x18003f638]
ja 0x18002ab2a
movsd xmm1, qword [0x18003f648]
comisd xmm1, xmm0
jbe 0x18002ab4e
mov r14, qword [rbp - 0x80]
mov dword [rsp + 0x20], 9
jmp 0x18002a710
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 0x18002ab4e
test r8, r8
je 0x18002ab3b
mov r14, qword [rbp - 0x80]
mov dword [rsp + 0x20], 9
jmp 0x18002a710
cmp dil, 0x2d
jne 0x18002ab4b
movsd xmm0, qword [0x18003f640]
jmp 0x18002ab4e
xorps xmm0, xmm0
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 r14, qword [rbp - 0x80]
neg r15b
sbb eax, eax
and eax, 9
mov dword [rsp + 0x20], eax
jmp 0x18002a710
mov eax, dword [r14]
cmp byte [rax + r10], 0x7d
jne 0x18002bc08
mov rax, qword [rbx + 0x50]
mov rdx, r12
add r14, 4
sub rdx, qword [rax]
movabs rax, 0x7b00000000000000
sar rdx, 3
lea ecx, [rdx + 2]
or rcx, rax
mov eax, edx
mov qword [r12], rcx
movabs rdx, 0x7d00000000000000
or rax, rdx
mov qword [r12 + 8], rax
add r12, 0x10
movabs rdx, 0x7200000000000000
mov qword [r12], rdx
mov rax, qword [rbx + 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
sub r14, qword [rbx + 0x10]
sar r14, 2
mov dword [rbx + 0x18], r14d
xor eax, eax
jmp 0x18002cab4
mov eax, dword [r14]
cmp byte [rax + r10], 0x5d
jne 0x18002ac4e
mov rax, qword [rbx + 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 0x18002abc5
inc esi
mov eax, esi
mov dword [rsp + 0x20], esi
cmp rax, qword [rbx + 0x28]
jae 0x18002caaf
mov rax, qword [rbx + 0x38]
mov rcx, r12
add r12, 8
mov byte [rsi + rax], 1
mov rax, qword [rbx + 0x50]
sub rcx, qword [rax]
mov rax, qword [rbx + 0x30]
sar rcx, 3
mov dword [rax + rsi*8], ecx
mov rax, qword [rbx + 0x30]
mov dword [rax + rsi*8 + 4], 0
mov rax, qword [rbx + 0x30]
inc dword [rax + rsi*8 + 4]
mov esi, dword [r14]
mov r11, r12
add rsi, r10
add r14, 4
mov qword [rbp - 0x80], r14
movzx edi, byte [rsi]
cmp dil, 0x5b
je 0x18002b783
cmp dil, 0x7b
je 0x18002b72e
cmp dil, 0x22
jne 0x18002afdb
mov rax, qword [rbx + 0x50]
lea r9, [rsi + 1]
movdqa xmm3, xmmword [0x18003f6e0]
mov rcx, r15
movdqa xmm4, xmmword [0x18003f710]
movdqa xmm0, xmm3
sub rcx, qword [rax + 8]
or rcx, r8
lea r8, [r15 + 4]
mov qword [r12], rcx
add r12, 8
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmm2, xmmword [r9]
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
movdqa xmm0, xmm2
pcmpeqb xmm0, xmm3
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 0x18002afa5
test r10d, r10d
je 0x18002af2c
mov eax, r10d
bsf rcx, rax
lea eax, [rcx + 1]
movsxd r10, eax
movzx eax, byte [r9 + r10]
cmp al, 0x75
jne 0x18002af06
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 0x18002ae51
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x18002afb3
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 0x18002afb3
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x18002ae62
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x18002afb3
cmp edx, 0x7f
ja 0x18002ae72
mov byte [r8], dl
inc r8
jmp 0x18002af34
cmp edx, 0x7ff
ja 0x18002ae97
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 0x18002af34
cmp edx, 0xffff
ja 0x18002aec6
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 0x18002af34
cmp edx, 0x10ffff
ja 0x18002afb3
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 0x18002af34
movzx edx, byte [rax + r13 + 0x3dea0]
test dl, dl
je 0x18002afb3
movsxd rax, ecx
mov byte [rax + r8], dl
lea eax, [rcx + 2]
movsxd rcx, eax
add r9, rcx
add r8, r10
jmp 0x18002af34
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 0x18002ad66
mov eax, edx
bsf rcx, rax
movsxd rcx, ecx
add rcx, r8
jne 0x18002afbd
mov eax, 5
jmp 0x18002b704
mov eax, ecx
sub eax, r15d
sub eax, 4
mov dword [r15], eax
lea r15, [rcx + 1]
mov qword [rsp + 0x60], r15
xor eax, eax
mov byte [rcx], 0
jmp 0x18002b704
cmp dil, 0x3a
jb 0x18002b0b1
cmp dil, 0x66
je 0x18002b075
cmp dil, 0x6e
je 0x18002b03a
cmp dil, 0x74
jne case.0x18002a09f.35
movzx eax, byte [rsi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi]
xor eax, 0x65757274
or ecx, eax
je 0x18002b021
mov eax, 6
jmp 0x18002b709
movabs rax, 0x7400000000000000
mov qword [r12], rax
add r12, 8
xor eax, eax
jmp 0x18002b709
movzx eax, byte [rsi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi]
xor eax, 0x6c6c756e
or ecx, eax
je 0x18002b05c
mov eax, 8
jmp 0x18002b709
movabs rax, 0x6e00000000000000
mov qword [r12], rax
add r12, 8
xor eax, eax
jmp 0x18002b709
movzx eax, byte [rsi + 5]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi + 1]
xor eax, 0x65736c61
or ecx, eax
je 0x18002b098
mov eax, 7
jmp 0x18002b709
movabs rax, 0x6600000000000000
mov qword [r12], rax
add r12, 8
xor eax, eax
jmp 0x18002b709
xor edx, edx
cmp dil, 0x2d
sete dl
add rdx, rsi
mov r14, rdx
xor r8d, r8d
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x18002b0dc
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x18002b0c3
mov r10, rdx
sub r10, r14
je 0x18002b6fd
cmp byte [r14], 0x30
jne 0x18002b0f8
cmp r10, 1
ja 0x18002b6fd
xor ebx, ebx
xor r9b, r9b
cmp byte [rdx], 0x2e
jne 0x18002b1c3
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 0x18002b182
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 0x18002b1a0
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
nop dword [rax]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
jbe 0x18002b18b
sub rbx, rdx
jne 0x18002b1bb
lea eax, [rbx + 9]
mov rbx, qword [rsp + 0x28]
jmp 0x18002b700
mov eax, edx
sub eax, r14d
movsxd r10, eax
movzx eax, byte [rdx]
sub al, 0x45
test al, 0xdf
je 0x18002b2d3
test r9b, r9b
jne 0x18002b35f
xor eax, eax
cmp dil, 0x2d
setne al
add rax, 0x13
cmp r10, rax
jbe 0x18002b1fa
mov rbx, qword [rsp + 0x28]
mov eax, 0xa
jmp 0x18002b700
jne 0x18002b276
cmp dil, 0x2d
jne 0x18002b252
mov rbx, qword [rsp + 0x28]
movabs rax, 0x8000000000000000
cmp r8, rax
jbe 0x18002b220
mov eax, 0xa
jmp 0x18002b700
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 0x18002b700
cmp dil, 0x31
jne 0x18002b267
movabs rax, 0x7fffffffffffffff
cmp r8, rax
ja 0x18002b285
mov rbx, qword [rsp + 0x28]
mov eax, 9
jmp 0x18002b700
movabs rax, 0x7fffffffffffffff
cmp r8, rax
jbe 0x18002b291
movabs rax, 0x7500000000000000
jmp 0x18002b2a4
cmp dil, 0x2d
jne 0x18002b29a
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 0x18002b2cc
mov eax, 9
jmp 0x18002b700
xor eax, eax
jmp 0x18002b700
movzx r11d, byte [rdx + 1]
inc rdx
lea eax, [r11 - 0x2b]
test al, 0xfd
jne 0x18002b2e6
inc rdx
mov r9, rdx
xor ecx, ecx
nop dword [rax + rax]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x18002b309
movzx eax, al
lea rcx, [rcx + rcx*4]
inc rdx
lea rcx, [rax + rcx*2]
jmp 0x18002b2f0
cmp rdx, r9
jne 0x18002b31d
mov rbx, qword [rsp + 0x28]
mov eax, 9
jmp 0x18002b700
lea rax, [r9 + 0x12]
cmp rdx, rax
jbe 0x18002b34e
cmp byte [r9], 0x30
jne 0x18002b339
nop dword [rax]
inc r9
cmp byte [r9], 0x30
je 0x18002b330
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 0x18002b3ed
mov rcx, r14
movzx eax, byte [rcx]
sub al, 0x2e
test al, 0xfd
jne 0x18002b382
inc rcx
jmp 0x18002b374
sub r10, rcx
add r10, r14
cmp r10, 0x13
jbe 0x18002b3ed
mov rcx, rsi
call fcn.1800151a0
comisd xmm0, xmm9
ja 0x18002b3a8
comisd xmm8, xmm0
ja 0x18002b3a8
mov dl, 1
jmp 0x18002b3aa
xor dl, dl
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x50], xmm0
mov qword [r12], rax
mov ecx, 9
mov rax, qword [rsp + 0x50]
mov qword [r12 + 8], rax
xor eax, eax
add r12, 0x10
test dl, dl
cmove eax, ecx
jne 0x18002b6e9
mov r15, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x28]
jmp 0x18002b700
cmp rbx, 0xfffffffffffffeaa
jl 0x18002b6b9
cmp rbx, 0x134
jg 0x18002b6a3
lea rax, [rbx + 0x16]
cmp rax, 0x2c
ja 0x18002b48e
movabs rax, 0x1fffffffffffff
cmp r8, rax
ja 0x18002b48e
xorps xmm0, xmm0
test r8, r8
js 0x18002b42f
cvtsi2sd xmm0, r8
jmp 0x18002b445
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 0x18002b462
sub rax, rcx
divsd xmm0, qword [rax]
jmp 0x18002b467
mulsd xmm0, qword [rcx + rax]
movsd qword [rsp + 0x30], xmm0
cmp dil, 0x2d
jne 0x18002b69b
movq xmm0, xmm0
xorps xmm0, xmm10
movsd qword [rsp + 0x30], xmm0
movq xmm0, xmm0
jmp 0x18002b6c7
test r8, r8
jne 0x18002b4b7
cmp dil, 0x2d
jne 0x18002b4a8
movsd qword [rsp + 0x30], xmm6
movq xmm0, xmm6
jmp 0x18002b6c7
movsd qword [rsp + 0x30], xmm7
movq xmm0, xmm7
jmp 0x18002b6c7
imul r9, rbx, 0x3526a
mov dword [rsp + 0x70], 0
sar r9, 0x10
add r9, 0x43f
bsr rax, r8
je 0x18002b4e2
mov r10d, 0x3f
sub r10d, eax
jmp 0x18002b4e8
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 + 0x50], xmm0
cmp rdx, 0x1ff
jne 0x18002b543
inc ecx
mov rax, qword [r13 + rcx*8 + 0x3a9e0]
mul r8
add r11, rdx
cmp rdx, r11
mov rdx, qword [rsp + 0x58]
jbe 0x18002b54d
inc rdx
jmp 0x18002b54d
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, r10d
shr r8, cl
cdqe
sub r9, rax
test r9, r9
jg 0x18002b5f2
mov ecx, 1
sub rcx, r9
cmp rcx, 0x40
jl 0x18002b599
cmp dil, 0x2d
jne 0x18002b4a8
movsd qword [rsp + 0x30], xmm6
movq xmm0, xmm6
jmp 0x18002b6c7
shr r8, cl
movabs rax, 0x10000000000000
xor ecx, ecx
mov rdx, r8
and edx, 1
add rdx, r8
movabs r8, 0x8000000000000000
shr rdx, 1
cmp rdx, rax
cmovae rcx, rax
xor eax, eax
cmp dil, 0x2d
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 0x18002b6c7
cmp r11, 1
ja 0x18002b61b
lea rax, [rbx + 4]
cmp rax, 0x1b
ja 0x18002b61b
movzx eax, r8b
and al, 3
cmp al, 1
jne 0x18002b61b
mov rax, r8
shl rax, cl
cmp rax, rdx
jne 0x18002b61b
and r8, 0xfffffffffffffffe
mov rcx, r8
movabs rax, 0x20000000000000
and ecx, 1
add rcx, r8
shr rcx, 1
cmp rcx, rax
jb 0x18002b643
movabs rcx, 0x10000000000000
inc r9
cmp r9, 0x7fe
jle 0x18002b671
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.180015d00
test al, al
jne 0x18002b69b
mov r15, qword [rsp + 0x60]
mov eax, 9
mov rbx, qword [rsp + 0x28]
jmp 0x18002b700
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 + 0x30], rax
movsd xmm0, qword [rsp + 0x30]
jmp 0x18002b6c7
test r8, r8
je 0x18002b6b9
mov r15, qword [rsp + 0x60]
mov eax, 9
mov rbx, qword [rsp + 0x28]
jmp 0x18002b700
cmp dil, 0x2d
jne 0x18002b6c4
movaps xmm0, xmm6
jmp 0x18002b6c7
movaps xmm0, xmm7
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x50], xmm0
mov qword [r12], rax
mov rax, qword [rsp + 0x50]
mov qword [r12 + 8], rax
add r12, 0x10
mov rbx, qword [rsp + 0x28]
neg r15b
mov r15, qword [rsp + 0x60]
sbb eax, eax
and eax, 9
jmp 0x18002b700
mov eax, r9d
mov r14, qword [rbp - 0x80]
mov r10, qword [rsp + 0x40]
test eax, eax
jne 0x18002cab4
mov esi, dword [rsp + 0x20]
movabs rdx, 0x5d00000000000000
movabs r11, 0x5b00000000000000
jmp 0x18002b7d3
mov eax, dword [r14]
mov esi, dword [rsp + 0x20]
cmp byte [rax + r10], 0x7d
jne 0x18002bc08
mov rax, qword [rbx + 0x50]
mov rdx, r12
movabs r11, 0x5b00000000000000
sub rdx, qword [rax]
movabs rax, 0x7b00000000000000
sar rdx, 3
lea ecx, [rdx + 2]
or rcx, rax
mov eax, edx
movabs rdx, 0x7d00000000000000
or rax, rdx
movabs rdx, 0x5d00000000000000
jmp 0x18002b7c2
mov eax, dword [r14]
mov esi, dword [rsp + 0x20]
cmp byte [rax + r10], 0x5d
jne 0x18002ac4e
mov rax, qword [rbx + 0x50]
mov rdx, r12
movabs r11, 0x5b00000000000000
sub rdx, qword [rax]
sar rdx, 3
mov eax, edx
lea ecx, [rdx + 2]
movabs rdx, 0x5d00000000000000
or rcx, r11
or rax, rdx
mov qword [r12], rcx
add r14, 4
mov qword [r12 + 8], rax
add r12, 0x10
lea rdi, [rbx + 0x50]
mov eax, dword [r14]
add r14, 4
movzx ecx, byte [rax + r10]
cmp cl, 0x2c
je 0x18002ca69
cmp cl, 0x5d
jne case.0x18002a09f.35
mov rax, qword [rbx + 0x30]
mov ecx, esi
mov r9d, dword [rax + rcx*8]
mov eax, r9d
or rax, rdx
mov qword [r12], rax
add r12, 8
mov rax, qword [rbx + 0x30]
mov ecx, dword [rax + rcx*8 + 4]
mov rax, qword [rdi]
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, r11
mov r11, rdi
mov qword [rsp + 0x50], r11
mov qword [r8 + r9*8], rdx
sub esi, 1
mov dword [rsp + 0x20], esi
je 0x18002abd1
mov rax, qword [rbx + 0x38]
cmp byte [rsi + rax], 0
jne 0x18002ca50
mov eax, dword [r14]
add r14, 4
movzx ecx, byte [rax + r10]
cmp cl, 0x2c
jne 0x18002c9e2
mov rax, qword [rbx + 0x30]
mov ecx, esi
inc dword [rax + rcx*8 + 4]
mov r9d, dword [r14]
add r14, 4
add r9, r10
cmp byte [r9], 0x22
jne case.0x18002a09f.35
mov rax, qword [r11]
lea r8, [r15 + 4]
movdqa xmm3, xmmword [0x18003f6e0]
mov rcx, r15
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
pmovmskb eax, xmm0
movdqa xmm0, xmm4
shl r10, 0x10
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 0x18002bb8a
test r10d, r10d
je 0x18002bb0c
mov eax, r10d
bsf rcx, rax
lea eax, [rcx + 1]
movsxd r10, eax
movzx eax, byte [r9 + r10]
cmp al, 0x75
jne 0x18002bae6
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 0x18002ba31
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x18002caa1
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 0x18002caa1
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x18002ba42
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x18002caa1
cmp edx, 0x7f
ja 0x18002ba52
mov byte [r8], dl
inc r8
jmp 0x18002bb14
cmp edx, 0x7ff
ja 0x18002ba77
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 0x18002bb14
cmp edx, 0xffff
ja 0x18002baa6
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 0x18002bb14
cmp edx, 0x10ffff
ja 0x18002caa1
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 0x18002bb14
movzx edx, byte [rax + r13 + 0x3dea0]
test dl, dl
je 0x18002caa1
movsxd rax, ecx
mov byte [rax + r8], dl
lea eax, [rcx + 2]
movsxd rcx, eax
add r9, rcx
add r8, r10
jmp 0x18002bb14
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 0x18002b946
mov r11, qword [rsp + 0x50]
mov eax, edx
bsf rcx, rax
movsxd rcx, ecx
add rcx, r8
je 0x18002caa1
mov eax, ecx
sub eax, r15d
sub eax, 4
mov dword [r15], eax
lea r15, [rcx + 1]
mov qword [rsp + 0x60], r15
mov byte [rcx], 0
mov eax, dword [r14]
lea r8, [r14 + 4]
mov r10, qword [rsp + 0x40]
mov rdi, r12
cmp byte [rax + r10], 0x3a
jne case.0x18002a09f.35
mov esi, dword [r14 + 4]
add r14, 8
add rsi, r10
mov qword [rbp - 0x80], r14
movzx ebx, byte [rsi]
cmp bl, 0x5b
je 0x18002c99c
cmp bl, 0x7b
jne 0x18002bfaf
mov eax, dword [r14]
mov rbx, qword [rsp + 0x28]
cmp byte [rax + r10], 0x7d
je 0x18002bf5b
mov esi, dword [rsp + 0x20]
inc esi
mov eax, esi
mov dword [rsp + 0x20], esi
cmp rax, qword [rbx + 0x28]
jae 0x18002caaf
mov rax, qword [rbx + 0x38]
lea r11, [rbx + 0x50]
mov rcx, r12
mov qword [rsp + 0x50], r11
mov byte [rsi + rax], 0
mov rax, qword [r11]
sub rcx, qword [rax]
mov rax, qword [rbx + 0x30]
sar rcx, 3
mov dword [rax + rsi*8], ecx
mov rax, qword [rbx + 0x30]
mov dword [rax + rsi*8 + 4], 0
mov r9d, dword [r14]
add r14, 4
add r9, r10
cmp byte [r9], 0x22
jne case.0x18002a09f.35
mov rax, qword [rbx + 0x30]
lea r8, [r15 + 4]
movdqa xmm3, xmmword [0x18003f6e0]
mov rcx, r15
movdqa xmm4, xmmword [0x18003f710]
inc dword [rax + rsi*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
movdqa xmm0, xmm1
pcmpeqb xmm0, xmm3
movdqu xmm2, xmmword [r9]
pmovmskb eax, xmm0
movdqa xmm0, xmm2
pcmpeqb xmm0, xmm3
movsxd r10, eax
pmovmskb eax, xmm0
movdqa xmm0, xmm4
shl r10, 0x10
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 0x18002bb8a
test r10d, r10d
je 0x18002bedd
mov eax, r10d
bsf rcx, rax
lea eax, [rcx + 1]
movsxd r10, eax
movzx eax, byte [r10 + r9]
cmp al, 0x75
jne 0x18002beb7
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 0x18002be02
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x18002caa1
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 0x18002caa1
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x18002be13
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x18002caa1
cmp edx, 0x7f
ja 0x18002be23
mov byte [r8], dl
inc r8
jmp 0x18002bee5
cmp edx, 0x7ff
ja 0x18002be48
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 0x18002bee5
cmp edx, 0xffff
ja 0x18002be77
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 0x18002bee5
cmp edx, 0x10ffff
ja 0x18002caa1
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 0x18002bee5
movzx edx, byte [rax + r13 + 0x3dea0]
test dl, dl
je 0x18002caa1
movsxd rax, ecx
mov byte [rax + r8], dl
lea eax, [rcx + 2]
movsxd rcx, eax
add r9, rcx
add r8, r10
jmp 0x18002bee5
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 0x18002bd17
jmp 0x18002bb85
mov rax, qword [rbx + 0x50]
lea r11, [rbx + 0x50]
mov rdx, r12
sub rdx, qword [rax]
movabs rax, 0x7b00000000000000
sar rdx, 3
lea ecx, [rdx + 2]
or rcx, rax
mov eax, edx
movabs rdx, 0x7d00000000000000
mov esi, dword [rsp + 0x20]
lea r14, [r8 + 8]
or rax, rdx
mov qword [r12], rcx
mov qword [r12 + 8], rax
lea rdi, [rbx + 0x50]
add r12, 0x10
mov qword [rsp + 0x50], r11
jmp 0x18002b864
cmp bl, 0x22
jne 0x18002c2f1
movdqa xmm3, xmmword [0x18003f6e0]
lea r9, [rsi + 1]
movdqa xmm4, xmmword [0x18003f710]
lea r8, [r15 + 4]
mov rdi, qword [rbp - 0x78]
mov rcx, r15
movdqa xmm0, xmm3
mov rax, qword [rdi]
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 0x18002c2ab
test r10d, r10d
je 0x18002c22a
mov eax, r10d
bsf rcx, rax
lea eax, [rcx + 1]
movsxd r10, eax
movzx eax, byte [r9 + r10]
cmp al, 0x75
jne 0x18002c204
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 0x18002c14f
movzx ecx, byte [r9]
movzx eax, byte [r9 + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0x5c75
jne 0x18002c2b9
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 0x18002c2b9
mov edx, r11d
shl edx, 0xa
or edx, r10d
add edx, 0x10000
add r9, 6
jmp 0x18002c160
lea eax, [rdx - 0xdc00]
cmp eax, 0x3ff
jbe 0x18002c2b9
cmp edx, 0x7f
ja 0x18002c170
mov byte [r8], dl
inc r8
jmp 0x18002c232
cmp edx, 0x7ff
ja 0x18002c195
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 0x18002c232
cmp edx, 0xffff
ja 0x18002c1c4
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 0x18002c232
cmp edx, 0x10ffff
ja 0x18002c2b9
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 0x18002c232
movzx edx, byte [rax + r13 + 0x3dea0]
test dl, dl
je 0x18002c2b9
movsxd rax, ecx
mov byte [rax + r8], dl
lea eax, [rcx + 2]
movsxd rcx, eax
add r9, rcx
add r8, r10
jmp 0x18002c232
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 0x18002c064
mov eax, edx
bsf rcx, rax
movsxd rcx, ecx
add rcx, r8
jne 0x18002c2cb
mov eax, 5
mov qword [rsp + 0x50], rdi
mov r11, rdi
jmp 0x18002c56e
mov eax, ecx
mov qword [rsp + 0x50], rdi
sub eax, r15d
mov r11, rdi
sub eax, 4
mov dword [r15], eax
lea r15, [rcx + 1]
mov qword [rsp + 0x60], r15
xor eax, eax
mov byte [rcx], 0
jmp 0x18002c56e
cmp bl, 0x3a
jb 0x18002c3c3
cmp bl, 0x66
je 0x18002c387
cmp bl, 0x6e
je 0x18002c34c
cmp bl, 0x74
jne case.0x18002a09f.35
movzx eax, byte [rsi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi]
xor eax, 0x65757274
or ecx, eax
je 0x18002c333
mov eax, 6
jmp 0x18002c56a
movabs rax, 0x7400000000000000
mov qword [r12], rax
add r12, 8
xor eax, eax
jmp 0x18002c56a
movzx eax, byte [rsi + 4]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi]
xor eax, 0x6c6c756e
or ecx, eax
je 0x18002c36e
mov eax, 8
jmp 0x18002c56a
movabs rax, 0x6e00000000000000
mov qword [r12], rax
add r12, 8
xor eax, eax
jmp 0x18002c56a
movzx eax, byte [rsi + 5]
movzx ecx, byte [rax + r13 + 0x39740]
mov eax, dword [rsi + 1]
xor eax, 0x65736c61
or ecx, eax
je 0x18002c3aa
mov eax, 7
jmp 0x18002c56a
movabs rax, 0x6600000000000000
mov qword [r12], rax
add r12, 8
xor eax, eax
jmp 0x18002c56a
xor edx, edx
cmp bl, 0x2d
sete dl
add rdx, rsi
mov r14, rdx
xor r8d, r8d
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x18002c3ed
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
jmp 0x18002c3d4
mov r9, rdx
sub r9, r14
je 0x18002c55c
cmp byte [r14], 0x30
jne 0x18002c409
cmp r9, 1
ja 0x18002c55c
xor r11d, r11d
xor r10b, r10b
cmp byte [rdx], 0x2e
jne 0x18002c4ca
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 0x18002c494
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 0x18002c4b0
movzx eax, al
lea rcx, [r8 + r8*4]
inc rdx
lea r8, [rax + rcx*2]
nop dword [rax + rax]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
jbe 0x18002c49d
sub r11, rdx
je 0x18002c55c
mov eax, edx
sub eax, r14d
movsxd r9, eax
movzx eax, byte [rdx]
sub al, 0x45
test al, 0xdf
je 0x18002c5d3
test r10b, r10b
jne 0x18002c650
xor eax, eax
cmp bl, 0x2d
setne al
add rax, 0x13
cmp r9, rax
jbe 0x18002c4f8
mov eax, 0xa
jmp 0x18002c561
jne 0x18002c589
cmp bl, 0x2d
jne 0x18002c548
movabs rax, 0x8000000000000000
cmp r8, rax
jbe 0x18002c519
mov eax, 0xa
jmp 0x18002c561
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 0x18002c561
cmp bl, 0x31
jne 0x18002c55c
movabs rax, 0x7fffffffffffffff
cmp r8, rax
ja 0x18002c598
mov eax, 9
mov r14, qword [rbp - 0x80]
mov r11, qword [rsp + 0x50]
mov rdi, qword [rbp - 0x78]
test eax, eax
jne 0x18002cab4
mov rbx, qword [rsp + 0x28]
mov r10, qword [rsp + 0x40]
mov esi, dword [rsp + 0x20]
jmp 0x18002b864
movabs rax, 0x7fffffffffffffff
cmp r8, rax
jbe 0x18002c5a4
movabs rax, 0x7500000000000000
jmp 0x18002c5b6
cmp bl, 0x2d
jne 0x18002c5ac
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 0x18002c55c
xor eax, eax
jmp 0x18002c561
movzx edi, byte [rdx + 1]
inc rdx
lea eax, [rdi - 0x2b]
test al, 0xfd
jne 0x18002c5e4
inc rdx
mov r10, rdx
xor ecx, ecx
nop dword [rax]
movzx eax, byte [rdx]
sub al, 0x30
cmp al, 9
ja 0x18002c609
movzx eax, al
lea rcx, [rcx + rcx*4]
inc rdx
lea rcx, [rax + rcx*2]
jmp 0x18002c5f0
cmp rdx, r10
je 0x18002c55c
lea rax, [r10 + 0x12]
cmp rdx, rax
jbe 0x18002c63f
cmp byte [r10], 0x30
jne 0x18002c62a
inc r10
cmp byte [r10], 0x30
je 0x18002c621
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 0x18002c6d9
mov rcx, r14
movzx eax, byte [rcx]
sub al, 0x2e
test al, 0xfd
jne 0x18002c673
inc rcx
jmp 0x18002c665
sub r9, rcx
add r9, r14
cmp r9, 0x13
jbe 0x18002c6d9
mov rcx, rsi
call fcn.1800151a0
comisd xmm0, xmm9
ja 0x18002c699
comisd xmm8, xmm0
ja 0x18002c699
mov dl, 1
jmp 0x18002c69b
xor dl, dl
movabs rax, 0x6400000000000000
movsd qword [rsp + 0x70], xmm0
mov qword [r12], rax
mov ecx, 9
mov rax, qword [rsp + 0x70]
mov qword [r12 + 8], rax
xor eax, eax
add r12, 0x10
test dl, dl
cmove eax, ecx
jne 0x18002c98a
mov r15, qword [rsp + 0x60]
jmp 0x18002c561
cmp r11, 0xfffffffffffffeaa
jl 0x18002c834
cmp r11, 0x134
jg 0x18002c94d
lea rax, [r11 + 0x16]
cmp rax, 0x2c
ja 0x18002c765
movabs rax, 0x1fffffffffffff
cmp r8, rax
ja 0x18002c765
xorps xmm0, xmm0
test r8, r8
js 0x18002c71b
cvtsi2sd xmm0, r8
jmp 0x18002c731
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 0x18002c74e
sub rax, rcx
divsd xmm0, qword [rax]
jmp 0x18002c753
mulsd xmm0, qword [rcx + rax]
cmp bl, 0x2d
jne 0x18002c968
xorps xmm0, xmm10
jmp 0x18002c968
test r8, r8
je 0x18002c834
imul r9, r11, 0x3526a
mov dword [rsp + 0x70], 0
sar r9, 0x10
add r9, 0x43f
bsr rax, r8
je 0x18002c799
mov r10d, 0x3f
sub r10d, eax
jmp 0x18002c79f
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 + 0x70], xmm0
cmp rdx, 0x1ff
jne 0x18002c7fb
inc ecx
mov rax, qword [r13 + rcx*8 + 0x3a9e0]
mul r8
add rdi, rdx
cmp rdx, rdi
mov rdx, qword [rsp + 0x78]
jbe 0x18002c805
inc rdx
jmp 0x18002c805
mov rdx, qword [rsp + 0x78]
mov rdi, qword [rsp + 0x70]
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 0x18002c89d
mov ecx, 1
sub rcx, r9
cmp rcx, 0x40
jl 0x18002c845
cmp bl, 0x2d
jne 0x18002c965
movaps xmm0, xmm6
jmp 0x18002c968
shr r8, cl
movabs rax, 0x10000000000000
xor ecx, ecx
mov rdx, r8
and edx, 1
add rdx, r8
movabs r8, 0x8000000000000000
shr rdx, 1
cmp rdx, rax
cmovae rcx, rax
xor eax, eax
cmp bl, 0x2d
cmove rax, r8
or rcx, rax
movabs rax, 0xffefffffffffffff
and rdx, rax
or rcx, rdx
mov qword [rsp + 0x70], rcx
movsd xmm0, qword [rsp + 0x70]
jmp 0x18002c968
cmp rdi, 1
ja 0x18002c8c6
lea rax, [r11 + 4]
cmp rax, 0x1b
ja 0x18002c8c6
movzx eax, r8b
and al, 3
cmp al, 1
jne 0x18002c8c6
mov rax, r8
shl rax, cl
cmp rax, rdx
jne 0x18002c8c6
and r8, 0xfffffffffffffffe
mov rcx, r8
movabs rax, 0x20000000000000
and ecx, 1
add rcx, r8
shr rcx, 1
cmp rcx, rax
jb 0x18002c8ee
movabs rcx, 0x10000000000000
inc r9
cmp r9, 0x7fe
jle 0x18002c91c
mov rcx, rsi
call fcn.1800151a0
comisd xmm0, xmm9
ja 0x18002c956
comisd xmm8, xmm0
jbe 0x18002c968
mov r15, qword [rsp + 0x60]
mov eax, 9
jmp 0x18002c561
xor eax, eax
mov edx, 0x800
cmp bl, 0x2d
cmove eax, edx
movabs rdx, 0xffefffffffffffff
or rax, r9
and rcx, rdx
shl rax, 0x34
or rax, rcx
mov qword [rsp + 0x70], rax
movsd xmm0, qword [rsp + 0x70]
jmp 0x18002c968
test r8, r8
je 0x18002c834
mov r15, qword [rsp + 0x60]
mov eax, 9
jmp 0x18002c561
movaps xmm0, xmm7
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
neg r15b
mov r15, qword [rsp + 0x60]
sbb eax, eax
and eax, 9
jmp 0x18002c561
mov eax, dword [r14]
mov rbx, qword [rsp + 0x28]
cmp byte [rax + r10], 0x5d
jne 0x18002ca88
mov rax, qword [rbx + 0x50]
lea r11, [rbx + 0x50]
mov rdx, r12
sub rdx, qword [rax]
movabs rax, 0x5b00000000000000
sar rdx, 3
lea ecx, [rdx + 2]
or rcx, rax
mov eax, edx
movabs rdx, 0x5d00000000000000
jmp 0x18002bf89
cmp cl, 0x7d
jne case.0x18002a09f.35
mov rax, qword [rbx + 0x30]
lea r11, [rbx + 0x50]
mov ecx, esi
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 [rbx + 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, 0x7b00000000000000
or rdx, rax
jmp 0x18002b840
movabs rdx, 0x5d00000000000000
movabs r11, 0x5b00000000000000
jmp 0x18002b7d7
mov rax, qword [rbx + 0x30]
mov r9d, 9
mov ecx, esi
movabs r8, 0x2200000000000000
inc dword [rax + rcx*8 + 4]
jmp 0x18002ac95
mov esi, dword [rsp + 0x20]
mov r9d, 9
movabs r8, 0x2200000000000000
jmp 0x18002ac4e
mov eax, 5
jmp 0x18002cab4
mov eax, 3
jmp 0x18002cab4
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