Function at 0x1800dc650
Capabilities:
Hash data with crc32

Disassembly:
push rbx
push rbp
sub rsp, 0xa8
mov rax, qword [0x180152040]
xor rax, rsp
mov qword [rsp + 0x90], rax
mov r8, qword [0x180156ea0]
lea rbp, [rcx + 0x74]
mov edx, dword [rcx + 8]
mov rbx, rcx
lea rcx, str.ID:_0x_08X__ActiveID:_0x_08X
mov r8d, dword [r8 + 0x3f38]
call fcn.1800d1420
mov ecx, dword [rbx + 8]
call fcn.1800bec50
mov eax, dword [rbx + 0x5c]
lea rcx, str.CurLenW:__d__CurLenA:__d__Cursor:__d__Selection:__d.._d
mov r9d, dword [rbx + 0x54]
mov r8d, dword [rbx + 0x10]
mov edx, dword [rbx + 0xc]
mov dword [rsp + 0x28], eax
mov eax, dword [rbx + 0x58]
mov dword [rsp + 0x20], eax
call fcn.1800d1420
movss xmm2, dword [rbx + 0x70]
lea rcx, str.has_preferred_x:__d___.2f_
movzx edx, byte [rbx + 0x6a]
cvtps2pd xmm2, xmm2
movq r8, xmm2
call fcn.1800d1420
mov eax, dword [rbp + 0xe08]
lea rcx, str.undo_point:__d__redo_point:__d__undo_char_point:__d__redo_char_point:__d
movsx r8d, word [rbp + 0xe00]
movsx edx, word [rbp + 0xdfe]
mov r9d, dword [rbp + 0xe04]
mov dword [rsp + 0x20], eax
call fcn.1800d1420
mov rcx, qword [0x180156ea0]
lea rdx, [0x180131921]
mov dword [rsp + 0x44], 0
lea r11, [0x18011cfb0]
mov r8b, 0x75
mov rax, qword [rcx + 0x3ed8]
movss xmm1, dword [rcx + 0x3c10]
mulss xmm1, dword [0x180132738]
mov byte [rax + 0xb8], 1
mov r10, qword [rcx + 0x3ed8]
movss dword [rsp + 0x48], xmm1
movsxd rcx, dword [r10 + 0xf0]
mov rax, qword [r10 + 0xf8]
mov r9d, dword [rax + rcx*4 - 4]
not r9d
mov ebx, r9d
nop word [rax + rax]
cmp r8b, 0x23
jne 0x1800dc783
cmp byte [rdx], r8b
jne 0x1800dc783
cmp byte [rdx + 1], r8b
cmove ebx, r9d
movzx ecx, bl
movzx eax, r8b
movzx r8d, byte [rdx]
xor rcx, rax
shr ebx, 8
inc rdx
xor ebx, dword [r11 + rcx*4]
test r8b, r8b
jne 0x1800dc770
mov rax, qword [r10]
not ebx
cmp dword [rax + 0x3f20], ebx
jne 0x1800dc7c0
lea r8, str.undopoints
mov edx, 0xb
mov ecx, ebx
call fcn.1800beef0
mov r9b, 1
mov dword [rsp + 0x20], 0
lea r8, [rsp + 0x44]
mov edx, ebx
lea rcx, str.undopoints
call fcn.1800a6ca0
test al, al
je 0x1800dca52
mov rbx, qword [0x180156ea0]
lea rdx, [rsp + 0x44]
mov qword [rsp + 0xc8], rsi
mov qword [rsp + 0xd0], rdi
mov qword [rsp + 0xa0], r15
movss xmm1, dword [rbx + 0x3814]
lea rcx, [rbx + 0x4838]
movss xmm0, dword [rbx + 0x3818]
movss dword [rsp + 0x48], xmm1
movss dword [rsp + 0x4c], xmm0
mov dword [rsp + 0x44], 0xe
call fcn.1800bffc0
xor esi, esi
mov qword [rbx + 0x3814], 0
mov rdi, rbp
lea r15d, [rsi + 0x72]
nop
movsx eax, word [rbp + 0xdfe]
cmp esi, eax
jge 0x1800dc85f
mov bl, 0x75
jmp 0x1800dc878
movsx eax, word [rbp + 0xe00]
mov ebx, 0x20
cmp esi, eax
cmovge ebx, r15d
jge 0x1800dc878
call fcn.1800ac610
xor eax, eax
mov byte [rsp + 0x50], 0
mov qword [rsp + 0x81], rax
xorps xmm0, xmm0
mov dword [rsp + 0x89], eax
mov word [rsp + 0x8d], ax
mov byte [rsp + 0x8f], al
movups xmmword [rsp + 0x51], xmm0
movups xmmword [rsp + 0x61], xmm0
movups xmmword [rsp + 0x71], xmm0
cmp bl, 0x20
je 0x1800dc998
movsxd rax, dword [rdi + 0xc]
cmp eax, 0xffffffff
je 0x1800dc998
mov rcx, rax
lea r9, [rbp + 0x630]
movsxd rax, dword [rdi + 4]
lea r8, [rbp + 0x630]
add rax, rcx
lea rdx, [rsp + 0x50]
lea r8, [r8 + rcx*2]
lea r9, [r9 + rax*2]
nop word [rax + rax]
test r9, r9
je 0x1800dc8fe
cmp r8, r9
jae 0x1800dc995
movzx eax, word [r8]
test ax, ax
je 0x1800dc995
add r8, 2
mov ecx, eax
cmp eax, 0x80
jae 0x1800dc921
mov byte [rdx], cl
mov eax, 1
jmp 0x1800dc981
lea rax, [rsp + 0x8f]
sub eax, edx
cmp ecx, 0x800
jae 0x1800dc955
cmp eax, 2
jge 0x1800dc93c
xor eax, eax
jmp 0x1800dc981
mov eax, ecx
and cl, 0x3f
shr eax, 6
sub al, 0x40
add cl, 0x80
mov byte [rdx], al
mov byte [rdx + 1], cl
mov eax, 2
jmp 0x1800dc981
cmp eax, 3
jge 0x1800dc95e
xor eax, eax
jmp 0x1800dc981
mov eax, ecx
shr eax, 0xc
sub al, 0x20
mov byte [rdx], al
mov eax, ecx
shr eax, 6
and cl, 0x3f
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [rdx + 1], al
mov byte [rdx + 2], cl
mov eax, 3
add rdx, rax
lea rax, [rsp + 0x8f]
cmp rdx, rax
jb 0x1800dc8f0
mov byte [rdx], 0
mov r9d, dword [rdi]
lea rax, [rsp + 0x50]
mov qword [rsp + 0x38], rax
lea rcx, str._c___02d__where__03d__insert__03d__delete__03d__char_storage__03d___s_
mov eax, dword [rdi + 0xc]
mov r8d, esi
mov dword [rsp + 0x30], eax
mov eax, dword [rdi + 8]
mov dword [rsp + 0x28], eax
mov eax, dword [rdi + 4]
movzx edx, bl
mov dword [rsp + 0x20], eax
call fcn.1800d1420
cmp bl, 0x20
jne 0x1800dca21
mov rdx, qword [0x180156ea0]
mov eax, dword [rdx + 0x4758]
movsxd rcx, dword [rdx + 0x4868]
dec word [rdx + 0x5bc0]
shr eax, 2
test al, 1
lea eax, [rcx - 1]
mov dword [rdx + 0x4868], eax
mov rax, qword [rdx + 0x4870]
mov r8d, dword [rax + rcx*4 - 8]
mov dword [rdx + 0x4758], r8d
je 0x1800dca21
test r8b, 4
jne 0x1800dca21
mov eax, dword [rdx + 0x5bbc]
mov dword [rdx + 0x37c8], eax
inc esi
add rdi, 0x10
cmp esi, 0x63
jl 0x1800dc850
mov r15, qword [rsp + 0xa0]
mov ecx, 1
mov rdi, qword [rsp + 0xd0]
mov rsi, qword [rsp + 0xc8]
call fcn.1800a01a0
call fcn.1800a6fc0
mov rcx, qword [rsp + 0x90]
xor rcx, rsp
call fcn.1800ec4b0
add rsp, 0xa8
pop rbp
pop rbx
ret