Function at 0x407d00
Capabilities:
Delete registry key
Query or enumerate registry key

Disassembly:
mov r11, rsp
sub rsp, 0x418
mov qword [rsp + 0xb0], 0xfffffffffffffffe
mov qword [r11 + 8], rbx
mov qword [r11 + 0x10], rbp
mov qword [r11 + 0x18], rsi
mov qword [r11 + 0x20], rdi
mov qword [r11 - 8], r12
mov qword [r11 - 0x10], r13
mov qword [r11 - 0x18], r14
mov qword [r11 - 0x20], r15
mov rax, qword [0x0045f6c0]
xor rax, rsp
mov qword [rsp + 0x3e0], rax
xor r15d, r15d
mov qword [rsp + 0x78], r15
mov byte [r11 - 0x358], r15b
xor edx, edx
mov r8d, 0xfe
lea rcx, [r11 - 0x357]
call fcn.004255a0
mov byte [rsp + 0x2d0], r15b
xor edx, edx
mov r8d, 0x103
lea rcx, [rsp + 0x2d1]
call fcn.004255a0
mov dword [rsp + 0x88], 0x104
mov dword [rsp + 0x60], r15d
call fcn.00418c7c
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x407db8
mov ecx, 0x80004005
call fcn.00401000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x80], rax
lea rsi, [0x0044146f]
mov r14, rsi
mov r12, 0xffffffffffffffff
shr r14, 0x10
jne 0x407e08
movzx edi, si
mov ecx, edi
call fcn.00418c68
test rax, rax
je 0x407e2a
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x80]
call fcn.00402b90
jmp 0x407e2a
xor eax, eax
mov rcx, r12
mov rdi, rsi
repne scasb al, byte [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, rsi
lea rcx, [rsp + 0x80]
call fcn.00402d30
nop
call fcn.00418c7c
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x407e4a
mov ecx, 0x80004005
call fcn.00401000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rbp, [rax + 0x18]
mov qword [rsp + 0x68], rbp
test r14, r14
jne 0x407e87
movzx edi, si
mov ecx, edi
call fcn.00418c68
test rax, rax
je 0x407eaa
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.00402b90
mov rbp, qword [rsp + 0x68]
jmp 0x407eaa
xor eax, eax
mov rcx, r12
mov rdi, rsi
repne scasb al, byte [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, rsi
lea rcx, [rsp + 0x68]
call fcn.00402d30
mov rbp, qword [rsp + 0x68]
lea rax, [rsp + 0x78]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, str.SOFTWAREHuawei_technologies
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4083a0
lea rax, [rsp + 0x98]
mov qword [rsp + 0x58], rax
lea rax, [rsp + 0xa4]
mov qword [rsp + 0x50], rax
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0xac]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0xa8]
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x94]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x90]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x20], rax
xor r9d, r9d
lea r8, [rsp + 0x88]
lea rdx, [rsp + 0x2d0]
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
mov r8d, dword [rsp + 0x60]
test r8d, r8d
je 0x408394
lea rdx, str.DeleteDriverVersionInfoReg
lea rcx, str._s_Number_of_subkeys:__d_n
call fcn.00404a90
mov r13d, r15d
cmp dword [rsp + 0x60], r15d
jbe 0x408394
nop
nop
mov dword [rsp + 0x8c], 0xff
lea rax, [rsp + 0x98]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r15
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], r15
lea r9, [rsp + 0x8c]
lea r8, [rsp + 0xc0]
mov edx, r13d
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x408346
xor eax, eax
mov rcx, r12
lea rdi, [rsp + 0xc0]
repne scasb al, byte [rdi]
not rcx
sub rcx, 1
mov rdi, rcx
test ecx, ecx
jne 0x408053
lea rdx, [rbp - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x4080d7
cmp dword [rdx + 0x10], eax
jge 0x408024
cmp dword [rbp - 0xc], eax
jl 0x408356
mov dword [rbp - 0x10], r15d
mov byte [rbp], al
jmp 0x4080d7
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40803c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
lea rbp, [rax + 0x18]
mov qword [rsp + 0x68], rbp
jmp 0x4080d7
mov esi, dword [rbp - 0x10]
lea rbx, [rsp + 0xc0]
sub rbx, rbp
mov ecx, 1
sub ecx, dword [rbp - 8]
mov eax, dword [rbp - 0xc]
sub eax, edi
or eax, ecx
jge 0x408083
mov edx, edi
lea rcx, [rsp + 0x68]
call fcn.00401fa0
mov rbp, qword [rsp + 0x68]
cmp rbx, rsi
ja 0x40809f
movsxd rsi, edi
lea r8, [rbx + rbp]
mov r9, rsi
mov rdx, rsi
mov rcx, rbp
call fcn.00426320
jmp 0x4080b8
movsxd rsi, edi
mov r9, rsi
lea r8, [rsp + 0xc0]
mov rdx, rsi
mov rcx, rbp
call fcn.00426220
test edi, edi
js 0x408389
cmp edi, dword [rbp - 0xc]
jg 0x408389
mov dword [rbp - 0x10], edi
mov byte [rsi + rbp], 0
lea rsi, [0x0044146f]
mov r8, rbp
lea rdx, str.DeleteDriverVersionInfoReg
lea rcx, str._s_found__s_in__Huawei_technologies__n
call fcn.00404a90
call fcn.00418c7c
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
je 0x40837e
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x70], rbx
test r14, r14
jne 0x408140
movzx edi, si
mov ecx, edi
call fcn.00418c68
test rax, rax
je 0x408163
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.00402b90
mov rbx, qword [rsp + 0x70]
jmp 0x408163
xor eax, eax
mov rcx, r12
mov rdi, rsi
repne scasb al, byte [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, rsi
lea rcx, [rsp + 0x70]
call fcn.00402d30
mov rbx, qword [rsp + 0x70]
lea rcx, [rbp - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x4081c7
cmp dword [rdi + 0x10], 0
jl 0x4081b1
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x4081b1
call fcn.00402000
mov rbx, rax
mov ecx, r12d
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x4081a1
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
add rbx, 0x18
mov qword [rsp + 0x70], rbx
mov rbp, qword [rsp + 0x68]
jmp 0x4081c7
mov r8d, dword [rbp - 0x10]
mov rdx, rbp
lea rcx, [rsp + 0x70]
call fcn.00402d30
mov rbx, qword [rsp + 0x70]
movsxd rdi, dword [rbx - 0x10]
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x4081ed
mov edx, edi
lea rcx, [rsp + 0x70]
call fcn.00401fa0
mov rbx, qword [rsp + 0x70]
lea eax, [rdi + 1]
movsxd rdx, eax
mov rcx, rbx
call fcn.00425f20
test eax, eax
je 0x408223
cmp eax, 0xc
je 0x40836d
cmp eax, 0x16
je 0x408367
cmp eax, 0x22
je 0x408367
cmp eax, 0x50
jne 0x408361
test edi, edi
js 0x408373
cmp edi, dword [rbx - 0xc]
jg 0x408373
mov dword [rbx - 0x10], edi
mov byte [rdi + rbx], 0
lea rdi, str.currhandsetwindriver
mov rsi, rbx
mov ecx, 0x15
repe cmpsb byte [rsi], byte [rdi]
je 0x40829a
lea rdi, str.currenthandsetproductlinedriver
mov rsi, rbx
mov ecx, 0x20
repe cmpsb byte [rsi], byte [rdi]
je 0x40829a
lea rdi, str.currentdriver
mov rsi, rbx
mov ecx, 0xe
repe cmpsb byte [rsi], byte [rdi]
je 0x40829a
lea rdi, str.currentflashcarddriver
mov rsi, rbx
mov ecx, 0x17
repe cmpsb byte [rsi], byte [rdi]
je 0x40829a
lea rdi, str.currentproductlinedriver
mov rsi, rbx
mov ecx, 0x19
repe cmpsb byte [rsi], byte [rdi]
jne 0x408310
mov byte [rsp + 0x1c0], 0
xor edx, edx
mov r8d, 0x103
lea rcx, [rsp + 0x1c1]
call fcn.004255a0
mov r9, rbp
lea r8, str.SOFTWAREHuawei_technologies_s
mov edx, 0x104
lea rcx, [rsp + 0x1c0]
call fcn.00401da0
lea rdx, [rsp + 0x1c0]
mov rcx, 0xffffffff80000002
call qword [sym.imp.SHLWAPI.dll_SHDeleteKeyA]
test eax, eax
jne 0x408310
lea r8, [rsp + 0x1c0]
lea rdx, str.DeleteDriverVersionInfoReg
lea rcx, str._s_Found__s__Delete_it_OK_n
call fcn.00404a90
add r13d, 0xffffffff
add dword [rsp + 0x60], 0xffffffff
lea rdx, [rbx - 0x18]
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40833a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbp, qword [rsp + 0x68]
lea rsi, [0x0044146f]
jmp 0x408346
mov rbp, qword [rsp + 0x68]
lea rsi, [0x0044146f]
add r13d, 1
cmp r13d, dword [rsp + 0x60]
jae 0x408394
jmp 0x407f90
mov ecx, 0x80070057
call fcn.00401000
nop
call fcn.00418860
int3
call fcn.00418860
int3
call fcn.0041883c
int3
mov ecx, 0x80070057
call fcn.00401000
nop
mov ecx, 0x80004005
call fcn.00401000
int3
mov ecx, 0x80070057
call fcn.00401000
int3
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
nop
lea rdx, [rbp - 0x18]
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x4083bd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x80]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r12d
add r12d, 0xffffffff
test r12d, r12d
jg 0x4083e1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
mov rcx, qword [rsp + 0x3e0]
xor rcx, rsp
call fcn.00425570
mov rbx, qword [rsp + 0x420]
mov rbp, qword [rsp + 0x428]
mov rsi, qword [rsp + 0x430]
mov rdi, qword [rsp + 0x438]
mov r12, qword [rsp + 0x410]
mov r13, qword [rsp + 0x408]
mov r14, qword [rsp + 0x400]
mov r15, qword [rsp + 0x3f8]
add rsp, 0x418
ret