Function at 0x140179600
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r14
push r15
mov rbp, rsp
sub rsp, 0x60
mov rax, qword [0x1404af540]
xor rax, rsp
mov qword [rbp - 0x10], rax
mov r14, rcx
mov qword [rbp - 0x38], rcx
xor ebx, ebx
mov dword [rbp - 0x40], ebx
xorps xmm0, xmm0
movups xmmword [rbp - 0x30], xmm0
mov qword [rbp - 0x20], rbx
mov qword [rbp - 0x18], 7
mov word [rbp - 0x30], bx
cmp edx, 0xfffffe0c
jg 0x140179684
je 0x140179673
cmp edx, 0x80000000
jne case.0x1401798b5.219
lea r9, str.UCERR_UNKNOWN
mov edx, Ordinal_16
jmp 0x140179a08
lea r9, str.UCERR_CHANNEL_DATA_ABNORMAL
mov edx, Ordinal_29
jmp 0x140179a08
cmp edx, 0xffffff1a
jg 0x140179887
je 0x140179876
add edx, 0x1ea
cmp edx, 0xfa
ja case.0x1401798b5.219
movsxd rax, edx
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x179c24]
mov ecx, dword [rdx + rax*4 + 0x179bb8]
add rcx, rdx
jmp rcx
lea r9, str.UCERR_OUT_OF_AD_GAIN_RANGE
jmp 0x140179a03
lea r9, str.UCERR_OUT_OF_DIR_RANGE
mov edx, Ordinal_23
jmp 0x140179a08
lea r9, str.UCERR_CANNOT_CHANGE_AD_SPEED_IN_SHT
mov edx, Ordinal_39
jmp 0x140179a08
lea r9, str.UCERR_CLEAR_ZERO_OFFSET_FAILED
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_OUT_OF_RELY_RANGE
mov edx, reloc.SinoSPE.dll_Ordinal_23
jmp 0x140179a08
lea r9, str.UCERR_MACHINE_TYPE_MISMATCH
mov edx, Ordinal_29
jmp 0x140179a08
lea r9, str.UCERR_CANNOT_CALI_DIR_WHILE_ZERO
mov edx, reloc.SinoSPE.dll_Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_DIR_SIGN_NOT_SAVED_WHILE_READ_ERROR
mov edx, Ordinal_44
jmp 0x140179a08
lea r9, str.UCERR_DIR_SIGN_NOT_SAVED_WHILE_WRITE_ERROR
mov edx, Ordinal_44
jmp 0x140179a08
lea r9, str.UCERR_BD_FAILED_WHILE_SENSOR_OVERFLOW
mov edx, Ordinal_40
jmp 0x140179a08
lea r9, str.UCERR_BD_FAILED_WHILE_OUT_OF_FULLRANGE
mov edx, Ordinal_40
jmp 0x140179a08
lea r9, str.UCERR_BD_USE_TARE_WHILE_CALI_ZERO
mov edx, 0x21
jmp 0x140179a08
lea r9, str.UCERR_BD_COUNT_NOT_LESS_THAN_TWO
mov edx, reloc.SinoSPE.dll_Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_BD_COUNT_MUST_BE_TWO_DIGITAL
mov edx, 0x22
jmp 0x140179a08
lea r9, str.UCERR_BD_SET_BDDATA_FAILED
jmp 0x140179a03
lea r9, str.UCERR_BD_SET_CORRECTION_FAILED
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_LOAD_SELF_VERIFY_ERROR
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_EXTN_SELF_VERIFY_ERROR
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_EXT1_SELF_VERIFY_ERROR
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_EXT2_SELF_VERIFY_ERROR
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_EXT3_SELF_VERIFY_ERROR
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_EXT4_SELF_VERIFY_ERROR
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_EXT5_SELF_VERIFY_ERROR
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_EXT6_SELF_VERIFY_ERROR
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_INVALID_PARAMETER
mov edx, reloc.SinoSPE.dll_Ordinal_23
jmp 0x140179a08
lea r9, str.UCERR_NO_SENSOR_LOADED
mov edx, Ordinal_23
jmp 0x140179a08
lea r9, str.UCERR_OUT_OF_AD_SPEED_RANGE
mov edx, Ordinal_29
jmp 0x140179a08
add edx, 0xdc
cmp edx, 0xfa
ja case.0x1401798b5.219
movsxd rax, edx
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x179d7c]
mov ecx, dword [rdx + rax*4 + 0x179d20]
add rcx, rdx
jmp rcx
lea r9, str.UCERR_AD_GAIN_CHANGE_RESTART
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_NO_NEED_OPERATION
mov edx, reloc.SinoSPE.dll_Ordinal_23
jmp 0x140179a08
lea r9, str.UCERR_ALREADY_OPENED
mov edx, Ordinal_23
jmp 0x140179a08
lea r9, str.UCERR_NO_AVAILABLE_CONTROLLER
mov edx, reloc.SinoSPE.dll_Ordinal_29
jmp 0x140179a08
lea r9, str.UCERR_TOO_MUCH_CONTROLLER
mov edx, reloc.SinoSPE.dll_Ordinal_25
jmp 0x140179a08
lea r9, str.UCERR_CONNECT_FAILED
mov edx, Ordinal_23
jmp 0x140179a08
lea r9, str.UCERR_CONTROLLER_NOT_OPENED
mov edx, Ordinal_29
jmp 0x140179a08
lea r9, str.UCERR_CONTROLLER_INIT_FAILED
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_CONTROLLER_INIT_NOT_FINISHED
mov edx, 0x22
jmp 0x140179a08
lea r9, str.UCERR_CONTROLLER_PARAM_PRE_READ_FAILED
mov edx, Ordinal_40
jmp 0x140179a08
lea r9, str.UCERR_NO_DATA_CALLBACK_FUNC
mov edx, Ordinal_29
jmp 0x140179a08
lea r9, str.UCERR_SEND_CMD_FAILED
mov edx, reloc.SinoSPE.dll_Ordinal_21
jmp 0x140179a08
lea r9, str.UCERR_NOT_ALLOW_ENTER_TEST
jmp 0x140179a03
lea r9, str.UCERR_SPEED_ZERO_NOT_END_TIME
mov edx, reloc.SinoSPE.dll_Ordinal_29
jmp 0x140179a08
lea r9, str.UCERR_TIME_END_MUST_SPECIFY_DIR
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_SYS_PARAM_OUT_OF_RANGE
mov edx, Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_CAN_NOT_SET_SYS_IN_RUNNING
mov edx, reloc.SinoSPE.dll_Ordinal_32
jmp 0x140179a08
lea r9, str.UCERR_READ_SYS_PARAM_TIME_OUT
mov edx, reloc.SinoSPE.dll_Ordinal_29
jmp 0x140179a08
lea r9, str.UCERR_STOP_RUN_FIRST
mov edx, Ordinal_23
jmp 0x140179a08
lea r9, str.UCERR_ENTER_TEST_FIRST
mov edx, Ordinal_23
jmp 0x140179a08
lea r9, str.UCERR_CMD_FORBIDDEN
mov edx, reloc.WS2_32.dll_send
jmp 0x140179a08
lea r9, str.UCERR_OUT_OF_CHANNEL_RANGE
mov edx, reloc.OLEAUT32.dll_SafeArrayCopy
lea rcx, [rbp - 0x30]
call fcn.140004f70
call fcn.1401d56e0
mov r15, rax
xorps xmm0, xmm0
movups xmmword [r14], xmm0
mov qword [r14 + 0x10], rbx
mov qword [r14 + 0x18], rbx
xor r8d, r8d
lea rdx, [0x140419d94]
mov rcx, r14
call fcn.140006340
nop
mov dword [rbp - 0x40], 4
mov rdi, qword [rbp - 0x20]
mov r10, qword [rbp - 0x30]
mov r11, qword [rbp - 0x18]
test rdi, rdi
je 0x140179b40
lea r8, [rbp - 0x30]
cmp r11, 7
cmova r8, r10
movabs rdx, 0xcbf29ce484222325
mov rcx, rbx
lea r9, [rdi + rdi]
test r9, r9
je 0x140179aa4
movabs rsi, 0x100000001b3
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [r8 + rcx]
xor rdx, rax
imul rdx, rsi
inc rcx
cmp rcx, r9
jb 0x140179a90
mov rcx, qword [r15 + 0x38]
and rcx, rdx
add rcx, rcx
mov rax, qword [r15 + 0x20]
mov r9, qword [rax + rcx*8 + 8]
cmp r9, qword [r15 + 0x10]
je 0x140179b08
mov rsi, qword [rax + rcx*8]
lea rcx, [r9 + 0x10]
cmp qword [r9 + 0x28], 7
jbe 0x140179ad0
mov rcx, qword [r9 + 0x10]
lea r8, [rbp - 0x30]
cmp r11, 7
cmova r8, r10
cmp rdi, qword [r9 + 0x20]
jne 0x140179b76
mov rdx, rdi
test rdi, rdi
je 0x140179b05
sub r8, rcx
movzx eax, word [rcx]
cmp word [r8 + rcx], ax
jne 0x140179b76
add rcx, 2
sub rdx, 1
jne 0x140179af1
mov rbx, r9
test rbx, rbx
cmove rbx, qword [r15 + 0x10]
cmp rbx, qword [r15 + 0x10]
je 0x140179b40
lea r8, [rbx + 0x30]
cmp r14, r8
je 0x140179b40
mov rdx, r8
cmp qword [r8 + 0x18], 7
jbe 0x140179b2c
mov rdx, qword [r8]
mov r8, qword [r8 + 0x10]
mov rcx, r14
call fcn.1400050d0
mov r11, qword [rbp - 0x18]
mov r10, qword [rbp - 0x30]
cmp r11, 7
jbe 0x140179b8c
lea rdx, [r11*2 + 2]
mov rax, r10
cmp rdx, 0x1000
jb 0x140179b84
add rdx, 0x27
mov r10, qword [r10 - 8]
sub rax, r10
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140179b84
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
cmp r9, rsi
je 0x140179b08
mov r9, qword [r9 + 8]
jmp 0x140179ac1
mov rcx, r10
call fcn.1403ca488
mov rax, r14
mov rcx, qword [rbp - 0x10]
xor rcx, rsp
call fcn.1403ca460
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rdi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop rbp
ret