Function at 0x517a04
Capabilities:
Persist via run registry key

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x10
push 0
push 0
dec ecx
jne 0x517a0d
push ecx
xchg dword [ebp - 4], ecx
push ebx
push esi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 4]
call fcn.00405bbc
mov eax, dword [ebp - 8]
call fcn.00405bbc
mov eax, dword [ebp - 0xc]
call fcn.00405bbc
xor eax, eax
push ebp
push 0x517e3e
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0x31], 0
mov byte [ebp - 0x32], 1
call fcn.005168c4
test al, al
je 0x517deb
xor eax, eax
push ebp
push 0x517ddd
push dword fs:[eax]
mov dword fs:[eax], esp
lea edx, [ebp - 0x3c]
mov eax, dword [ebp - 8]
call fcn.0040aa44
mov edx, dword [ebp - 0x3c]
lea eax, [ebp - 8]
call fcn.004057d4
mov edx, ebx
mov eax, dword [ebp - 0xc]
call fcn.00517f70
cmp byte [0x5608bc], 0
je 0x517cf7
lea edx, [ebp - 0x28]
mov eax, dword [0x55a9c4]
call fcn.0048ec1c
lea eax, [ebp - 0x2c]
mov edx, dword [ebp - 0x28]
mov ecx, 0x517e54
call fcn.004075fc
lea eax, [ebp - 0x30]
mov edx, dword [ebp - 0x28]
mov ecx, 0x517e64
call fcn.004075fc
mov eax, dword [ebp - 4]
call fcn.00405bcc
mov esi, eax
push esi
mov eax, dword [ebp - 0x2c]
push eax
mov eax, dword [eax]
call dword [eax + 0x50]
cmp dword [ebp - 8], 0
je 0x517af5
mov eax, dword [ebp - 8]
call fcn.00405bcc
push eax
mov eax, dword [ebp - 0x2c]
push eax
mov eax, dword [eax]
call dword [eax + 0x2c]
lea edx, [ebp - 0x40]
mov eax, dword [ebp - 4]
call fcn.0040b7b4
mov eax, dword [ebp - 0x40]
call fcn.00405bcc
push eax
mov eax, dword [ebp - 0x2c]
push eax
mov eax, dword [eax]
call dword [eax + 0x24]
mov eax, dword [ebp + 0xc]
push eax
push esi
mov eax, dword [ebp - 0x2c]
push eax
mov eax, dword [eax]
call dword [eax + 0x44]
xor eax, eax
mov dword [ebp - 0x38], eax
xor eax, eax
push ebp
push 0x517cf0
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x42c3b0]
call fcn.0042c51c
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0x10]
mov edx, dword [0x5608c0]
call fcn.004057d4
lea edx, [ebp - 0x44]
mov eax, dword [ebp - 0x10]
call fcn.0040a760
mov eax, dword [ebp - 0x44]
mov edx, 0x517e7c
call fcn.00405b64
jne 0x517b74
mov bl, 1
lea eax, [ebp - 0x10]
call fcn.0040573c
mov edx, dword [ebp - 0xc]
mov eax, 0x517e8c
call fcn.00405d18
test eax, eax
jne 0x517ca3
test bl, bl
je 0x517bb1
mov edx, 0x80000001
mov eax, dword [ebp - 0x38]
call fcn.0042c5f8
lea eax, [ebp - 0x18]
mov edx, 0x517e98
call fcn.004057d4
lea eax, [ebp - 0x10]
call fcn.0040573c
jmp 0x517bf9
cmp byte [0x5608bd], 0
je 0x517bdf
call fcn.004fd964
sub al, 2
jb 0x517bdf
mov edx, 0x80000002
mov eax, dword [ebp - 0x38]
call fcn.0042c5f8
lea eax, [ebp - 0x18]
mov edx, 0x517ea8
call fcn.004057d4
jmp 0x517bf9
mov edx, 0x80000001
mov eax, dword [ebp - 0x38]
call fcn.0042c5f8
lea eax, [ebp - 0x18]
mov edx, 0x517ec0
call fcn.004057d4
xor ecx, ecx
mov edx, 0x517ed4
mov eax, dword [ebp - 0x38]
call fcn.0042c660
test al, al
je 0x517cda
lea eax, [ebp - 0x14]
call fcn.0040573c
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x38]
call fcn.0042cef8
test al, al
je 0x517c35
lea ecx, [ebp - 0x14]
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x38]
call fcn.0042ccfc
cmp dword [ebp - 0x14], 0
je 0x517c99
lea ecx, [ebp - 0x48]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
call fcn.004fe830
mov edx, dword [ebp - 0x48]
lea eax, [ebp - 0x14]
call fcn.004057d4
lea ecx, [ebp - 0x50]
mov edx, 0x517f20
mov eax, dword [ebp - 0xc]
call fcn.0040b720
mov edx, dword [ebp - 0x50]
lea ecx, [ebp - 0x4c]
mov eax, dword [ebp - 0x14]
call fcn.004fe830
mov edx, dword [ebp - 0x4c]
lea eax, [ebp - 0x24]
call fcn.00406120
push 0
mov eax, dword [ebp - 0x24]
call fcn.00406130
push eax
mov eax, dword [ebp - 0x30]
push eax
mov eax, dword [eax]
call dword [eax + 0x18]
test eax, eax
je 0x517c99
mov byte [ebp - 0x32], 0
mov eax, dword [ebp - 0x38]
call fcn.0042c5c8
jmp 0x517cda
lea ecx, [ebp - 0x54]
mov edx, 0x517f20
mov eax, dword [ebp - 0xc]
call fcn.0040b720
mov edx, dword [ebp - 0x54]
lea eax, [ebp - 0x24]
call fcn.00406120
push 0
mov eax, dword [ebp - 0x24]
call fcn.00406130
push eax
mov eax, dword [ebp - 0x30]
push eax
mov eax, dword [eax]
call dword [eax + 0x18]
test eax, eax
je 0x517cda
mov byte [ebp - 0x32], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x517dca
mov eax, dword [ebp - 0x38]
call fcn.004047e0
ret
cmp dword [ebp - 8], 0
je 0x517d38
mov edx, dword [ebp - 8]
mov eax, 0x517f30
call fcn.00405d18
test eax, eax
je 0x517d28
push 0x517f3c
push dword [ebp - 8]
push 0x517f3c
lea eax, [ebp - 8]
mov edx, 3
call fcn.00405ad0
lea eax, [ebp - 8]
mov ecx, dword [ebp - 8]
mov edx, 0x517f30
call fcn.00405a54
test bl, bl
jne 0x517dc6
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 4]
call fcn.0050086c
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x84], eax
mov byte [ebp - 0x80], 0xb
mov eax, dword [ebp - 8]
mov dword [ebp - 0x7c], eax
mov byte [ebp - 0x78], 0xb
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x74], eax
mov byte [ebp - 0x70], 0xb
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x6c], eax
mov byte [ebp - 0x68], 0xb
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x64], eax
mov byte [ebp - 0x60], 0
lea edx, [ebp - 0x88]
mov eax, dword [ebp - 4]
call fcn.0040b7e8
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x5c], eax
mov byte [ebp - 0x58], 0xb
lea edx, [ebp - 0x84]
mov ecx, 5
mov eax, 0x517f48
call fcn.0040c558
mov eax, dword [ebp - 0x1c]
call fcn.005175a4
test al, al
jne 0x517dca
mov byte [ebp - 0x32], 0
jmp 0x517dca
mov byte [ebp - 0x32], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x517de4
call fcn.00516938
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x517e45
lea eax, [ebp - 0x88]
call fcn.0040573c
lea eax, [ebp - 0x54]
mov edx, 7
call fcn.00405760
lea eax, [ebp - 0x30]
call fcn.004075b8
lea eax, [ebp - 0x2c]
call fcn.004075b8
lea eax, [ebp - 0x28]
call fcn.004075b8
lea eax, [ebp - 0x24]
call fcn.00405f44
lea eax, [ebp - 0x20]
mov edx, 8
call fcn.00405760
ret