Function at 0x10003960
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x474
mov eax, dword [0x1002f490]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov dword [ebp - 0x460], ecx
lea ecx, [ebp - 0x470]
mov dword [ebp - 0x45c], edx
mov dword [ebp - 0x464], eax
mov eax, dword [ebp + 0x14]
push ecx
lea edx, [ebp - 0x464]
push edx
mov dword [ebp - 0x458], eax
call dword [sym.imp.ole32.dll_StringFromIID]
mov eax, dword [ebp - 0x470]
xor ebx, ebx
cmp eax, ebx
je 0x10003a05
push ebx
push ebx
push 0x104
lea ecx, [ebp - 0x414]
push ecx
push 0xffffffffffffffff
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea edx, [ebp - 0x468]
push edx
push 1
call dword [sym.imp.ole32.dll_CoGetMalloc]
mov eax, dword [ebp - 0x468]
mov edx, dword [ebp - 0x470]
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov eax, dword [ebp - 0x468]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ecx, dword [0x10032e7c]
push 0x104
lea eax, [ebp - 0x20c]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov edi, 0x80000000
mov eax, str.CLSID_38sInprocServer32
lea edx, [ebp - 0x20c]
mov dword [ebp - 0x454], edi
mov dword [ebp - 0x450], str.CLSID_38s
mov dword [ebp - 0x44c], ebx
mov dword [ebp - 0x448], str.cqhelper
mov dword [ebp - 0x444], edi
mov dword [ebp - 0x440], eax
mov dword [ebp - 0x43c], ebx
mov dword [ebp - 0x438], edx
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x430], eax
mov dword [ebp - 0x42c], str.ThreadingModel
mov dword [ebp - 0x428], str.Apartment
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x420], ebx
mov dword [ebp - 0x41c], ebx
mov dword [ebp - 0x418], ebx
mov dword [ebp - 0x468], ebx
xor esi, esi
jmp 0x10003ab0
mov ecx, dword [ebp + esi - 0x450]
lea eax, [ebp - 0x414]
push eax
push ecx
push 0x200
push ebx
lea edx, [ebp - 0x310]
push ebx
push edx
mov eax, 0x104
call fcn.100018f0
add esp, 0x18
mov dword [0x10032e78], eax
lea eax, [ebp - 0x474]
push eax
lea ecx, [ebp - 0x46c]
push ecx
push ebx
push 0x20006
push ebx
push ebx
push ebx
lea edx, [ebp - 0x310]
push edx
push edi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x10003bd9
push 0x103
lea eax, [ebp - 0x107]
push ebx
push eax
mov byte [ebp - 0x108], bl
call fcn.1001ca20
mov edx, dword [ebp + esi - 0x448]
lea ecx, [ebp - 0x20c]
push ecx
push edx
mov ecx, 0x104
lea edi, [ebp - 0x108]
call fcn.10001890
add esp, 0x14
mov ecx, 0x104
mov eax, edi
xor edx, edx
nop
cmp byte [eax], bl
je 0x10003b5a
inc eax
dec ecx
jne 0x10003b50
jmp 0x10003b5e
cmp ecx, ebx
jne 0x10003bd0
mov edx, 0x80070057
xor eax, eax
mov ecx, dword [ebp + esi - 0x44c]
inc eax
push eax
lea eax, [ebp - 0x108]
push eax
push 1
push ebx
mov dword [0x10032e78], edx
mov edx, dword [ebp - 0x46c]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [ebp - 0x46c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x468]
inc eax
mov dword [ebp - 0x468], eax
shl eax, 4
mov esi, eax
mov edi, dword [ebp + esi - 0x454]
cmp edi, ebx
jne 0x10003ab0
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10012773
mov esp, ebp
pop ebp
ret
mov eax, 0x104
sub eax, ecx
jmp 0x10003b65
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.10012773
mov esp, ebp
pop ebp
ret