Function at 0x44ada0
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8
mov eax, dword [0x47f0c0]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0x84], 0xc0000022
mov dword [ebp - 0x7c], 0
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0
movsx eax, byte [ecx + str.RegCreateKeyW]
add eax, edx
mov byte [ebp - 0x58], al
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 0
movsx ecx, byte [eax + str.RegCreateKeyW]
add ecx, edx
mov byte [ebp - 0x57], cl
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 1
movsx ecx, byte [eax + str.RegCreateKeyW]
add ecx, edx
mov byte [ebp - 0x56], cl
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 3
movsx eax, byte [ecx + str.RegCreateKeyW]
add eax, edx
mov byte [ebp - 0x55], al
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 2
movsx ecx, byte [eax + str.RegCreateKeyW]
add ecx, edx
mov byte [ebp - 0x54], cl
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 5
movsx eax, byte [ecx + str.RegCreateKeyW]
add eax, edx
mov byte [ebp - 0x53], al
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 6
movsx eax, byte [ecx + str.RegCreateKeyW]
add eax, edx
mov byte [ebp - 0x52], al
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 7
movsx eax, byte [ecx + str.RegCreateKeyW]
add eax, edx
mov byte [ebp - 0x51], al
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 3
movsx ecx, byte [eax + str.RegCreateKeyW]
add ecx, edx
mov byte [ebp - 0x50], cl
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 9
movsx eax, byte [ecx + str.RegCreateKeyW]
add eax, edx
mov byte [ebp - 0x4f], al
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0xa
movsx eax, byte [ecx + str.RegCreateKeyW]
add eax, edx
mov byte [ebp - 0x4e], al
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0xb
movsx eax, byte [ecx + str.RegCreateKeyW]
add eax, edx
mov byte [ebp - 0x4d], al
mov eax, 0x73
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0xc
movsx eax, byte [ecx + str.RegCreateKeyW]
add eax, edx
mov byte [ebp - 0x4c], al
mov byte [ebp - 0x4b], 0
lea ecx, [ebp - 0x58]
call fcn.0044c780
mov dword [ebp - 0xd0], eax
mov ecx, dword [0x48145c]
mov dword [ebp - 0xcc], ecx
mov edx, dword [ebp - 0xd0]
push edx
mov eax, dword [ebp - 0xcc]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0xa4], eax
mov byte [ebp - 0x28], 0x2e
mov ecx, 1
imul edx, ecx, 0
movsx eax, byte [ebp + edx - 0x28]
movsx ecx, al
mov edx, 1
imul eax, edx, 0
movsx edx, byte [eax + str.RegCloseKey]
xor edx, ecx
mov byte [ebp - 0x27], dl
mov eax, 1
imul ecx, eax, 0
movsx edx, byte [ebp + ecx - 0x28]
add edx, 1
movsx eax, dl
mov ecx, 1
shl ecx, 0
movsx edx, byte [ecx + str.RegCloseKey]
xor edx, eax
mov byte [ebp - 0x26], dl
mov eax, 1
imul ecx, eax, 0
movsx edx, byte [ebp + ecx - 0x28]
add edx, 2
movsx eax, dl
mov ecx, 1
shl ecx, 1
movsx edx, byte [ecx + str.RegCloseKey]
xor edx, eax
mov byte [ebp - 0x25], dl
mov eax, 1
imul ecx, eax, 0
movsx edx, byte [ebp + ecx - 0x28]
add edx, 3
movsx eax, dl
mov ecx, 1
imul edx, ecx, 3
movsx ecx, byte [edx + str.RegCloseKey]
xor ecx, eax
mov byte [ebp - 0x24], cl
mov edx, 1
imul eax, edx, 0
movsx ecx, byte [ebp + eax - 0x28]
add ecx, 4
movsx edx, cl
mov eax, 1
shl eax, 2
movsx ecx, byte [eax + str.RegCloseKey]
xor ecx, edx
mov byte [ebp - 0x23], cl
mov edx, 1
imul eax, edx, 0
movsx ecx, byte [ebp + eax - 0x28]
add ecx, 5
movsx edx, cl
mov eax, 1
imul ecx, eax, 5
movsx eax, byte [ecx + str.RegCloseKey]
xor eax, edx
mov byte [ebp - 0x22], al
mov ecx, 1
imul edx, ecx, 0
movsx eax, byte [ebp + edx - 0x28]
add eax, 6
movsx ecx, al
mov edx, 1
imul eax, edx, 6
movsx edx, byte [eax + str.RegCloseKey]
xor edx, ecx
mov byte [ebp - 0x21], dl
mov eax, 1
imul ecx, eax, 0
movsx edx, byte [ebp + ecx - 0x28]
add edx, 7
movsx eax, dl
mov ecx, 1
imul edx, ecx, 7
movsx ecx, byte [edx + str.RegCloseKey]
xor ecx, eax
mov byte [ebp - 0x20], cl
mov edx, 1
imul eax, edx, 0
movsx ecx, byte [ebp + eax - 0x28]
add ecx, 8
movsx edx, cl
mov eax, 1
shl eax, 3
movsx ecx, byte [eax + str.RegCloseKey]
xor ecx, edx
mov byte [ebp - 0x1f], cl
mov edx, 1
imul eax, edx, 0
movsx ecx, byte [ebp + eax - 0x28]
add ecx, 9
movsx edx, cl
mov eax, 1
imul ecx, eax, 9
movsx eax, byte [ecx + str.RegCloseKey]
xor eax, edx
mov byte [ebp - 0x1e], al
mov ecx, 1
imul edx, ecx, 0
movsx eax, byte [ebp + edx - 0x28]
add eax, 0xa
movsx ecx, al
mov edx, 1
imul eax, edx, 0xa
movsx edx, byte [eax + str.RegCloseKey]
xor edx, ecx
mov byte [ebp - 0x1d], dl
xor eax, eax
mov byte [ebp - 0x1c], al
lea ecx, [ebp - 0x28]
call fcn.0042eb60
mov dword [ebp - 0xc8], eax
mov ecx, dword [0x48145c]
mov dword [ebp - 0xb4], ecx
mov edx, dword [ebp - 0xc8]
push edx
mov eax, dword [ebp - 0xb4]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0xac], eax
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0
movsx eax, byte [ecx + str.CoCreateGuid]
add eax, edx
mov byte [ebp - 0x38], al
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 0
movsx ecx, byte [eax + str.CoCreateGuid]
add ecx, edx
mov byte [ebp - 0x37], cl
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 1
movsx ecx, byte [eax + str.CoCreateGuid]
add ecx, edx
mov byte [ebp - 0x36], cl
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 3
movsx eax, byte [ecx + str.CoCreateGuid]
add eax, edx
mov byte [ebp - 0x35], al
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 2
movsx ecx, byte [eax + str.CoCreateGuid]
add ecx, edx
mov byte [ebp - 0x34], cl
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 5
movsx eax, byte [ecx + str.CoCreateGuid]
add eax, edx
mov byte [ebp - 0x33], al
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 6
movsx eax, byte [ecx + str.CoCreateGuid]
add eax, edx
mov byte [ebp - 0x32], al
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 7
movsx eax, byte [ecx + str.CoCreateGuid]
add eax, edx
mov byte [ebp - 0x31], al
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 3
movsx ecx, byte [eax + str.CoCreateGuid]
add ecx, edx
mov byte [ebp - 0x30], cl
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 9
movsx eax, byte [ecx + str.CoCreateGuid]
add eax, edx
mov byte [ebp - 0x2f], al
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0xa
movsx eax, byte [ecx + str.CoCreateGuid]
add eax, edx
mov byte [ebp - 0x2e], al
mov eax, 6
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0xb
movsx eax, byte [ecx + str.CoCreateGuid]
add eax, edx
mov byte [ebp - 0x2d], al
mov byte [ebp - 0x2c], 0
lea ecx, [ebp - 0x38]
call fcn.0044c5f0
mov dword [ebp - 0xc4], eax
mov ecx, dword [0x48143c]
mov dword [ebp - 0x88], ecx
mov edx, dword [ebp - 0xc4]
push edx
mov eax, dword [ebp - 0x88]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x8c], eax
mov ecx, dword [ebp - 0x8c]
mov dword [ebp - 0x90], ecx
lea edx, [ebp - 0x68]
push edx
call dword [ebp - 0x90]
test eax, eax
je 0x44b3bb
jmp 0x44b6e4
mov byte [ebp - 0x18], 0x32
mov eax, 1
imul ecx, eax, 0
mov dl, byte [ebp + ecx - 0x18]
mov byte [ebp - 0x69], dl
movsx eax, byte [ebp - 0x69]
mov ecx, 1
imul edx, ecx, 0
movsx ecx, byte [edx + str.StringFromCLSID]
xor ecx, eax
mov byte [ebp - 0x17], cl
mov edx, 1
imul eax, edx, 0
mov cl, byte [ebp + eax - 0x18]
mov byte [ebp - 0x6a], cl
movsx edx, byte [ebp - 0x6a]
mov eax, 1
shl eax, 0
movsx ecx, byte [eax + str.StringFromCLSID]
xor ecx, edx
mov byte [ebp - 0x16], cl
mov edx, 1
imul eax, edx, 0
mov cl, byte [ebp + eax - 0x18]
mov byte [ebp - 0x6b], cl
movsx edx, byte [ebp - 0x6b]
mov eax, 1
shl eax, 1
movsx ecx, byte [eax + str.StringFromCLSID]
xor ecx, edx
mov byte [ebp - 0x15], cl
mov edx, 1
imul eax, edx, 0
mov cl, byte [ebp + eax - 0x18]
mov byte [ebp - 0x6c], cl
movsx edx, byte [ebp - 0x6c]
mov eax, 1
imul ecx, eax, 3
movsx eax, byte [ecx + str.StringFromCLSID]
xor eax, edx
mov byte [ebp - 0x14], al
mov ecx, 1
imul edx, ecx, 0
mov al, byte [ebp + edx - 0x18]
mov byte [ebp - 0x6d], al
movsx ecx, byte [ebp - 0x6d]
mov edx, 1
shl edx, 2
movsx eax, byte [edx + str.StringFromCLSID]
xor eax, ecx
mov byte [ebp - 0x13], al
mov ecx, 1
imul edx, ecx, 0
mov al, byte [ebp + edx - 0x18]
mov byte [ebp - 0x77], al
movsx ecx, byte [ebp - 0x77]
mov edx, 1
imul eax, edx, 5
movsx edx, byte [eax + str.StringFromCLSID]
xor edx, ecx
mov byte [ebp - 0x12], dl
mov eax, 1
imul ecx, eax, 0
mov dl, byte [ebp + ecx - 0x18]
mov byte [ebp - 0x6e], dl
movsx eax, byte [ebp - 0x6e]
mov ecx, 1
imul edx, ecx, 6
movsx ecx, byte [edx + str.StringFromCLSID]
xor ecx, eax
mov byte [ebp - 0x11], cl
mov edx, 1
imul eax, edx, 0
mov cl, byte [ebp + eax - 0x18]
mov byte [ebp - 0x6f], cl
movsx edx, byte [ebp - 0x6f]
mov eax, 1
imul ecx, eax, 7
movsx eax, byte [ecx + str.StringFromCLSID]
xor eax, edx
mov byte [ebp - 0x10], al
mov ecx, 1
imul edx, ecx, 0
mov al, byte [ebp + edx - 0x18]
mov byte [ebp - 0x70], al
movsx ecx, byte [ebp - 0x70]
mov edx, 1
shl edx, 3
movsx eax, byte [edx + str.StringFromCLSID]
xor eax, ecx
mov byte [ebp - 0xf], al
mov ecx, 1
imul edx, ecx, 0
mov al, byte [ebp + edx - 0x18]
mov byte [ebp - 0x71], al
movsx ecx, byte [ebp - 0x71]
mov edx, 1
imul eax, edx, 9
movsx edx, byte [eax + str.StringFromCLSID]
xor edx, ecx
mov byte [ebp - 0xe], dl
mov eax, 1
imul ecx, eax, 0
mov dl, byte [ebp + ecx - 0x18]
mov byte [ebp - 0x72], dl
movsx eax, byte [ebp - 0x72]
mov ecx, 1
imul edx, ecx, 0xa
movsx ecx, byte [edx + str.StringFromCLSID]
xor ecx, eax
mov byte [ebp - 0xd], cl
mov edx, 1
imul eax, edx, 0
mov cl, byte [ebp + eax - 0x18]
mov byte [ebp - 0x73], cl
movsx edx, byte [ebp - 0x73]
mov eax, 1
imul ecx, eax, 0xb
movsx eax, byte [ecx + str.StringFromCLSID]
xor eax, edx
mov byte [ebp - 0xc], al
mov ecx, 1
imul edx, ecx, 0
mov al, byte [ebp + edx - 0x18]
mov byte [ebp - 0x74], al
movsx ecx, byte [ebp - 0x74]
mov edx, 1
imul eax, edx, 0xc
movsx edx, byte [eax + str.StringFromCLSID]
xor edx, ecx
mov byte [ebp - 0xb], dl
mov eax, 1
imul ecx, eax, 0
mov dl, byte [ebp + ecx - 0x18]
mov byte [ebp - 0x75], dl
movsx eax, byte [ebp - 0x75]
mov ecx, 1
imul edx, ecx, 0xd
movsx ecx, byte [edx + str.StringFromCLSID]
xor ecx, eax
mov byte [ebp - 0xa], cl
mov edx, 1
imul eax, edx, 0
mov cl, byte [ebp + eax - 0x18]
mov byte [ebp - 0x76], cl
movsx edx, byte [ebp - 0x76]
mov eax, 1
imul ecx, eax, 0xe
movsx eax, byte [ecx + str.StringFromCLSID]
xor eax, edx
mov byte [ebp - 9], al
xor ecx, ecx
mov byte [ebp - 8], cl
lea ecx, [ebp - 0x18]
call fcn.0042ec20
mov dword [ebp - 0x94], eax
mov edx, dword [0x48143c]
mov dword [ebp - 0x98], edx
mov eax, dword [ebp - 0x94]
push eax
mov ecx, dword [ebp - 0x98]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x9c], eax
mov edx, dword [ebp - 0x9c]
mov dword [ebp - 0xa0], edx
lea eax, [ebp - 0x7c]
push eax
lea ecx, [ebp - 0x68]
push ecx
call dword [ebp - 0xa0]
test eax, eax
je 0x44b663
jmp 0x44b6e4
mov edx, dword [ebp - 0x7c]
push edx
call fcn.0045a403
add esp, 4
lea eax, [eax + eax + 2]
mov dword [ebp - 0xd8], eax
push 0x104
mov ecx, dword [ebp - 0x7c]
push ecx
mov edx, dword [ebp + 0x10]
push edx
call fcn.0045aa35
add esp, 0xc
mov eax, dword [ebp - 0xa4]
mov dword [ebp - 0xa8], eax
lea ecx, [ebp - 0x80]
push ecx
mov edx, dword [ebp - 0x7c]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [ebp - 0xa8]
test eax, eax
jne 0x44b6dc
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp - 0x80]
push edx
call fcn.0044a630
add esp, 8
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0xac]
mov dword [ebp - 0xb0], eax
mov ecx, dword [ebp - 0x80]
push ecx
call dword [ebp - 0xb0]
xor edx, edx
jne 0x44b1b5
cmp dword [ebp - 0x7c], 0
je 0x44b90f
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0
movsx eax, byte [ecx + str.CoTaskMemFree]
add eax, edx
mov byte [ebp - 0x48], al
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 0
movsx ecx, byte [eax + str.CoTaskMemFree]
add ecx, edx
mov byte [ebp - 0x47], cl
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 1
movsx ecx, byte [eax + str.CoTaskMemFree]
add ecx, edx
mov byte [ebp - 0x46], cl
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 3
movsx eax, byte [ecx + str.CoTaskMemFree]
add eax, edx
mov byte [ebp - 0x45], al
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 2
movsx ecx, byte [eax + str.CoTaskMemFree]
add ecx, edx
mov byte [ebp - 0x44], cl
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 5
movsx eax, byte [ecx + str.CoTaskMemFree]
add eax, edx
mov byte [ebp - 0x43], al
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 6
movsx eax, byte [ecx + str.CoTaskMemFree]
add eax, edx
mov byte [ebp - 0x42], al
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 7
movsx eax, byte [ecx + str.CoTaskMemFree]
add eax, edx
mov byte [ebp - 0x41], al
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
shl eax, 3
movsx ecx, byte [eax + str.CoTaskMemFree]
add ecx, edx
mov byte [ebp - 0x40], cl
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 9
movsx eax, byte [ecx + str.CoTaskMemFree]
add eax, edx
mov byte [ebp - 0x3f], al
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0xa
movsx eax, byte [ecx + str.CoTaskMemFree]
add eax, edx
mov byte [ebp - 0x3e], al
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0xb
movsx eax, byte [ecx + str.CoTaskMemFree]
add eax, edx
mov byte [ebp - 0x3d], al
mov eax, 0x75
cdq
mov ecx, 0xd
idiv ecx
movsx edx, dl
mov eax, 1
imul ecx, eax, 0xc
movsx eax, byte [ecx + str.CoTaskMemFree]
add eax, edx
mov byte [ebp - 0x3c], al
mov byte [ebp - 0x3b], 0
lea ecx, [ebp - 0x48]
call fcn.0044c820
mov dword [ebp - 0xd4], eax
mov ecx, dword [0x48143c]
mov dword [ebp - 0xb8], ecx
mov edx, dword [ebp - 0xd4]
push edx
mov eax, dword [ebp - 0xb8]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0xbc], eax
mov ecx, dword [ebp - 0xbc]
mov dword [ebp - 0xc0], ecx
mov edx, dword [ebp - 0x7c]
push edx
call dword [ebp - 0xc0]
mov eax, dword [ebp - 0x84]
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00451fec
mov esp, ebp
pop ebp
ret