Function at 0x14004ef51
Capabilities:
Encrypt data using speck

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x188
mov rax, qword [rsp + 0x1f8]
mov edi, dword [rsp + 0x218]
mov rbx, qword [rsp + 0x1f0]
mov rsi, qword [rsp + 0x200]
mov r12, qword [rsp + 0x208]
mov dword [rsp + 0xd8], edi
mov rdi, qword [rax]
mov r15, rdx
mov r13, r8
mov qword [rsp + 0x1d0], rcx
mov qword [rsp + 0x60], rdi
mov rdi, qword [rax + 8]
mov rax, qword [rax + 0x10]
mov qword [rsp + 0x1e8], r9
mov qword [rsp + 0xb0], rdi
mov qword [rsp + 0xb8], rax
cmp qword [rsp + 0x210], r12
jle 0x14004efde
lea rcx, [0x140160040]
call sym.failedAssertImpl__systemZassertions_56
mov dword [rsp + 0x13c], 0
or r8, 0xffffffffffffffff
test rbx, rbx
je 0x14004eff9
mov rax, qword [rbx]
lea r8, [rax - 1]
lea rcx, [rsp + 0x120]
xor edx, edx
call sym.dotdot___pureZunicode_840_3
mov dword [rsp + 0x6c], 0xffffffff
mov rax, qword [rsp + 0x128]
cmp r12, qword [rsp + 0x120]
jl 0x14004f036
cmp r12, rax
jg 0x14004f036
mov rdx, r12
mov rcx, rbx
call sym.runeAt__pureZunicode_95
mov dword [rsp + 0x6c], eax
mov rax, qword [rsp + 0x1d0]
lea rcx, [rsp + 0x158]
mov rdx, r12
lea r8, [r12 - 1]
mov word [rsp + 0x150], 0
mov rax, qword [rax]
mov word [rax + 0x10], 0
mov rax, qword [rsp + 0x1e8]
mov eax, dword [rax]
mov dword [rsp + 0x154], eax
call sym.dotdot___pureZunicode_840_3
movaps xmm1, xmmword [rsp + 0x150]
mov rax, qword [rsp + 0x160]
lea rdx, [rsp + 0x100]
mov rcx, qword [rsp + 0x1d0]
mov qword [rsp + 0x110], rax
movaps xmmword [rsp + 0x100], xmm1
call sym.add__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_851
cmp r12, qword [rsp + 0x210]
jle 0x14004faf6
test r12, r12
jg 0x14005050b
lea rcx, [0x140160000]
call sym.failedAssertImpl__systemZassertions_56
test rbx, rbx
je 0x14004f0e5
cmp r12, qword [rbx]
jle 0x14004f0e5
lea rcx, [0x14015ffc0]
call sym.failedAssertImpl__systemZassertions_56
lea rdi, [r12 - 1]
mov al, byte [rbx + rdi + 0x10]
test rdi, rdi
jle 0x14004f0fd
mov edx, eax
shr dl, 6
cmp dl, 2
je 0x14004f10a
movsx ebp, al
test al, al
jns 0x14004f29b
jmp 0x14004f10f
dec rdi
jmp 0x14004f0ea
mov edx, eax
shr dl, 5
cmp dl, 6
je 0x14004f125
mov edx, eax
shr dl, 4
cmp dl, 0xe
jne 0x14004f14f
jmp 0x14004f15b
mov rcx, qword [rbx]
mov ebp, 0xfffd
lea rdx, [rcx - 2]
cmp rdi, rdx
jg 0x14004f29b
mov bpl, byte [rbx + rdi + 0x11]
shl eax, 6
and eax, 0x7c0
and ebp, 0x3f
jmp 0x14004f299
mov edx, eax
shr dl, 3
cmp dl, 0x1e
jne 0x14004f197
jmp 0x14004f1a3
mov rcx, qword [rbx]
mov ebp, 0xfffd
lea rdx, [rcx - 3]
cmp rdi, rdx
jg 0x14004f29b
mov bpl, byte [rbx + rdi + 0x12]
movzx edx, byte [rbx + rdi + 0x11]
shl eax, 0xc
and eax, 0xf000
and ebp, 0x3f
shl edx, 6
or ebp, eax
and edx, 0xfc0
or ebp, edx
jmp 0x14004f29b
mov edx, eax
shr dl, 2
cmp dl, 0x3e
jne 0x14004f1e3
jmp 0x14004f1f5
mov rcx, qword [rbx]
mov ebp, 0xfffd
lea rdx, [rcx - 4]
cmp rdi, rdx
jg 0x14004f29b
mov bpl, byte [rbx + rdi + 0x13]
shl eax, 0x12
and eax, 0x1c0000
and ebp, 0x3f
or ebp, eax
movzx eax, byte [rbx + rdi + 0x11]
shl eax, 0xc
and eax, 0x3f000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x12]
jmp 0x14004f291
mov edx, eax
movzx ebp, al
shr dl, 1
cmp dl, 0x7e
jne 0x14004f29b
jmp 0x14004f241
mov rcx, qword [rbx]
mov ebp, 0xfffd
lea rdx, [rcx - 5]
cmp rdi, rdx
jg 0x14004f29b
mov bpl, byte [rbx + rdi + 0x14]
shl eax, 0x18
and eax, 0x3000000
and ebp, 0x3f
or ebp, eax
movzx eax, byte [rbx + rdi + 0x11]
shl eax, 0x12
and eax, 0xfc0000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x12]
shl eax, 0xc
and eax, 0x3f000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x13]
jmp 0x14004f291
mov rcx, qword [rbx]
mov ebp, 0xfffd
lea rdx, [rcx - 6]
cmp rdi, rdx
jg 0x14004f29b
mov bpl, byte [rbx + rdi + 0x15]
shl eax, 0x1e
and ebp, 0x3f
or ebp, eax
movzx eax, byte [rbx + rdi + 0x11]
shl eax, 0x18
and eax, 0x3f000000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x12]
shl eax, 0x12
and eax, 0xfc0000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x13]
shl eax, 0xc
and eax, 0x3f000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x14]
shl eax, 6
and eax, 0xfc0
or ebp, eax
mov rax, qword [r15]
lea rcx, [rsp + 0x140]
mov edx, 0x10
mov word [rax + 0x10], 0
call sym.nimZeroMem_8
mov rax, qword [rsp + 0x1d0]
mov qword [rsp + 0x78], 0
mov rax, qword [rax]
movsx rax, word [rax + 0x10]
mov qword [rsp + 0xc0], rax
mov rax, qword [rsp + 0x1d0]
mov rcx, qword [rsp + 0xc0]
mov rdx, qword [rax]
cmp qword [rsp + 0x78], rcx
jge 0x14004fa80
imul rax, qword [rsp + 0x78], 0x18
add rax, qword [rdx]
mov ecx, dword [rax + 0x14]
movsx r8d, word [rax + 0x10]
mov dword [rsp + 0x94], ecx
mov rcx, qword [rax + 0x20]
movsx rdx, r8w
mov r9d, r8d
mov rax, qword [rax + 0x18]
mov qword [rsp + 0x88], rcx
mov qword [rsp + 0x140], rax
mov rax, rdx
shl rax, 7
add rax, qword [rsp + 0x60]
mov qword [rsp + 0x148], rcx
cmp byte [rax + 0x10], 0x2d
je 0x14004f361
mov rax, qword [rax + 0x18]
mov qword [rsp + 0x80], rax
test rax, rax
jne 0x14004f3d0
inc qword [rsp + 0x78]
jmp 0x14004f2d7
mov rcx, qword [r15]
mov edx, r8d
call sym.hasState__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_847
test al, al
jne 0x14004fa80
mov eax, dword [rsp + 0x94]
movaps xmm2, xmmword [rsp + 0x140]
mov rcx, r15
mov word [rsp + 0x168], r9w
lea rdx, [rsp + 0x100]
mov dword [rsp + 0x16c], eax
movups xmmword [rsp + 0x170], xmm2
movups xmm3, xmmword [rsp + 0x168]
mov rax, qword [rsp + 0x178]
movaps xmmword [rsp + 0x100], xmm3
mov qword [rsp + 0x110], rax
call sym.add__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_851
jmp 0x14004fa80
mov rax, qword [rsp + 0x80]
mov qword [rsp + 0x70], 0
mov rax, qword [rax]
mov qword [rsp + 0xc8], rax
lea rax, [rdx + 2]
mov qword [rsp + 0xd0], rax
mov rcx, qword [r15]
mov rdx, qword [rsp + 0xc8]
cmp qword [rsp + 0x70], rdx
jge 0x14004f357
mov rdx, qword [rsp + 0x70]
mov rax, qword [rsp + 0x80]
movsx r14d, word [rax + rdx*2 + 0x10]
mov word [rsp + 0x92], r14w
mov edx, r14d
call sym.hasState__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_847
test al, al
jne 0x14004fa76
movsx rax, word [rsp + 0x92]
mov rcx, qword [rsp + 0x60]
mov edx, ebp
shl rax, 7
lea rcx, [rcx + rax + 0x10]
call sym.match__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnodematch_129
test al, al
jne 0x14004f474
mov rax, qword [rsp + 0x60]
movsxd r14, r14d
shl r14, 7
cmp byte [rax + r14 + 0x10], 0x2d
jne 0x14004fa76
mov rcx, qword [rsp + 0xd0]
mov rax, qword [rsp + 0xb0]
mov rax, qword [rax + rcx*8]
mov rcx, qword [rsp + 0x70]
movsx rax, word [rax + rcx*2 + 0x10]
cmp ax, 0xffff
je 0x14004f4c7
mov rdx, qword [rsp + 0xb8]
mov ecx, dword [rsp + 0x94]
mov r14, qword [rdx + rax*8 + 0x10]
mov dword [rsp + 0x13c], ecx
test r14, r14
jne 0x14004f512
mov qword [rsp + 0xa8], 0
jmp 0x14004f51d
mov ax, word [rsp + 0x92]
mov r8, qword [rsp + 0x88]
lea rcx, [rsp + 0x170]
mov rdx, r12
mov word [rsp + 0x168], ax
mov eax, dword [rsp + 0x94]
mov dword [rsp + 0x16c], eax
call sym.dotdot___pureZunicode_840_3
movups xmm4, xmmword [rsp + 0x168]
movaps xmmword [rsp + 0x100], xmm4
jmp 0x14004fa56
mov rax, qword [r14]
mov qword [rsp + 0xa8], rax
mov qword [rsp + 0xa0], 0
add r14, 0x10
mov r8b, 1
mov rcx, qword [rsp + 0xa8]
cmp qword [rsp + 0xa0], rcx
jge 0x14004fa0b
test r8b, r8b
je 0x14004fa76
mov cl, byte [r14]
cmp cl, 0x1d
ja 0x14004f614
cmp cl, 0x1b
ja 0x14004f621
cmp cl, 4
ja 0x14004f608
cmp cl, 2
jbe 0x14004f9de
lea rcx, [rsp + 0x168]
mov edx, 0x18
mov byte [rsp + 0x98], r8b
call sym.nimZeroMem_8
mov eax, dword [rsp + 0x13c]
mov rdx, qword [0x140179500]
mov qword [rsp + 0x170], r12
mov rcx, qword [r13]
mov dword [rsp + 0x168], eax
mov eax, dword [r14 + 0x14]
mov word [rsp + 0x178], ax
call sym.incrSeqV3
mov rcx, r13
mov rdx, rax
call sym.unsureAsgnRef
mov rax, qword [r13]
movups xmm5, xmmword [rsp + 0x168]
mov rcx, qword [rax]
lea rdx, [rcx + 1]
imul rcx, rcx, 0x18
mov qword [rax], rdx
dec edx
mov dword [rsp + 0x13c], edx
add rax, rcx
mov rcx, qword [rsp + 0x178]
movups xmmword [rax + 0x10], xmm5
mov qword [rax + 0x20], rcx
jmp 0x14004f9f2
lea eax, [rcx - 0xa]
cmp al, 7
jbe 0x14004f621
jmp 0x14004f9de
sub ecx, 0x28
cmp cl, 3
jbe 0x14004f635
jmp 0x14004f9de
mov r8d, dword [rsp + 0x6c]
mov edx, ebp
call sym.match__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnodematch_49.isra.0
mov r8d, eax
jmp 0x14004f9fa
cmp byte [r14 + 0x78], 1
sbb eax, eax
and eax, 0xffffffc0
add eax, 0x50
mov byte [rsp + 0xdf], al
lea rax, [rsi + 0x20]
mov rcx, rax
mov qword [rsp + 0x98], rax
call sym.grow__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_940
mov rcx, qword [r14 + 0x58]
xor edx, edx
mov al, byte [rsp + 0xdf]
test rcx, rcx
je 0x14004f672
mov rdx, qword [rcx]
mov rcx, qword [rsi + 0x28]
mov byte [rsp + 0xdf], al
shl rcx, 4
add rcx, qword [rsi + 0x20]
call sym.setLen__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_909
mov dl, byte [r14]
movzx eax, byte [rsp + 0xdf]
cmp dl, 0x2a
je 0x14004f771
ja 0x14004f6b3
cmp dl, 0x28
je 0x14004f6c1
cmp dl, 0x29
je 0x14004f825
jmp 0x14004f9b0
cmp dl, 0x2b
je 0x14004f8ec
jmp 0x14004f9b0
mov r9, qword [rsi + 0x28]
mov rcx, qword [rsi + 0x20]
mov r8, qword [rsi + 8]
movups xmm0, xmmword [r14 + 0x58]
shl r9, 4
mov r10, qword [rsi]
lea rdx, [rcx + r9 + 8]
add rcx, r9
test r8, r8
movaps xmmword [rsp + 0xe0], xmm0
je 0x14004f72f
mov r9, qword [r14 + 0x68]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x48], r8
mov r8, r13
mov qword [rsp + 0xf0], r9
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
jmp 0x14004f769
mov r8, qword [r14 + 0x68]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0xe0]
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x38], r12
mov qword [rsp + 0xf0], r8
mov r8, r13
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
mov r8d, eax
jmp 0x14004f9bf
mov r9, qword [rsi + 0x28]
mov rcx, qword [rsi + 0x20]
mov r8, qword [rsi + 8]
movups xmm0, xmmword [r14 + 0x58]
shl r9, 4
mov r10, qword [rsi]
lea rdx, [rcx + r9 + 8]
add rcx, r9
test r8, r8
movaps xmmword [rsp + 0xe0], xmm0
je 0x14004f7df
mov r9, qword [r14 + 0x68]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x48], r8
mov r8, r13
mov qword [rsp + 0xf0], r9
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
jmp 0x14004f819
mov r8, qword [r14 + 0x68]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0xe0]
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x38], r12
mov qword [rsp + 0xf0], r8
mov r8, r13
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
mov r8d, eax
xor r8d, 1
jmp 0x14004f9bf
mov r9, qword [rsi + 0x28]
mov rcx, qword [rsi + 0x20]
mov r8, qword [rsi + 0x18]
movups xmm0, xmmword [r14 + 0x58]
shl r9, 4
mov r10, qword [rsi + 0x10]
lea rdx, [rcx + r9 + 8]
add rcx, r9
test r8, r8
movaps xmmword [rsp + 0xe0], xmm0
je 0x14004f89d
mov r9, qword [r14 + 0x68]
mov dword [rsp + 0x48], eax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x50], r8
mov r8, r13
mov qword [rsp + 0xf0], r9
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
jmp 0x14004f8e0
mov r8, qword [r14 + 0x68]
mov dword [rsp + 0x48], eax
lea rax, [rsp + 0xe0]
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0xf0], r8
mov r8, r13
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
inc rax
setne r8b
jmp 0x14004f9bf
mov r9, qword [rsi + 0x28]
mov rcx, qword [rsi + 0x20]
mov r8, qword [rsi + 0x18]
movups xmm0, xmmword [r14 + 0x58]
shl r9, 4
mov r10, qword [rsi + 0x10]
lea rdx, [rcx + r9 + 8]
add rcx, r9
test r8, r8
movaps xmmword [rsp + 0xe0], xmm0
je 0x14004f964
mov r9, qword [r14 + 0x68]
mov dword [rsp + 0x48], eax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x50], r8
mov r8, r13
mov qword [rsp + 0xf0], r9
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
jmp 0x14004f9a7
mov r8, qword [r14 + 0x68]
mov dword [rsp + 0x48], eax
lea rax, [rsp + 0xe0]
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0xf0], r8
mov r8, r13
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
inc rax
sete r8b
jmp 0x14004f9bf
lea rcx, [0x140160100]
call sym.failedAssertImpl__systemZassertions_56
xor r8d, r8d
mov rcx, qword [rsp + 0x98]
mov byte [rsp + 0xdf], r8b
call sym.removeLast__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_965
mov r8b, byte [rsp + 0xdf]
jmp 0x14004f9fa
lea rcx, [0x140160080]
mov byte [rsp + 0x98], r8b
call sym.failedAssertImpl__systemZassertions_56
mov r8b, byte [rsp + 0x98]
inc qword [rsp + 0xa0]
sub r14, 0xffffffffffffff80
jmp 0x14004f530
test r8b, r8b
je 0x14004fa76
mov ax, word [rsp + 0x92]
mov r8, qword [rsp + 0x88]
lea rcx, [rsp + 0x170]
mov rdx, r12
mov word [rsp + 0x168], ax
mov eax, dword [rsp + 0x13c]
mov dword [rsp + 0x16c], eax
call sym.dotdot___pureZunicode_840_3
movups xmm1, xmmword [rsp + 0x168]
movaps xmmword [rsp + 0x100], xmm1
mov rax, qword [rsp + 0x178]
lea rdx, [rsp + 0x100]
mov rcx, r15
mov qword [rsp + 0x110], rax
call sym.add__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_851
inc qword [rsp + 0x70]
jmp 0x14004f3f8
mov rax, qword [rsp + 0x1d0]
mov rdx, qword [r15]
mov r14, qword [rax]
mov rcx, rax
call sym.unsureAsgnRef
mov rcx, r15
mov rdx, r14
call sym.unsureAsgnRef
mov rax, qword [rsp + 0x1d0]
mov rdx, qword [rax]
cmp word [rdx + 0x10], 0
je 0x140050505
lea rcx, [rsp + 0x168]
call sym.X5BX5D___OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_840.constprop.0
mov rdx, qword [rsp + 0x60]
movsx rax, word [rsp + 0x168]
shl rax, 7
cmp byte [rdx + rax + 0x10], 0x2d
je 0x14004fae9
mov dword [rsp + 0x6c], ebp
mov r12, rdi
jmp 0x14004f0ac
test rdi, rdi
jg 0x14004fb03
or ebp, 0xffffffff
jmp 0x14004fcc1
test r12, r12
jle 0x14004faee
mov rdi, r12
test rbx, rbx
je 0x14004fb08
cmp rdi, qword [rbx]
jle 0x14004fb14
lea rcx, [0x14015ffc0]
call sym.failedAssertImpl__systemZassertions_56
dec rdi
mov al, byte [rbx + rdi + 0x10]
test rdi, rdi
je 0x14004fb2a
mov edx, eax
shr dl, 6
cmp dl, 2
je 0x14004fb14
movsx ebp, al
test al, al
jns 0x14004fcc1
mov edx, eax
shr dl, 5
cmp dl, 6
je 0x14004fb4b
mov edx, eax
shr dl, 4
cmp dl, 0xe
jne 0x14004fb75
jmp 0x14004fb81
mov rcx, qword [rbx]
mov ebp, 0xfffd
lea rdx, [rcx - 2]
cmp rdi, rdx
jg 0x14004fcc1
mov bpl, byte [rbx + rdi + 0x11]
shl eax, 6
and eax, 0x7c0
and ebp, 0x3f
jmp 0x14004fcbf
mov edx, eax
shr dl, 3
cmp dl, 0x1e
jne 0x14004fbbd
jmp 0x14004fbc9
mov rdx, qword [rbx]
mov ebp, 0xfffd
sub rdx, 3
cmp rdi, rdx
jg 0x14004fcc1
mov bpl, byte [rbx + rdi + 0x12]
movzx edx, byte [rbx + rdi + 0x11]
shl eax, 0xc
and eax, 0xf000
and ebp, 0x3f
shl edx, 6
or ebp, eax
and edx, 0xfc0
or ebp, edx
jmp 0x14004fcc1
mov edx, eax
shr dl, 2
cmp dl, 0x3e
jne 0x14004fc09
jmp 0x14004fc1b
mov rcx, qword [rbx]
mov ebp, 0xfffd
lea rdx, [rcx - 4]
cmp rdi, rdx
jg 0x14004fcc1
mov bpl, byte [rbx + rdi + 0x13]
shl eax, 0x12
and eax, 0x1c0000
and ebp, 0x3f
or ebp, eax
movzx eax, byte [rbx + rdi + 0x11]
shl eax, 0xc
and eax, 0x3f000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x12]
jmp 0x14004fcb7
mov edx, eax
movzx ebp, al
shr dl, 1
cmp dl, 0x7e
jne 0x14004fcc1
jmp 0x14004fc67
mov rdx, qword [rbx]
mov ebp, 0xfffd
sub rdx, 5
cmp rdi, rdx
jg 0x14004fcc1
mov bpl, byte [rbx + rdi + 0x14]
shl eax, 0x18
and eax, 0x3000000
and ebp, 0x3f
or ebp, eax
movzx eax, byte [rbx + rdi + 0x11]
shl eax, 0x12
and eax, 0xfc0000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x12]
shl eax, 0xc
and eax, 0x3f000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x13]
jmp 0x14004fcb7
mov rcx, qword [rbx]
mov ebp, 0xfffd
lea rdx, [rcx - 6]
cmp rdi, rdx
jg 0x14004fcc1
mov bpl, byte [rbx + rdi + 0x15]
shl eax, 0x1e
and ebp, 0x3f
or ebp, eax
movzx eax, byte [rbx + rdi + 0x11]
shl eax, 0x18
and eax, 0x3f000000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x12]
shl eax, 0x12
and eax, 0xfc0000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x13]
shl eax, 0xc
and eax, 0x3f000
or ebp, eax
movzx eax, byte [rbx + rdi + 0x14]
shl eax, 6
and eax, 0xfc0
or ebp, eax
mov rax, qword [r15]
lea rcx, [rsp + 0x140]
mov edx, 0x10
mov word [rax + 0x10], 0
call sym.nimZeroMem_8
mov rax, qword [rsp + 0x1d0]
mov qword [rsp + 0x78], 0
mov rax, qword [rax]
movsx rax, word [rax + 0x10]
mov qword [rsp + 0xc8], rax
mov rax, qword [rsp + 0x1d0]
mov rdi, qword [rsp + 0xc8]
mov rdx, qword [rax]
cmp qword [rsp + 0x78], rdi
jge 0x140050468
imul rax, qword [rsp + 0x78], 0x18
add rax, qword [rdx]
mov edi, dword [rax + 0x14]
movsx r8d, word [rax + 0x10]
mov dword [rsp + 0x94], edi
mov rdi, qword [rax + 0x20]
movsx rdx, r8w
mov r9d, r8d
mov rax, qword [rax + 0x18]
mov qword [rsp + 0x80], rdi
mov qword [rsp + 0x140], rax
mov rax, rdx
shl rax, 7
add rax, qword [rsp + 0x60]
mov qword [rsp + 0x148], rdi
cmp byte [rax + 0x10], 0x2d
je 0x14004fd87
mov rax, qword [rax + 0x18]
mov qword [rsp + 0x88], rax
test rax, rax
jne 0x14004fdf6
inc qword [rsp + 0x78]
jmp 0x14004fcfd
mov rcx, qword [r15]
mov edx, r8d
call sym.hasState__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_847
test al, al
jne 0x140050468
mov eax, dword [rsp + 0x94]
movaps xmm2, xmmword [rsp + 0x140]
mov rcx, r15
mov word [rsp + 0x168], r9w
lea rdx, [rsp + 0x100]
mov dword [rsp + 0x16c], eax
movups xmmword [rsp + 0x170], xmm2
movups xmm3, xmmword [rsp + 0x168]
mov rax, qword [rsp + 0x178]
movaps xmmword [rsp + 0x100], xmm3
mov qword [rsp + 0x110], rax
call sym.add__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_851
jmp 0x140050468
mov rax, qword [rsp + 0x88]
mov qword [rsp + 0x70], 0
mov rax, qword [rax]
mov qword [rsp + 0xc0], rax
lea rax, [rdx + 2]
mov qword [rsp + 0xd0], rax
mov rcx, qword [r15]
mov rdi, qword [rsp + 0xc0]
cmp qword [rsp + 0x70], rdi
jge 0x14004fd7d
mov rax, qword [rsp + 0x88]
mov rdi, qword [rsp + 0x70]
movsx edi, word [rax + rdi*2 + 0x10]
mov edx, edi
mov word [rsp + 0x92], di
call sym.hasState__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_847
test al, al
jne 0x14005045e
movsx rax, word [rsp + 0x92]
mov rdx, qword [rsp + 0x60]
shl rax, 7
lea rcx, [rdx + rax + 0x10]
mov edx, ebp
call sym.match__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnodematch_129
test al, al
jne 0x14004fe96
mov rax, qword [rsp + 0x60]
movsxd rdi, edi
shl rdi, 7
cmp byte [rax + rdi + 0x10], 0x2d
jne 0x14005045e
mov rdi, qword [rsp + 0xd0]
mov rax, qword [rsp + 0xb0]
mov rax, qword [rax + rdi*8]
mov rdi, qword [rsp + 0x70]
movsx rax, word [rax + rdi*2 + 0x10]
cmp ax, 0xffff
je 0x14004fee9
mov edi, dword [rsp + 0x94]
mov dword [rsp + 0x13c], edi
mov rdi, qword [rsp + 0xb8]
mov rdi, qword [rdi + rax*8 + 0x10]
test rdi, rdi
jne 0x14004ff34
mov qword [rsp + 0xa8], 0
jmp 0x14004ff3f
mov ax, word [rsp + 0x92]
mov r8, qword [rsp + 0x80]
lea rcx, [rsp + 0x170]
mov rdx, r12
mov word [rsp + 0x168], ax
mov eax, dword [rsp + 0x94]
mov dword [rsp + 0x16c], eax
call sym.dotdot___pureZunicode_840_3
movups xmm4, xmmword [rsp + 0x168]
movaps xmmword [rsp + 0x100], xmm4
jmp 0x14005043e
mov rax, qword [rdi]
mov qword [rsp + 0xa8], rax
mov qword [rsp + 0xa0], 0
add rdi, 0x10
mov r14b, 1
mov rcx, qword [rsp + 0xa8]
cmp qword [rsp + 0xa0], rcx
jge 0x1400503f3
test r14b, r14b
je 0x14005045e
mov cl, byte [rdi]
cmp cl, 0x1d
ja 0x14005002c
cmp cl, 0x1b
ja 0x140050039
cmp cl, 4
ja 0x140050020
cmp cl, 2
jbe 0x1400503d6
lea rcx, [rsp + 0x168]
mov edx, 0x18
call sym.nimZeroMem_8
mov eax, dword [rsp + 0x13c]
mov rdx, qword [0x140179500]
mov qword [rsp + 0x170], r12
mov rcx, qword [r13]
mov dword [rsp + 0x168], eax
mov eax, dword [rdi + 0x14]
mov word [rsp + 0x178], ax
call sym.incrSeqV3
mov rcx, r13
mov rdx, rax
call sym.unsureAsgnRef
mov rax, qword [r13]
movups xmm5, xmmword [rsp + 0x168]
mov rcx, qword [rax]
lea rdx, [rcx + 1]
imul rcx, rcx, 0x18
mov qword [rax], rdx
dec edx
mov dword [rsp + 0x13c], edx
add rax, rcx
mov rcx, qword [rsp + 0x178]
movups xmmword [rax + 0x10], xmm5
mov qword [rax + 0x20], rcx
jmp 0x1400503e2
lea eax, [rcx - 0xa]
cmp al, 7
jbe 0x140050039
jmp 0x1400503d6
sub ecx, 0x28
cmp cl, 3
jbe 0x14005004d
jmp 0x1400503d6
mov r8d, dword [rsp + 0x6c]
mov edx, ebp
call sym.match__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnodematch_49.isra.0
mov r14d, eax
jmp 0x1400503e2
lea rax, [rsi + 0x20]
cmp byte [rdi + 0x78], 1
mov rcx, rax
sbb r14d, r14d
mov qword [rsp + 0x98], rax
call sym.grow__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_940
mov rcx, qword [rdi + 0x58]
and r14d, 0xffffffc0
xor edx, edx
add r14d, 0x50
test rcx, rcx
je 0x14005007e
mov rdx, qword [rcx]
mov rcx, qword [rsi + 0x28]
shl rcx, 4
add rcx, qword [rsi + 0x20]
call sym.setLen__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_909
mov dl, byte [rdi]
cmp dl, 0x2a
je 0x140050170
ja 0x1400500af
cmp dl, 0x28
je 0x1400500bd
cmp dl, 0x29
je 0x140050227
jmp 0x1400503b8
cmp dl, 0x2b
je 0x1400502f1
jmp 0x1400503b8
mov r9, qword [rsi + 0x28]
mov rcx, qword [rsi + 0x20]
movzx eax, r14b
mov r8, qword [rsi + 8]
movups xmm0, xmmword [rdi + 0x58]
shl r9, 4
mov r10, qword [rsi]
lea rdx, [rcx + r9 + 8]
add rcx, r9
test r8, r8
movaps xmmword [rsp + 0xe0], xmm0
je 0x14005012e
mov r9, qword [rdi + 0x68]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x48], r8
mov r8, r13
mov qword [rsp + 0xf0], r9
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
jmp 0x140050168
mov r8, qword [rdi + 0x68]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0xe0]
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x38], r12
mov qword [rsp + 0xf0], r8
mov r8, r13
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
mov r14d, eax
jmp 0x1400503c7
mov r9, qword [rsi + 0x28]
mov rcx, qword [rsi + 0x20]
movzx eax, r14b
mov r8, qword [rsi + 8]
movups xmm0, xmmword [rdi + 0x58]
shl r9, 4
mov r10, qword [rsi]
lea rdx, [rcx + r9 + 8]
add rcx, r9
test r8, r8
movaps xmmword [rsp + 0xe0], xmm0
je 0x1400501e1
mov r9, qword [rdi + 0x68]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x48], r8
mov r8, r13
mov qword [rsp + 0xf0], r9
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
jmp 0x14005021b
mov r8, qword [rdi + 0x68]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0xe0]
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x38], r12
mov qword [rsp + 0xf0], r8
mov r8, r13
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
mov r14d, eax
xor r14d, 1
jmp 0x1400503c7
mov r9, qword [rsi + 0x28]
mov rcx, qword [rsi + 0x20]
movzx eax, r14b
mov r8, qword [rsi + 0x18]
movups xmm0, xmmword [rdi + 0x58]
shl r9, 4
mov r10, qword [rsi + 0x10]
lea rdx, [rcx + r9 + 8]
add rcx, r9
test r8, r8
movaps xmmword [rsp + 0xe0], xmm0
je 0x1400502a2
mov r9, qword [rdi + 0x68]
mov dword [rsp + 0x48], eax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x50], r8
mov r8, r13
mov qword [rsp + 0xf0], r9
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
jmp 0x1400502e5
mov r8, qword [rdi + 0x68]
mov dword [rsp + 0x48], eax
lea rax, [rsp + 0xe0]
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0xf0], r8
mov r8, r13
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
inc rax
setne r14b
jmp 0x1400503c7
mov r9, qword [rsi + 0x28]
mov rcx, qword [rsi + 0x20]
movzx eax, r14b
mov r8, qword [rsi + 0x18]
movups xmm0, xmmword [rdi + 0x58]
shl r9, 4
mov r10, qword [rsi + 0x10]
lea rdx, [rcx + r9 + 8]
add rcx, r9
test r8, r8
movaps xmmword [rsp + 0xe0], xmm0
je 0x14005036c
mov r9, qword [rdi + 0x68]
mov dword [rsp + 0x48], eax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x50], r8
mov r8, r13
mov qword [rsp + 0xf0], r9
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
jmp 0x1400503af
mov r8, qword [rdi + 0x68]
mov dword [rsp + 0x48], eax
lea rax, [rsp + 0xe0]
lea r9, [rsp + 0x13c]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0xf0], r8
mov r8, r13
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call r10
inc rax
sete r14b
jmp 0x1400503c7
lea rcx, [0x140160100]
xor r14d, r14d
call sym.failedAssertImpl__systemZassertions_56
mov rcx, qword [rsp + 0x98]
call sym.removeLast__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_965
jmp 0x1400503e2
lea rcx, [0x140160080]
call sym.failedAssertImpl__systemZassertions_56
inc qword [rsp + 0xa0]
sub rdi, 0xffffffffffffff80
jmp 0x14004ff52
test r14b, r14b
je 0x14005045e
mov ax, word [rsp + 0x92]
mov r8, qword [rsp + 0x80]
lea rcx, [rsp + 0x170]
mov rdx, r12
mov word [rsp + 0x168], ax
mov eax, dword [rsp + 0x13c]
mov dword [rsp + 0x16c], eax
call sym.dotdot___pureZunicode_840_3
movups xmm1, xmmword [rsp + 0x168]
movaps xmmword [rsp + 0x100], xmm1
mov rax, qword [rsp + 0x178]
lea rdx, [rsp + 0x100]
mov rcx, r15
mov qword [rsp + 0x110], rax
call sym.add__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_851
inc qword [rsp + 0x70]
jmp 0x14004fe1e
mov rax, qword [rsp + 0x1d0]
mov rdx, qword [r15]
mov r12, qword [rax]
mov rcx, rax
call sym.unsureAsgnRef
mov rcx, r15
mov rdx, r12
call sym.unsureAsgnRef
lea rcx, [rsp + 0x168]
mov edx, 0x10
call sym.nimZeroMem_8
mov rax, qword [rsp + 0x1d0]
xor ecx, ecx
mov r8, qword [rax]
movsx r9, word [r8 + 0x10]
cmp rcx, r9
jge 0x140050505
imul rax, rcx, 0x18
add rax, qword [r8]
mov rsi, qword [rsp + 0x60]
mov edx, dword [rax + 0x14]
mov r12, qword [rax + 0x18]
movsx rax, word [rax + 0x10]
shl rax, 7
cmp byte [rsi + rax + 0x10], 0x2d
je 0x1400504da
inc rcx
jmp 0x1400504ad
test byte [rsp + 0xd8], 0x40
je 0x1400504f9
mov rax, qword [rsp + 0x1e8]
mov rcx, r13
mov r8d, dword [rax]
call sym.reverse__OOZOOZOOZOnimbleZpkgsZregex4548O4957O48ZregexZnfatype_175
mov edx, eax
mov rax, qword [rsp + 0x1e8]
mov dword [rax], edx
jmp 0x140050519
or r12, 0xffffffffffffffff
jmp 0x140050519
test rbx, rbx
jne 0x14004f0d4
jmp 0x14004f0d9
mov rax, r12
add rsp, 0x188
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret