Function at 0x140025900
Capabilities:
Set registry value

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
sub rsp, 0x40
mov rsi, qword [rcx + 0x20]
xor eax, eax
movzx ebp, r8b
test rsi, rsi
movzx ebx, dl
mov rdi, rcx
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x60], eax
jne 0x140025948
lea rcx, str.Failed_to_get_filter_class_from_inf_file__n
call fcn.1400154e0
mov eax, 0x80070490
mov rbx, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x30]
call fcn.1400251d0
test eax, eax
je 0x140025976
jle 0x140025be6
movzx eax, ax
or eax, 0x80070000
mov rbx, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret
test bl, bl
mov rdx, rsi
je 0x140025ae3
lea rax, [0x14006b9d8]
lea r8, str.high
test bpl, bpl
lea rcx, str.Adding_filter_class__ls_at__s_altitude_n
cmovne r8, rax
call fcn.1400154e0
mov rbx, qword [rsp + 0x30]
xor r9d, r9d
mov r8, rsi
mov rcx, rdi
mov rdx, rbx
call fcn.1400250b0
cmp eax, 0xffffffff
je 0x140025a80
test bpl, bpl
mov rdx, rbx
mov rcx, rdi
sete r8b
call fcn.140025420
test al, al
jne 0x140025a5d
lea rcx, str.Filter_class_has_already_been_added__but_at_the_wrong_altitude__will_delete_it._n
call fcn.1400154e0
xor r8d, r8d
xor edx, edx
mov rcx, rdi
call fcn.140025900
mov rcx, rbx
mov dword [rsp + 0x78], eax
call fcn.14004ca6c
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x30]
call fcn.1400251d0
test eax, eax
jne 0x14002595b
cmp dword [rsp + 0x78], eax
mov rbx, qword [rsp + 0x30]
je 0x140025a80
xor r9d, r9d
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
call fcn.1400250b0
cmp eax, 0xffffffff
je 0x140025a80
lea rcx, str.Failed_to_delete_filter_class_residing_at_the_wrong_altitude__n
call fcn.1400154e0
mov rcx, rbx
call fcn.14004ca6c
mov eax, dword [rsp + 0x78]
mov rbx, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret
lea rcx, str.Filter_has_already_been_added__n
call fcn.1400154e0
mov rcx, rbx
call fcn.14004ca6c
xor eax, eax
mov rbx, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret
lea rax, [rsp + 0x30]
test bpl, bpl
lea r9, [rsp + 0x78]
mov rdx, rbx
mov rcx, rdi
sete r8b
mov qword [rsp + 0x20], rax
call fcn.140025320
mov r11d, dword [rsp + 0x78]
mov eax, dword [rsp + 0x30]
cmp r11d, eax
je 0x140025abe
test bpl, bpl
je 0x140025aba
lea r11d, [rax - 1]
jmp 0x140025abe
add r11d, 1
mov r9d, dword [rsp + 0x60]
mov dword [rsp + 0x28], r11d
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
shr r9d, 1
mov dword [rsp + 0x20], 0x10000
call fcn.1400255e0
jmp 0x140025b48
lea rcx, str.Deleting_filter_class__ls_n
call fcn.1400154e0
mov rbx, qword [rsp + 0x30]
xor r9d, r9d
mov r8, rsi
mov rcx, rdi
mov rdx, rbx
call fcn.1400250b0
cmp eax, 0xffffffff
mov r9d, eax
jne 0x140025b30
lea rcx, str.Filter_has_already_been_deleted___n
call fcn.1400154e0
mov rcx, rbx
call fcn.14004ca6c
xor eax, eax
mov rbx, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret
mov eax, dword [rsp + 0x60]
mov r8, rsi
mov rdx, rbx
shr eax, 1
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.140025700
cmp eax, 0xffffffff
jne 0x140025b73
lea rcx, str.Failed_to_add_del_filter_class__n
call fcn.1400154e0
mov rcx, rbx
call fcn.14004ca6c
mov eax, 0x8007007a
mov rbx, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret
mov r8, qword [str.FilterClasses]
mov rdx, qword [str.SystemCurrentControlSetControlNetwork]
add eax, eax
mov dword [rsp + 0x28], eax
mov r9d, 7
mov rcx, 0xffffffff80000002
mov qword [rsp + 0x20], rbx
call qword [sym.imp.SHLWAPI.dll_SHSetValueW]
test eax, eax
mov edi, eax
jne 0x140025bc1
mov r8, qword [str.FilterClasses]
mov rdx, qword [str.SystemCurrentControlSetControlNetwork]
lea rcx, str.Successfully_modified_reg_value_HKLM_ls_ls_n
call fcn.1400154e0
jmp 0x140025bcf
lea rcx, str.Failed_to_set_reg_value__err_x_n
mov edx, eax
call fcn.1400154e0
mov rcx, rbx
call fcn.14004ca6c
test edi, edi
jle 0x140025be4
movzx edi, di
or edi, 0x80070000
mov eax, edi
mov rbx, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret