Function at 0x140051ac0
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], r9
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0xa0
mov rsi, r9
mov r13d, r8d
mov r14d, edx
mov rbx, rcx
mov edi, 0x42574821
lea rcx, [rbp - 9]
call sub.mfc140u.dll_CEnumArray::CEnumArray
nop
lea rcx, [rbp - 0x41]
call qword [sym.imp.mfc140u.dll_Ordinal_296]
nop
lea rcx, [rbp - 0x29]
call sub.mfc140u.dll_CDrawingManager::CDrawingManager
lea rax, vtable.CFileException.0
mov qword [rbp - 0x29], rax
lea rcx, [rbp - 0x11]
call qword [sym.imp.mfc140u.dll_Ordinal_296]
nop
mov dword [rbp - 0x19], 0
mov dword [rbp - 0x15], 0xffffffff
xor edx, edx
lea rcx, [rbp - 0x11]
call qword [sym.imp.mfc140u.dll_CMFCControlRendererInfo::CMFCControlRendererInfo]
nop
lea rcx, [rbp + 0x5f]
call qword [sym.imp.mfc140u.dll_Ordinal_296]
nop
xor r12d, r12d
movzx r8d, word [rbx + 0x180]
mov dword [rsp + 0x20], r14d
lea r9, str.QNN:_Receiving_file___u_bytes
lea edx, [r12 + 5]
mov rcx, qword [0x1401776d0]
call fcn.1400a5ff0
test r13d, r13d
je 0x140051ce2
mov r15d, dword [rbp + 0x7f]
mov edx, r15d
mov rcx, qword [0x1401776e0]
call fcn.14006b610
test eax, eax
jne 0x140051bbc
movzx r8d, word [rbx + 0x180]
mov dword [rsp + 0x20], r15d
lea r9, str.QNN:_Receiving_Unknown_Binary_File_Type___d___aborting_with_NAK
lea edx, [rax + 2]
mov rcx, qword [0x1401776d0]
call fcn.1400a5ff0
jmp 0x140051c7f
mov r9, rsi
mov r8d, r15d
lea rdx, [rbp - 0x39]
mov rcx, qword [0x1401776e0]
call fcn.14006ba60
nop
mov rdx, rax
lea rcx, [rbp - 0x41]
call qword [sym.imp.mfc140u.dll_Ordinal_1501]
nop
lea rcx, [rbp - 0x39]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
xor esi, esi
nop dword [rax]
inc esi
lea r9, [rbp - 0x29]
mov r8d, 0x1042
mov rdx, qword [rbp - 0x41]
lea rcx, [rbp - 9]
call sub.mfc140u.dll_COleControl::OnSysKeyDown
test eax, eax
jne 0x140051ca0
lea rdx, [rbp - 0x29]
lea rcx, [rbp - 0x39]
call fcn.14009d470
nop
movzx r8d, word [rbx + 0x180]
xor edx, edx
cmp esi, 0xa
setl dl
inc edx
mov rcx, qword [rbp - 0x41]
mov qword [rsp + 0x38], rcx
mov dword [rsp + 0x30], esi
mov rax, qword [rax]
mov qword [rsp + 0x28], rax
mov eax, dword [rbp - 0x19]
mov dword [rsp + 0x20], eax
lea r9, str.QNN::ReceiveFile:_Error__d____s____retry:_d_10__creating_file__s____NAK_
mov rcx, qword [0x1401776d0]
call fcn.1400a5ff0
nop
lea rcx, [rbp - 0x39]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
mov ecx, 0x3e8
call qword [sym.imp.KERNEL32.dll_Sleep]
cmp esi, 0xa
jl 0x140051bf0
mov rax, qword [rbx]
xor r8d, r8d
lea rdx, [0x1401147b0]
mov rcx, rbx
call qword [rax + 0xa0]
mov r15d, 0xffffffff
jmp 0x1400520f1
mov edx, r15d
mov rcx, qword [0x1401776e0]
call fcn.140063d20
movzx r8d, word [rbx + 0x180]
mov rcx, qword [rbp - 0x41]
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], rax
lea r9, str.QNN:_Receiving_binary_file__type_s__bytes_u__outfile_s_
mov edx, 5
mov rcx, qword [0x1401776d0]
call fcn.1400a5ff0
mov rax, qword [rbx]
mov edx, 5
mov rcx, rbx
call qword [rax + 0xf8]
test r14d, r14d
je 0x1400520ee
mov r15d, 1
lea rsi, [0x140171b70]
nop dword [rax]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x60]
test eax, eax
jne 0x1400520ee
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SetErrorInfo]
test eax, eax
je 0x1400520ee
mov rax, qword [rbx]
mov r8d, r14d
mov ecx, 0x2000
cmp r14d, ecx
cmova r8d, ecx
mov r9d, 0xea60
mov rdx, qword [rbx + 0x188]
mov rcx, rbx
call qword [rax + 0x98]
mov dword [rbp + 0x6f], eax
test eax, eax
jle 0x140052144
movsxd rcx, eax
mov rax, qword [rbx + 0x188]
mov byte [rcx + rax], 0
mov r8d, dword [rbp + 0x6f]
cmp r8d, r14d
jbe 0x140051da8
movzx r8d, word [rbx + 0x180]
lea r9, str.QNN:_Error__received_more_bytes_than_expected_for_file
mov edx, 2
mov rcx, qword [0x1401776d0]
call fcn.1400a5ff0
xor r14d, r14d
mov r8d, dword [rbp + 0x6f]
jmp 0x140051dab
sub r14d, r8d
mov rax, qword [rbx + 0x178]
cmp dword [rax + 0x294], 0
je 0x140051e07
lea rcx, [rbx + 0xbf8]
mov r9d, r15d
lea r8, [rbp + 0x6f]
mov rdx, qword [rbx + 0x188]
call fcn.14009a310
test eax, eax
jne 0x140051e03
movzx r8d, word [rbx + 0x180]
mov rax, qword [rbx + 0xc10]
mov qword [rsp + 0x20], rax
lea r9, str.QNN::ReceiveFile_Decrypt___s
mov edx, r15d
mov rcx, qword [0x1401776d0]
call fcn.1400a5ff0
mov r8d, dword [rbp + 0x6f]
test r8d, r8d
jle 0x140051e3b
mov rdx, qword [rbx + 0x188]
mov r9d, r8d
nop word [rax + rax]
movzx ecx, byte [rdx]
mov eax, edi
xor rcx, rax
movzx eax, cl
shr edi, 8
xor edi, dword [rsi + rax*4]
lea rdx, [rdx + 1]
sub r9, 1
jne 0x140051e20
inc r12d
test r14d, r14d
je 0x140051f1d
test r13d, r13d
je 0x140051e61
mov rdx, qword [rbx + 0x188]
lea rcx, [rbp - 9]
call sub.mfc140u.dll_CMFCToolBarsCustomizeDialog::ShowToolBar
jmp 0x140051d10
lea rdx, str.UTF_8
lea rcx, [rbx + 0xc28]
call qword [sym.imp.mfc140u.dll_Ordinal_2903]
test eax, eax
jne 0x140051ea8
mov r9d, 0xfde9
mov r8d, dword [rbp + 0x6f]
mov rdx, qword [rbx + 0x188]
lea rcx, [rbp - 0x39]
call fcn.14009acc0
nop
mov rdx, rax
lea rcx, [rbp + 0x5f]
call qword [sym.imp.mfc140u.dll_Ordinal_1501]
nop
lea rcx, [rbp - 0x39]
jmp 0x140051ef2
lea rdx, str.UTF_16LE
lea rcx, [rbx + 0xc28]
call qword [sym.imp.mfc140u.dll_Ordinal_2903]
mov rcx, qword [rbx + 0x188]
test eax, eax
jne 0x140051f09
mov eax, dword [rbp + 0x6f]
cdq
sub eax, edx
sar eax, 1
mov r8d, eax
mov rdx, rcx
lea rcx, [rbp - 0x31]
call qword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__11]
nop
mov rdx, rax
lea rcx, [rbp + 0x5f]
call qword [sym.imp.mfc140u.dll_Ordinal_1501]
nop
lea rcx, [rbp - 0x31]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
lea rdx, [rbp + 0x5f]
mov rcx, rbx
call fcn.14004d130
jmp 0x140051d02
mov r8d, dword [rbp + 0x6f]
mov rdx, rcx
mov rcx, rbx
call fcn.14004d170
jmp 0x140051d02
cmp dword [rbx + 0xc30], 0
je 0x140051f8f
mov eax, dword [rbx + 0xc20]
test eax, eax
je 0x140051f8f
cmp edi, eax
je 0x140051f8f
mov rcx, qword [rbx + 0xf8]
mov rax, qword [rcx]
xor edx, edx
call qword [rax + 0xb0]
movzx r8d, word [rbx + 0x180]
mov eax, dword [rbx + 0xc20]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edi
lea r9, str.QNN:_Incorrect_CRC__asking_for_resend.__calculated:_x__sent:_x_
mov edx, 2
mov rcx, qword [0x1401776d0]
call fcn.1400a5ff0
mov rax, qword [rbx]
xor r8d, r8d
lea rdx, str.RTX
mov rcx, rbx
call qword [rax + 0xa0]
jmp 0x1400520f1
test r13d, r13d
je 0x140051fa9
mov rdx, qword [rbx + 0x188]
lea rcx, [rbp - 9]
call sub.mfc140u.dll_CMFCToolBarsCustomizeDialog::ShowToolBar
jmp 0x140052059
lea rdx, str.UTF_8
lea rcx, [rbx + 0xc28]
call qword [sym.imp.mfc140u.dll_Ordinal_2903]
test eax, eax
jne 0x140051fec
mov r9d, 0xfde9
mov r8d, dword [rbp + 0x6f]
mov rdx, qword [rbx + 0x188]
lea rcx, [rbp - 0x31]
call fcn.14009acc0
nop
mov rdx, rax
lea rcx, [rbp + 0x5f]
call qword [sym.imp.mfc140u.dll_Ordinal_1501]
nop
jmp 0x140052032
lea rdx, str.UTF_16LE
lea rcx, [rbx + 0xc28]
call qword [sym.imp.mfc140u.dll_Ordinal_2903]
mov rcx, qword [rbx + 0x188]
test eax, eax
jne 0x14005204a
mov eax, dword [rbp + 0x6f]
cdq
sub eax, edx
sar eax, 1
mov r8d, eax
mov rdx, rcx
lea rcx, [rbp - 0x31]
call qword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__11]
nop
mov rdx, rax
lea rcx, [rbp + 0x5f]
call qword [sym.imp.mfc140u.dll_Ordinal_1501]
nop
lea rcx, [rbp - 0x31]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
lea rdx, [rbp + 0x5f]
mov rcx, rbx
call fcn.14004d130
jmp 0x140052059
mov r8d, dword [rbp + 0x6f]
mov rdx, rcx
mov rcx, rbx
call fcn.14004d170
mov rcx, qword [rbx + 0xf8]
mov rax, qword [rcx]
call qword [rax + ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>]
movzx r8d, word [rbx + 0x180]
mov rax, qword [rbx + 0x178]
mov dword [rsp + 0x20], r12d
mov edx, 5
mov rcx, qword [0x1401776d0]
cmp dword [rax + 0x294], 0
lea r9, str.QNN:__d_block_s__recv__file_decrypted__sending_file_received_ACK_to_peer
jne 0x1400520a0
lea r9, str.QNN:__d_block_s__recv__sending_ACK_to_peer
call fcn.1400a5ff0
mov rax, qword [rbx]
xor r8d, r8d
lea rdx, str.ACK
mov rcx, rbx
call qword [rax + 0xa0]
test r13d, r13d
je 0x1400520ee
mov rax, qword [rbx]
mov r9d, dword [rbp + 0x7f]
mov r8, qword [rbp + 0x77]
lea rdx, [rbp - 9]
mov rcx, rbx
call qword [rax + 0x280]
lea rcx, [rbp - 9]
call fcn.14009b9b0
test eax, eax
je 0x1400520ee
lea rcx, [rbp - 9]
call sub.mfc140u.dll_CWinAppEx::CleanState
xor r15d, r15d
lea rcx, [rbp + 0x5f]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
lea rax, vtable.CFileException.0
mov qword [rbp - 0x29], rax
lea rcx, [rbp - 0x11]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
lea rcx, [rbp - 0x41]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
lea rcx, [rbp - 9]
call sub.mfc140u.dll_CDockingManager::CDockingManager
mov eax, r15d
mov rbx, qword [rsp + 0xe8]
add rsp, 0xa0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
movzx r8d, word [rbx + 0x180]
lea r9, str.QNN:_Error__received_timeout_or_error_during_file_receive
mov edx, 2
mov rcx, qword [0x1401776d0]
call fcn.1400a5ff0
mov r15d, 0xffffffff
jmp 0x1400520f1