Function at 0x5169fc
Capabilities:
Persist via run registry key

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe74
push ebx
push esi
xor edx, edx
mov dword [ebp - 0x188], edx
mov dword [ebp - 0x18c], edx
mov dword [ebp - 0x184], edx
mov dword [ebp - 0x180], edx
mov dword [ebp - 8], edx
mov dword [ebp - 0x16c], eax
lea eax, [ebp - 0x168]
mov edx, dword [0x4095f4]
call fcn.00406514
xor eax, eax
push ebp
push 0x516e86
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0x16d], 0
mov eax, dword [ebp - 0x16c]
cmp dword [eax], 0
jne 0x516a8c
mov dl, 1
mov eax, dword [0x41af60]
call fcn.004047b0
mov edx, dword [ebp - 0x16c]
mov dword [edx], eax
mov eax, dword [ebp - 0x16c]
mov eax, dword [eax]
mov byte [eax + 0x25], 1
mov eax, dword [ebp - 0x16c]
mov eax, dword [eax]
mov dl, 1
call fcn.0041fce4
jmp 0x516a99
mov eax, dword [ebp - 0x16c]
mov eax, dword [eax]
mov edx, dword [eax]
call dword [edx + 0x44]
cmp byte [0x5608bc], 0
je 0x516d6c
xor eax, eax
mov dword [ebp - 0x178], eax
xor eax, eax
push ebp
push 0x516d65
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x42c3b0]
call fcn.0042c51c
mov dword [ebp - 0x178], eax
mov edx, 0x80000001
mov eax, dword [ebp - 0x178]
call fcn.0042c5f8
xor ecx, ecx
mov edx, 0x516ea4
mov eax, dword [ebp - 0x178]
call fcn.0042c660
test al, al
je 0x516c08
lea eax, [ebp - 8]
call fcn.0040573c
mov edx, 0x516ef0
mov eax, dword [ebp - 0x178]
call fcn.0042cef8
test al, al
je 0x516b27
mov edx, 0x516ef0
lea ecx, [ebp - 8]
mov eax, dword [ebp - 0x178]
call fcn.0042ccfc
cmp dword [ebp - 8], 0
je 0x516bfd
lea ecx, [ebp - 0x180]
mov edx, 0x516f04
mov eax, dword [ebp - 8]
call fcn.004fe830
mov edx, dword [ebp - 0x180]
lea eax, [ebp - 8]
call fcn.004057d4
lea ecx, [ebp - 0x168]
mov edx, 0x10
mov eax, dword [ebp - 8]
call fcn.0040b608
mov ebx, eax
xor eax, eax
push ebp
push 0x516bf6
push dword fs:[eax]
mov dword fs:[eax], esp
test ebx, ebx
jne 0x516bdd
test byte [ebp - 0x158], 0x10
je 0x516b9c
mov esi, dword [ebp - 0x154]
test esi, esi
je 0x516b91
sub esi, 4
mov esi, dword [esi]
test esi, esi
setg byte [ebp - 0x179]
jmp 0x516ba3
mov byte [ebp - 0x179], 0
cmp byte [ebp - 0x179], 0
je 0x516bcc
mov eax, dword [ebp - 0x154]
cmp byte [eax], 0x2e
je 0x516bcc
mov eax, dword [ebp - 0x16c]
mov eax, dword [eax]
xor ecx, ecx
mov edx, dword [ebp - 0x154]
mov ebx, dword [eax]
call dword [ebx + 0x3c]
lea eax, [ebp - 0x168]
call fcn.0040b658
mov ebx, eax
test ebx, ebx
je 0x516b79
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x516bfd
lea eax, [ebp - 0x168]
call fcn.0040b67c
ret
mov eax, dword [ebp - 0x178]
call fcn.0042c5c8
mov edx, 0x80000002
mov eax, dword [ebp - 0x178]
call fcn.0042c5f8
mov edx, 0x516ea4
xor ecx, ecx
mov eax, dword [ebp - 0x178]
call fcn.0042c660
test al, al
je 0x516d45
lea eax, [ebp - 8]
call fcn.0040573c
mov edx, 0x516f10
mov eax, dword [ebp - 0x178]
call fcn.0042cef8
test al, al
je 0x516c61
mov edx, 0x516f10
lea ecx, [ebp - 8]
mov eax, dword [ebp - 0x178]
call fcn.0042ccfc
cmp dword [ebp - 8], 0
je 0x516d3a
lea ecx, [ebp - 0x184]
mov edx, 0x516f04
mov eax, dword [ebp - 8]
call fcn.004fe830
mov edx, dword [ebp - 0x184]
lea eax, [ebp - 8]
call fcn.004057d4
lea ecx, [ebp - 0x168]
mov edx, 0x10
mov eax, dword [ebp - 8]
call fcn.0040b608
mov ebx, eax
xor eax, eax
push ebp
push 0x516d33
push dword fs:[eax]
mov dword fs:[eax], esp
test ebx, ebx
jne 0x516d1a
test byte [ebp - 0x158], 0x10
je 0x516cd6
mov esi, dword [ebp - 0x154]
test esi, esi
je 0x516ccb
sub esi, 4
mov esi, dword [esi]
test esi, esi
setg byte [ebp - 0x17a]
jmp 0x516cdd
mov byte [ebp - 0x17a], 0
cmp byte [ebp - 0x17a], 0
je 0x516d09
mov eax, dword [ebp - 0x154]
cmp byte [eax], 0x2e
je 0x516d09
mov eax, dword [ebp - 0x16c]
mov eax, dword [eax]
mov ecx, 1
mov edx, dword [ebp - 0x154]
mov ebx, dword [eax]
call dword [ebx + 0x3c]
lea eax, [ebp - 0x168]
call fcn.0040b658
mov ebx, eax
test ebx, ebx
je 0x516cb3
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x516d3a
lea eax, [ebp - 0x168]
call fcn.0040b67c
ret
mov eax, dword [ebp - 0x178]
call fcn.0042c5c8
mov byte [ebp - 0x16d], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x516e4f
mov eax, dword [ebp - 0x178]
call fcn.004047e0
ret
call fcn.005168c4
test al, al
je 0x516e4f
xor eax, eax
mov dword [ebp - 0x174], eax
xor eax, eax
push ebp
push 0x516e41
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, 0x516f28
mov eax, dword [0x5608b4]
call fcn.0051537c
mov dword [ebp - 0x174], eax
cmp dword [ebp - 0x174], 0
je 0x516e1a
mov eax, dword [ebp - 0x174]
mov dword [ebp - 4], eax
push ebp
call fcn.0051696c
pop ecx
mov ebx, eax
xor esi, esi
lea eax, [ebp - 0x188]
push eax
lea eax, [ebp - 0x18c]
mov edx, dword [ebp - 4]
call fcn.00405934
mov eax, dword [ebp - 0x18c]
mov ecx, ebx
dec ecx
mov edx, 1
call fcn.00405c34
mov edx, dword [ebp - 0x188]
mov eax, dword [ebp - 0x16c]
mov eax, dword [eax]
mov ecx, dword [eax]
call dword [ecx + 0x38]
inc ebx
add dword [ebp - 4], ebx
push ebp
call fcn.0051696c
pop ecx
mov ebx, eax
inc esi
cmp esi, 0x2710
jg 0x516e1a
mov eax, dword [ebp - 4]
cmp byte [eax], 0
jne 0x516dc1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x516e48
call fcn.00516938
cmp dword [ebp - 0x174], 0
je 0x516e40
mov eax, dword [ebp - 0x174]
call fcn.0040bd2c
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x516e8d
lea eax, [ebp - 0x18c]
mov edx, 4
call fcn.00405760
lea eax, [ebp - 0x168]
mov edx, dword [0x4095f4]
call fcn.004065e4
lea eax, [ebp - 8]
call fcn.0040573c
ret