Function at 0x519e50
Capabilities:
Check if file exists
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x53ced8
mov eax, dword fs:[0]
push eax
sub esp, 0x8a0
mov eax, dword [0x59a0a0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x884], edi
mov dword [ebp - 4], 0
mov dword [ebp - 0x8a0], 0
mov dword [ebp - 0x89c], 0
mov dword [ebp - 0x898], 0
mov dword [ebp - 0x8ac], 0
mov dword [ebp - 0x8a8], 0
mov dword [ebp - 0x8a4], 0
mov byte [ebp - 4], 6
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x519ee9
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x519efe
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x519f02
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0x894], eax
mov byte [ebp - 4], 7
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x519f2b
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x519f40
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x519f44
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0x860], eax
mov byte [ebp - 4], 8
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x519f6d
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x519f82
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x519f86
mov ecx, edx
call esi
lea ebx, [eax + 0x10]
mov dword [ebp - 0x890], ebx
mov byte [ebp - 4], 9
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x519faf
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x519fc4
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x519fc8
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0x878], eax
mov byte [ebp - 4], 0xa
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x519ff1
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a006
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51a00a
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0x88c], eax
push 0xbb8
mov byte [ebp - 4], 0xb
mov ecx, edi
push 6
mov dword [edi + 0x400], 0xbb8
call fcn.0050fd60
mov eax, dword [0x59fb74]
cmp dword [eax - 0xc], 0
jne 0x51a060
push 0x20
push 0x56f790
lea ecx, [ebp - 0x878]
call fcn.00402d50
push 0x27
push 0x56f740
lea ecx, [ebp - 0x88c]
call fcn.00402d50
jmp 0x51a08c
push eax
lea eax, [ebp - 0x878]
push 0x56f710
push eax
call fcn.004023f0
push dword [0x59fb74]
lea eax, [ebp - 0x88c]
push 0x56f7fc
push eax
call fcn.004023f0
add esp, 0x18
mov esi, dword [ebp - 0x878]
lea eax, [ebp - 0x864]
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
push eax
push 0x2001f
push 0
push esi
push reloc.WS2_32.dll_bind
mov dword [ebp - 0x864], 0
call edi
test eax, eax
jne 0x51b3f7
mov eax, dword [ebp - 0x864]
push 0x208
mov dword [ebp - 0x8a0], eax
lea eax, [ebp - 0x218]
push 0
push eax
mov dword [ebp - 0x89c], 0
call fcn.0049e130
add esp, 0xc
mov dword [ebp - 0x870], 0x208
lea eax, [ebp - 0x870]
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x868]
push eax
push 0
push 0x56f88c
push dword [ebp - 0x8a0]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x51b3f7
mov eax, dword [ebp - 0x868]
cmp eax, 1
je 0x51a13a
cmp eax, 2
jne 0x51b3f7
mov eax, dword [ebp - 0x870]
test eax, eax
je 0x51a15e
test al, 1
jne 0x51b3f7
shr eax, 1
cmp word [ebp + eax*2 - 0x21a], 0
je 0x51a167
jmp 0x51b3f7
xor eax, eax
mov word [ebp - 0x218], ax
push 0x56f7d4
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x894]
push 0x56f674
push eax
call fcn.004023f0
add esp, 0x10
mov dword [ebp - 0x870], 0
lea eax, [ebp - 0x870]
push eax
push 0x2001f
push 0
push dword [ebp - 0x88c]
push reloc.WS2_32.dll_bind
call edi
test eax, eax
jne 0x51b3f7
mov edi, dword [ebp - 0x870]
push 0x208
push eax
mov dword [ebp - 0x8a8], eax
lea eax, [ebp - 0x420]
push eax
mov dword [ebp - 0x8ac], edi
call fcn.0049e130
add esp, 0xc
mov dword [ebp - 0x870], 0x208
lea eax, [ebp - 0x870]
push eax
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0x868]
push eax
push 0
push 0x56f8d0
push edi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x51b3f7
mov eax, dword [ebp - 0x868]
cmp eax, 1
je 0x51a224
cmp eax, 2
jne 0x51b3f7
mov eax, dword [ebp - 0x870]
test eax, eax
je 0x51a248
test al, 1
jne 0x51b3f7
shr eax, 1
cmp word [ebp + eax*2 - 0x422], 0
je 0x51a251
jmp 0x51b3f7
xor eax, eax
mov word [ebp - 0x420], ax
push 0x56f8b4
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0x890]
push 0x56f8a8
push eax
call fcn.004023f0
add esp, 0xc
mov dword [ebp - 0x868], esp
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x880], esp
mov ecx, dword [edi - 0x10]
mov eax, dword [ecx]
cmp eax, vtable.ATL::CAtlStringMgr.0
je 0x51a291
call dword [eax + 0x10]
mov ecx, eax
cmp dword [edi - 4], 0
lea eax, [edi - 4]
jl 0x51a2a7
cmp ecx, dword [edi - 0x10]
jne 0x51a2a7
lea ebx, [edi - 0x10]
lock inc dword [eax]
jmp 0x51a2df
mov eax, dword [ecx]
push 2
push dword [edi - 0xc]
call dword [eax]
mov ebx, eax
test ebx, ebx
jne 0x51a2bb
call fcn.00402c20
mov eax, dword [edi - 0xc]
lea ecx, [ebx + 0x10]
mov dword [ebx + 4], eax
mov edx, dword [edi - 0xc]
lea eax, [edx*2 + 2]
push eax
push edi
lea edx, [edx*2 + 2]
call fcn.004c7670
add esp, 8
mov ecx, dword [ebp - 0x868]
lea eax, [ebx + 0x10]
mov dword [ecx], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0xc
push 0x56f8a4
call fcn.00401ff0
mov ebx, dword [ebp - 0x884]
mov ecx, ebx
mov byte [ebp - 4], 0xb
call fcn.005145e0
push 0x20a
lea eax, [ebp - 0x62c]
push 0
push eax
call fcn.0049e130
add esp, 0xc
lea eax, [ebp - 0x62c]
push 0x104
push eax
push 0x90
push dword [ebx + 0x3f0]
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [ebp - 0x62c]
push eax
lea ecx, [ebp - 0x888]
call fcn.00401ff0
mov byte [ebp - 4], 0xd
lea eax, [ebp - 0x860]
push dword [ebp + 0x18]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
push 0x56f928
push eax
call fcn.004023f0
add esp, 0x18
cmp dword [0x59fbe4], 0
jne 0x51a3ae
mov eax, dword [ebp - 0x860]
cmp dword [eax - 0xc], 0
je 0x51a39c
push 1
push 0x56f920
lea ecx, [ebp - 0x860]
call fcn.00402320
push 4
push str._min
lea ecx, [ebp - 0x860]
call fcn.00402320
cmp dword [0x59fb38], 0
je 0x51a4df
push 0x15
push str.__updateapkalgoritmh
lea ecx, [ebp - 0x860]
call fcn.00402320
mov eax, dword [0x59fc0c]
cmp dword [eax - 0xc], 0
je 0x51a4df
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51a3f8
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov edi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a40d
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51a411
mov ecx, edx
call edi
add eax, 0x10
mov dword [ebp - 0x864], eax
mov byte [ebp - 4], 0xe
lea eax, [ebp - 0x864]
push dword [0x59fc10]
push 0x56f974
push eax
call fcn.004023f0
push 0x56f970
lea edx, [ebp - 0x864]
lea ecx, [ebp - 0x868]
call fcn.00401d60
add esp, 0x10
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x860]
mov eax, dword [eax]
push dword [eax - 0xc]
push eax
call fcn.00402320
mov byte [ebp - 4], 0xe
or eax, 0xffffffff
mov edx, dword [ebp - 0x868]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x51a4a0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
mov edi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a49e
mov eax, dword [ecx + 4]
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call ebx
jmp 0x51a4a6
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 0xd
or eax, 0xffffffff
mov ecx, dword [ebp - 0x864]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x51a4df
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a4db
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call ebx
jmp 0x51a4df
mov ecx, edx
call edi
mov eax, dword [ebp - 0x888]
cmp dword [eax - 0xc], 0
je 0x51a5ab
push 0x56f96c
lea ecx, [ebp - 0x880]
call fcn.00401ff0
lea ecx, [ebp - 0x888]
mov byte [ebp - 4], 0x10
push ecx
mov edx, eax
lea ecx, [ebp - 0x868]
call fcn.00401e60
add esp, 4
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x860]
mov eax, dword [eax]
push dword [eax - 0xc]
push eax
call fcn.00402320
mov byte [ebp - 4], 0x10
or eax, 0xffffffff
mov edx, dword [ebp - 0x868]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x51a56c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
mov edi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a56a
mov eax, dword [ecx + 4]
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call ebx
jmp 0x51a572
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 0xd
or eax, 0xffffffff
mov ecx, dword [ebp - 0x880]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x51a5ab
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a5a7
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call ebx
jmp 0x51a5ab
mov ecx, edx
call edi
mov ecx, dword [0x59fbb8]
mov eax, dword [ecx - 0xc]
test eax, eax
je 0x51a5f1
jns 0x51a5c4
push 0x80070057
call fcn.00401b40
cmp word [ecx], 0x20
je 0x51a5e2
push 1
push 0x56f924
lea ecx, [ebp - 0x860]
call fcn.00402320
mov ecx, dword [0x59fbb8]
push dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x860]
call fcn.00402320
mov ebx, dword [ebp - 0x860]
cmp dword [ebx - 0xc], 0
jl 0x51a618
push 0x56f99c
push ebx
call fcn.0049d574
add esp, 8
test eax, eax
je 0x51a618
sub eax, ebx
sar eax, 1
cmp eax, 0xffffffff
jne 0x51a672
cmp dword [0x59fb8c], 0
je 0x51a642
cmp dword [ebx - 0xc], 0
je 0x51a639
push 1
push 0x56f998
lea ecx, [ebp - 0x860]
call fcn.00402320
push 0xb
push 0x56f980
jmp 0x51a661
cmp dword [ebx - 0xc], 0
je 0x51a65a
push 1
push 0x56f97c
lea ecx, [ebp - 0x860]
call fcn.00402320
push 0xb
push 0x56f9d4
lea ecx, [ebp - 0x860]
call fcn.00402320
mov ebx, dword [ebp - 0x860]
mov eax, dword [0x59fadc]
mov edi, 1
cmp eax, edi
jne 0x51a785
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51a6a0
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a6b5
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51a6b9
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0x870], eax
mov byte [ebp - 4], 0x12
cmp dword [ebx - 0xc], 0
je 0x51a6de
push 1
push 0x56f9d0
lea ecx, [ebp - 0x860]
call fcn.00402320
push dword [0x59fb18]
lea eax, [ebp - 0x870]
push 0x56f9b0
push eax
call fcn.004023f0
mov esi, dword [ebp - 0x870]
lea ecx, [ebp - 0x860]
add esp, 0xc
push dword [esi - 0xc]
push esi
call fcn.00402320
mov eax, dword [ebp - 0x860]
cmp dword [eax - 0xc], 0
je 0x51a72b
push 1
push 0x56f9ac
lea ecx, [ebp - 0x860]
call fcn.00402320
push 0xe
push 0x56fa2c
lea ecx, [ebp - 0x860]
call fcn.00402320
mov edi, 2
mov byte [ebp - 4], 0xd
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x51b209
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a77e
mov eax, dword [ecx + 4]
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call ebx
jmp 0x51b209
call edx
jmp 0x51b209
test eax, eax
je 0x51a79b
cmp eax, 0x2710
je 0x51a79b
cmp eax, 0x1388
jne 0x51b20f
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51a7b7
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a7cc
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51a7d0
mov ecx, edx
call esi
lea esi, [eax + 0x10]
mov dword [ebp - 0x874], esi
lea eax, [ebp - 0x420]
mov byte [ebp - 4], 0x13
push eax
lea ecx, [ebp - 0x870]
call fcn.00401ff0
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 0x14
push eax
lea ecx, [ebp - 0x868]
call fcn.00401ff0
mov edi, dword [ebp - 0x884]
mov byte [ebp - 4], 0x15
add edi, 0x64
je 0x51a819
add edi, 0xffffffdc
jmp 0x51a81b
xor edi, edi
mov eax, dword [edi + 0x24]
lea ecx, [edi + 0x24]
push 0x79
call dword [eax + 0x38]
test eax, eax
jne 0x51a858
mov eax, dword [edi + 0x114]
lea ecx, [edi + 0x114]
push 0x79
call dword [eax + 0x38]
test eax, eax
jne 0x51a858
mov eax, dword [edi + 0x204]
lea ecx, [edi + 0x204]
push 0x79
call dword [eax + 0x38]
test eax, eax
je 0x51b164
mov eax, dword [eax + 0x7c]
shr eax, 2
and eax, 1
je 0x51b164
cmp dword [0x59fbf8], 0
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
je 0x51ab8b
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51a896
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a8ab
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51a8af
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0x86c], eax
mov byte [ebp - 4], 0x16
mov eax, dword [ebp - 0x888]
cmp dword [eax - 0xc], 0
jne 0x51a8e1
push dword [ebp + 0xc]
lea eax, [ebp - 0x86c]
push 0x56f9ec
push eax
call fcn.004023f0
add esp, 0xc
jmp 0x51a8f9
push eax
push dword [ebp + 0xc]
lea eax, [ebp - 0x86c]
push 0x56fab4
push eax
call fcn.004023f0
add esp, 0x10
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51a915
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a92a
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51a92e
mov ecx, edx
call esi
lea esi, [eax + 0x10]
mov dword [ebp - 0x864], esi
mov byte [ebp - 4], 0x17
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51a957
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov edi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51a96c
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51a970
mov ecx, edx
call edi
lea edi, [eax + 0x10]
mov dword [ebp - 0x880], edi
mov byte [ebp - 4], 0x18
mov eax, dword [ebp - 0x870]
cmp dword [eax - 0xc], 0
je 0x51a9a7
push dword [ebp + 0xc]
push eax
lea eax, [ebp - 0x864]
push 0x56fa88
push eax
call fcn.004023f0
mov esi, dword [ebp - 0x864]
add esp, 0x10
push esi
call ebx
test eax, eax
jne 0x51a9d8
mov eax, dword [ebp - 0x868]
cmp dword [eax - 0xc], 0
je 0x51a9d8
push dword [ebp + 0xc]
push eax
lea eax, [ebp - 0x864]
push 0x56fa5c
push eax
call fcn.004023f0
mov esi, dword [ebp - 0x864]
add esp, 0x10
mov byte [ebp - 4], 0x17
add edi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x51aa0e
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51aa0c
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
mov eax, dword [sym.imp.KERNEL32.dll_HeapFree]
call eax
jmp 0x51aa0e
call edx
mov edi, dword [ebp - 0x874]
lea ebx, [esi - 0x10]
add edi, 0xfffffff0
cmp ebx, edi
je 0x51aa57
cmp dword [edi + 0xc], 0
jl 0x51aa48
mov eax, dword [ebx]
cmp eax, dword [edi]
jne 0x51aa48
mov ecx, ebx
call fcn.004021e0
mov ecx, edi
mov ebx, eax
call fcn.00402e90
add ebx, 0x10
mov dword [ebp - 0x874], ebx
lea ebx, [esi - 0x10]
jmp 0x51aa57
push dword [esi - 0xc]
lea ecx, [ebp - 0x874]
push esi
call fcn.00402d50
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51aa73
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov edi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51aa88
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51aa8c
mov ecx, edx
call edi
add eax, 0x10
mov dword [ebp - 0x87c], eax
mov byte [ebp - 4], 0x19
lea eax, [ebp - 0x87c]
push dword [ebp + 0x10]
push 0x56fa4c
push eax
call fcn.004023f0
add esp, 0xc
lea ecx, [ebp - 0x86c]
push 0x12
push 0x56fb3c
call fcn.00402320
mov edi, dword [ebp - 0x86c]
mov ecx, dword [ebp - 0x894]
push esi
push dword [ebp + 0x10]
mov esi, dword [ebp - 0x87c]
mov edx, esi
push edi
call fcn.004df0e0
add esp, 0xc
mov byte [ebp - 4], 0x17
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x51ab1a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51ab18
mov eax, dword [ecx + 4]
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call esi
jmp 0x51ab20
call edx
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 0x16
or eax, 0xffffffff
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x51ab4e
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51ab4c
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call esi
jmp 0x51ab4e
call edx
mov byte [ebp - 4], 0x15
add edi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x51ab7f
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51ab7d
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call esi
jmp 0x51ab7f
call edx
mov esi, dword [ebp - 0x874]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
cmp dword [0x59fbfc], 0
je 0x51adf3
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51abb4
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov edi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51abc9
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51abcd
mov ecx, edx
call edi
add eax, 0x10
mov dword [ebp - 0x864], eax
mov byte [ebp - 4], 0x1a
mov eax, dword [ebp - 0x888]
cmp dword [eax - 0xc], 0
jne 0x51abff
push dword [ebp + 0xc]
lea eax, [ebp - 0x864]
push 0x56fb20
push eax
call fcn.004023f0
add esp, 0xc
jmp 0x51ac17
push eax
push dword [ebp + 0xc]
lea eax, [ebp - 0x864]
push 0x56fb00
push eax
call fcn.004023f0
add esp, 0x10
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51ac33
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov edi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51ac48
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51ac4c
mov ecx, edx
call edi
lea edi, [eax + 0x10]
mov dword [ebp - 0x86c], edi
push esi
mov byte [ebp - 4], 0x1b
call ebx
test eax, eax
je 0x51aca0
lea ecx, [esi - 0x10]
lea ebx, [edi - 0x10]
cmp ecx, ebx
je 0x51acc4
cmp dword [ebx + 0xc], 0
jl 0x51ac8f
mov eax, dword [ecx]
cmp eax, dword [ebx]
jne 0x51ac8f
call fcn.004021e0
mov ecx, ebx
mov edi, eax
call fcn.00402e90
add edi, 0x10
mov dword [ebp - 0x86c], edi
jmp 0x51acc4
push dword [esi - 0xc]
lea ecx, [ebp - 0x86c]
push esi
call fcn.00402d50
jmp 0x51acbe
push dword [ebp + 0xc]
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x86c]
push 0x56fad4
push eax
call fcn.004023f0
add esp, 0x10
mov edi, dword [ebp - 0x86c]
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51ace0
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51acf5
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51acf9
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0x87c], eax
mov byte [ebp - 4], 0x1c
lea eax, [ebp - 0x87c]
push dword [ebp + 0x10]
push 0x56fbd0
push eax
call fcn.004023f0
add esp, 0xc
lea ecx, [ebp - 0x864]
push 0x11
push 0x56fbac
call fcn.00402320
mov ebx, dword [ebp - 0x864]
mov edx, 0x56fb9c
mov esi, dword [ebp - 0x87c]
mov ecx, dword [ebp - 0x890]
push edi
push dword [ebp + 0x10]
push ebx
push esi
call fcn.004dedd0
add esp, 0x10
mov byte [ebp - 4], 0x1b
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x51ad8b
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51ad89
mov eax, dword [ecx + 4]
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call esi
jmp 0x51ad91
call edx
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 0x1a
add edi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x51adc2
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51adc0
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call esi
jmp 0x51adc2
call edx
mov byte [ebp - 4], 0x15
add ebx, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x51adf3
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51adf1
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call esi
jmp 0x51adf3
call edx
cmp dword [0x59fc00], 0
je 0x51b123
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51ae1c
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51ae31
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51ae35
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0x87c], eax
mov byte [ebp - 4], 0x1d
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51ae5e
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51ae73
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51ae77
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0x864], eax
mov byte [ebp - 4], 0x1e
mov eax, dword [ebp - 0x870]
push dword [ebp + 0xc]
cmp dword [eax - 0xc], 0
jne 0x51aed7
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x87c]
push 0x56fb64
push eax
call fcn.004023f0
mov eax, dword [0x59fb74]
add esp, 0x10
cmp dword [eax - 0xc], 0
jne 0x51aecf
lea eax, [ebp - 0x864]
push 0x56fc74
push eax
call fcn.004023f0
add esp, 8
jmp 0x51af0c
push eax
push 0x56fc38
jmp 0x51aefd
push eax
lea eax, [ebp - 0x87c]
push 0x56fc08
push eax
call fcn.004023f0
mov eax, dword [0x59fb74]
add esp, 0x10
cmp dword [eax - 0xc], 0
je 0x51af0c
push eax
push 0x56fbe0
lea eax, [ebp - 0x864]
push eax
call fcn.004023f0
add esp, 0xc
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51af28
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51af3d
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51af41
mov ecx, edx
call esi
lea edi, [eax + 0x10]
mov dword [ebp - 0x86c], edi
mov byte [ebp - 4], 0x1f
mov ebx, dword [ebp - 0x874]
push ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x51af9f
lea ecx, [ebx - 0x10]
lea esi, [edi - 0x10]
cmp ecx, esi
je 0x51afc3
cmp dword [esi + 0xc], 0
jl 0x51af8e
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x51af8e
call fcn.004021e0
mov ecx, esi
mov edi, eax
call fcn.00402e90
add edi, 0x10
mov dword [ebp - 0x86c], edi
jmp 0x51afc3
push dword [ebx - 0xc]
lea ecx, [ebp - 0x86c]
push ebx
call fcn.00402d50
jmp 0x51afbd
push dword [ebp + 0xc]
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x86c]
push 0x56fcc8
push eax
call fcn.004023f0
add esp, 0x10
mov edi, dword [ebp - 0x86c]
call fcn.00401980
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x51afdf
push 0x80004005
call fcn.00401b40
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51aff4
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x51aff8
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0x880], eax
mov byte [ebp - 4], 0x20
lea eax, [ebp - 0x880]
push dword [ebp + 0x10]
push 0x56fcb4
push eax
call fcn.004023f0
mov esi, dword [ebp - 0x880]
mov edx, 0x56fca4
mov ebx, dword [ebp - 0x87c]
mov ecx, ebx
push edi
push dword [ebp + 0x10]
push dword [ebp - 0x864]
push esi
call fcn.004dedd0
add esp, 0x1c
mov byte [ebp - 4], 0x1f
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x51b076
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b074
mov eax, dword [ecx + 4]
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call esi
jmp 0x51b07c
call edx
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 0x1e
add edi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x51b0ad
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b0ab
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call esi
jmp 0x51b0ad
call edx
mov byte [ebp - 4], 0x1d
or edi, 0xffffffff
mov ecx, dword [ebp - 0x864]
mov eax, edi
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x51b0ed
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b0e9
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
mov eax, dword [sym.imp.KERNEL32.dll_HeapFree]
call eax
jmp 0x51b0ed
mov ecx, edx
call esi
mov byte [ebp - 4], 0x15
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x51b123
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b121
mov eax, dword [ecx + 4]
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call ebx
jmp 0x51b129
call edx
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov esi, dword [ebp - 0x874]
mov byte [ebp - 4], 0x14
or eax, 0xffffffff
mov ecx, dword [ebp - 0x868]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x51b19a
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b196
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call ebx
jmp 0x51b19a
cmp dword [ebx - 0xc], 0
je 0x51b17c
push 1
push 0x56fa28
lea ecx, [ebp - 0x860]
call fcn.00402320
push 0xe
push 0x56fa08
lea ecx, [ebp - 0x860]
call fcn.00402320
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x51b12f
mov ecx, edx
call edi
mov byte [ebp - 4], 0x13
or eax, 0xffffffff
mov ecx, dword [ebp - 0x870]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x51b1d3
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b1cf
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call ebx
jmp 0x51b1d3
mov ecx, edx
call edi
mov byte [ebp - 4], 0xd
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x51b204
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b202
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call ebx
jmp 0x51b204
call edx
mov edi, 1
mov esi, dword [ebp - 0x878]
mov ecx, dword [0x59fc08]
lea eax, [ebp - 0x868]
push eax
push dword [ebp - 0x860]
mov dword [ebp - 0x868], 0
cmp dword [ecx - 0xc], 0
jne 0x51b240
mov edx, 0x56fc8c
mov ecx, edi
call fcn.004c7c30
jmp 0x51b24a
mov edx, 0x56fcf4
call fcn.004c7770
add esp, 8
lea ecx, [ebp - 0x85c]
mov edi, eax
call fcn.00429390
mov ebx, dword [ebp - 0x884]
mov byte [ebp - 4], 0x21
mov dword [ebp - 0x85c], 0x64
mov dword [ebp - 0x854], 9
mov eax, dword [ebx + 0x490]
mov dword [ebp - 0x7c4], eax
mov eax, dword [0x59fadc]
mov dword [ebp - 0x744], eax
mov eax, dword [ebx + 0x494]
mov dword [ebp - 0x740], eax
mov eax, dword [ebx + 0x498]
mov dword [ebp - 0x73c], eax
mov eax, dword [0x59fae0]
mov dword [ebp - 0x72c], eax
mov eax, dword [ebx + 0x4a0]
mov dword [ebp - 0x728], eax
lea eax, [ebx + 0x4c0]
push eax
mov dword [ebp - 0x858], edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov dword [ebp - 0x724], eax
mov eax, dword [ebx + 0x478]
mov dword [ebp - 0x868], eax
test eax, eax
je 0x51b348
mov ecx, eax
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x51b2f0
sub ecx, edx
sar ecx, 1
inc ecx
cmp ecx, 0x3fffffff
jg 0x51b348
lea ebx, [ecx + ecx]
mov eax, ebx
call fcn.0049bc00
mov edi, esp
test edi, edi
je 0x51b342
push 0
push 0
push ebx
push edi
push 0xffffffffffffffff
push dword [ebp - 0x868]
mov byte [edi], 0
push 0
push 3
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ebx, dword [ebp - 0x884]
xor ecx, ecx
test eax, eax
cmove edi, ecx
jmp 0x51b34a
mov ebx, dword [ebp - 0x884]
xor edi, edi
cmp byte [edi], 0
jne 0x51b353
xor ecx, ecx
jmp 0x51b361
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x51b358
sub ecx, edx
push ecx
push edi
lea ecx, [ebp - 0x7bc]
call fcn.00406560
push ecx
lea eax, [ebp - 0x85c]
push eax
call fcn.0044c609
mov ecx, eax
call fcn.0042af00
lea ecx, [ebp - 0x85c]
mov byte [ebp - 4], 0xd
call fcn.0042a2e0
mov ecx, ebx
call fcn.00510380
push 0x2710
push 0x2710
mov ecx, ebx
mov dword [ebx + 0x400], 0x2710
call fcn.0050fd60
mov byte [ebp - 4], 0xb
or eax, 0xffffffff
mov ecx, dword [ebp - 0x888]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x51b3f1
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b3ed
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
mov eax, dword [sym.imp.KERNEL32.dll_HeapFree]
call eax
jmp 0x51b3f1
mov ecx, edx
call edi
mov ebx, dword [ebp - 0x890]
mov byte [ebp - 4], 0xa
or eax, 0xffffffff
mov ecx, dword [ebp - 0x88c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x51b436
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b432
mov eax, dword [edx + 4]
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call edi
jmp 0x51b43c
mov ecx, edx
call edi
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 9
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x51b46d
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b46b
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call edi
jmp 0x51b46d
call edx
mov byte [ebp - 4], 8
add ebx, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x51b49e
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x51b49c
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call edi
jmp 0x51b49e
call edx
lea ecx, [ebp - 0x860]
call fcn.00402ed0
lea ecx, [ebp - 0x894]
call fcn.00402ed0
mov eax, dword [ebp - 0x8ac]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
je 0x51b4c7
push eax
call esi
mov eax, dword [ebp - 0x8a0]
test eax, eax
je 0x51b4d4
push eax
call esi
lea ecx, [ebp + 8]
call fcn.00402ed0
lea ecx, [ebp + 0xc]
call fcn.00402ed0
lea ecx, [ebp + 0x10]
call fcn.00402ed0
lea ecx, [ebp + 0x14]
call fcn.00402ed0
lea ecx, [ebp + 0x18]
call fcn.00402ed0
lea esp, [ebp - 0x8bc]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0049aa22
mov esp, ebp
pop ebp
ret 0x14