Function at 0x140021b30
Capabilities:
Terminate process

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rbp, rcx
mov rcx, qword [0x1400f8300]
mov rsi, r8
mov ebx, edx
call dbg.__emutls_get_address
movzx r8d, byte [rax]
mov rdi, rax
cmp bl, 0xb
ja 0x140021ee0
mov eax, 1
mov ecx, ebx
shl rax, cl
test eax, 0xa50
jne 0x140021c20
cmp bl, 2
jne 0x140021ee0
test sil, 3
jne 0x140021f38
movabs rax, 0x8f5c28f5c28f5c29
movabs rdx, 0x51eb851eb851eb8
imul rax, rsi
add rax, rdx
movabs rdx, 0x28f5c28f5c28f5c
ror rax, 2
cmp rdx, rax
jb 0x140021ef0
movabs rax, 0xa3d70a3d70a3d70b
imul rsi
mov rax, rsi
sar rax, 0x3f
add rdx, rsi
sar rdx, 8
sub rdx, rax
lea rax, [rdx + rdx*4]
mov rdx, rsi
lea rax, [rax + rax*4]
shl rax, 4
sub rdx, rax
test r8b, r8b
jne 0x140021c05
cmp rdx, 1
mov eax, 0x1c
adc rax, 0
cmp rbp, rax
jg 0x140021c2f
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov eax, 0x1e
test r8b, r8b
jne 0x140021c05
cmp rbp, rax
jle 0x140021c05
lea r12, [rsp + 0x40]
mov rdx, rsi
mov rcx, r12
call sym.dollar___systemZdollars_u8
cmp byte [rdi], 0
mov rsi, qword [rsp + 0x40]
mov r13, qword [rsp + 0x48]
jne 0x140021c05
movzx edx, bl
mov r8d, 2
mov rcx, r12
call sym.nsuIntToStr
mov rax, qword [rsp + 0x48]
cmp byte [rdi], 0
mov rbx, qword [rsp + 0x40]
mov qword [rsp + 0x28], rax
jne 0x140021c05
mov rdx, rbp
mov rcx, r12
call sym.dollar___systemZdollars_u8
mov rax, qword [rsp + 0x48]
cmp byte [rdi], 0
mov rbp, qword [rsp + 0x40]
mov qword [rsp + 0x30], rax
jne 0x140021c05
lea rax, [rbx + rsi]
mov rcx, r12
lea rdx, [rax + rbp + 0x52]
call sym.rawNewString
mov rax, qword [rsp + 0x40]
mov r14, qword [rsp + 0x48]
movabs rdx, 0x696e2e73656d6974
movabs rcx, 0x33202c373734286d
lea r15, [rax + r14 + 8]
mov r10, rax
mov qword [r15], rdx
add r10, 0x3c
movabs rdx, 0x68746e6f6d602029
mov qword [r15 + 8], rcx
movabs rcx, 0x67203d3c20796164
mov qword [r15 + 0x10], rdx
movabs rdx, 0x6e49737961447465
mov qword [r15 + 0x18], rcx
movabs rcx, 0x6f6d2868746e6f4d
mov qword [r15 + 0x28], rcx
movabs rcx, 0x20602972616579
mov qword [r15 + 0x20], rdx
movabs rdx, 0x202c68746e6f6d28
mov qword [r15 + 0x2d], rdx
mov qword [r15 + 0x35], rcx
jo 0x140021fe0
lea r15, [rax + r14 + 0x44]
test rsi, rsi
jle 0x140021d7c
mov rcx, rsi
add rcx, 1
jo 0x140022021
mov qword [rsp + 0x38], r10
test rcx, rcx
js 0x140021f50
mov r8, rcx
lea rdx, [r13 + 8]
mov rcx, r15
call sym.memcpy
mov r10, qword [rsp + 0x38]
add rsi, r10
jo 0x140022021
lea r15, [rsi + r14 + 8]
mov r10, rsi
mov rsi, r10
mov ecx, 0x2d
add rsi, 1
mov word [r15], cx
jo 0x140021fb0
lea r15, [r10 + r14 + 9]
test rbx, rbx
jle 0x140021dd7
mov rcx, rbx
add rcx, 1
jo 0x140022017
test rcx, rcx
js 0x140021f70
mov rax, qword [rsp + 0x28]
mov r8, rcx
mov rcx, r15
lea rdx, [rax + 8]
call sym.memcpy
add rbx, rsi
jo 0x140022017
lea r15, [rbx + r14 + 8]
mov rsi, rbx
mov rbx, rsi
mov edx, 0x2d
add rbx, 1
mov word [r15], dx
jo 0x140022000
lea r15, [rsi + r14 + 9]
test rbp, rbp
jle 0x140021e32
mov rcx, rbp
add rcx, 1
jo 0x14002200d
test rcx, rcx
js 0x140021f90
mov rax, qword [rsp + 0x30]
mov r8, rcx
mov rcx, r15
lea rdx, [rax + 8]
call sym.memcpy
add rbp, rbx
jo 0x14002200d
lea r15, [rbp + r14 + 8]
mov rbx, rbp
movabs rax, 0x20746f6e20736920
movabs rdx, 0x2064696c61762061
mov qword [r15], rax
movabs rax, 0x65746164206469
mov qword [r15 + 8], rdx
mov qword [r15 + 0xd], rax
mov rax, rbx
add rax, 0x14
jo 0x140021fd0
mov rcx, r12
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], r14
call sym.failedAssertImpl__stdZassertions_u310
cmp byte [rdi], 0
jne 0x140021c05
test r14, r14
je 0x140021e93
test byte [r14 + 7], 0x40
je 0x140021f28
mov rax, qword [rsp + 0x30]
test rax, rax
je 0x140021ea3
test byte [rax + 7], 0x40
je 0x140021f18
mov rax, qword [rsp + 0x28]
test rax, rax
je 0x140021eb3
test byte [rax + 7], 0x40
je 0x140021f08
test r13, r13
je 0x140021c05
test byte [r13 + 7], 0x40
jne 0x140021c05
mov rcx, r13
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp sym.deallocShared
mov eax, 0x1f
jmp 0x140021c25
test r8b, r8b
jne 0x140021c05
mov eax, 0x1d
jmp 0x140021c2a
mov rcx, rax
call sym.deallocShared
jmp 0x140021eb3
mov rcx, rax
call sym.deallocShared
jmp 0x140021ea3
mov rcx, r14
call sym.deallocShared
jmp 0x140021e93
test r8b, r8b
jne 0x140021c05
mov eax, 0x1c
jmp 0x140021c2a
movabs r8, 0x7fffffffffffffff
xor edx, edx
call sym.raiseRangeErrorI
mov r10, qword [rsp + 0x38]
jmp 0x140021d7c
movabs r8, 0x7fffffffffffffff
xor edx, edx
call sym.raiseRangeErrorI
jmp 0x140021dd7
movabs r8, 0x7fffffffffffffff
xor edx, edx
call sym.raiseRangeErrorI
jmp 0x140021e32
mov qword [rsp + 0x38], r10
call sym.raiseOverflow
test rbx, rbx
mov r10, qword [rsp + 0x38]
jle 0x140021ff4
mov rsi, r10
jmp 0x140021d9c
call sym.raiseOverflow
mov rax, rbx
jmp 0x140021e68
mov qword [rsp + 0x38], rax
call sym.raiseOverflow
mov r10, qword [rsp + 0x38]
jmp 0x140021d37
mov eax, 0x2d
mov rsi, r10
mov word [r15], ax
call sym.raiseOverflow
mov rbx, rsi
jmp 0x140021df2
call sym.raiseOverflow
jmp 0x140021e32
call sym.raiseOverflow
jmp 0x140021dd7
mov qword [rsp + 0x38], r10
call sym.raiseOverflow
mov r10, qword [rsp + 0x38]
jmp 0x140021d7c