Function at 0x10082490
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x77c
mov eax, dword [0x102519c8]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, ecx
push edi
mov dword [ebp - 0x734], esi
cmp dword [esi + 4], 0
je 0x100824c7
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.101f99c6
mov esp, ebp
pop ebp
ret
mov eax, dword [0x1025b450]
mov dword [ebp - 0x628], str.SoftwareMicrosoftWindowsCurrentVersionExplorerDesktopNameSpace_
mov dword [ebp - 0x624], str.SoftwareMicrosoftWindowsCurrentVersionExplorerMyComputerNameSpace_
mov dword [ebp - 0x620], str.SoftwareMicrosoftWindowsCurrentVersionExplorerControlPanelNameSpace_
cmp eax, 0xffffffff
je 0x1008254d
cmp dword [0x1025b454], 0xffffffff
je 0x1008254d
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov dword [ebp - 0x73c], 0
mov dword [ebp - 0x754], ecx
test ecx, ecx
jne 0x10082557
mov ecx, dword [0x1025b458]
test ecx, ecx
je 0x10082557
lea eax, [ebp - 0x73c]
push eax
call ecx
mov esi, dword [sym.imp.KERNEL32.dll_TlsSetValue]
push eax
push dword [0x1025b450]
call esi
push dword [ebp - 0x73c]
push dword [0x1025b454]
call esi
mov esi, dword [ebp - 0x734]
jmp 0x10082557
mov dword [ebp - 0x754], 0
xor ebx, ebx
mov dword [ebp - 0x738], ebx
nop
lea ecx, [ebp - 0x730]
mov dword [ebp - 0x730], 0
mov dword [ebp - 0x72c], 0
call fcn.1003cef0
mov ebx, dword [ebp + ebx*4 - 0x628]
mov ecx, esi
mov dword [ebp - 0x730], eax
lea eax, [ebp - 0x730]
push eax
push 0x100
push ebx
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.1007dc50
lea eax, [ebp - 0x730]
mov ecx, esi
push eax
push 0x100
push ebx
push SysReAllocString
call fcn.1007dc50
mov ebx, dword [ebp - 0x730]
mov edi, dword [ebx]
mov dword [ebp - 0x740], edi
mov dword [ebp - 0x758], edi
cmp edi, ebx
je 0x100838eb
mov esi, dword [0x1025b434]
mov dword [ebp - 0x750], 0
test esi, esi
je 0x100838c6
mov eax, dword [esi]
lea ecx, [ebp - 0x750]
push ecx
push 1
push dword [edi + 0x14]
push esi
call dword [eax + 0x3c]
mov eax, dword [ebp - 0x750]
test eax, eax
je 0x100838ba
mov dword [ebp - 0x74c], 0
lea edx, [ebp - 0x74c]
mov dword [ebp - 0x73c], 0
mov dword [ebp - 0x724], 0
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x14]
mov eax, dword [ebp - 0x750]
lea edx, [ebp - 0x724]
push edx
lea edx, [ebp - 0x73c]
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov esi, dword [ebp - 0x73c]
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x728]
push esi
mov dword [ebp - 0x728], eax
call fcn.10023e80
test al, al
jne 0x100826ac
test esi, esi
jne 0x1008268a
xor eax, eax
jmp 0x1008269f
mov eax, esi
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x10082690
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [ebp - 0x728]
call fcn.10003740
mov esi, dword [ebp - 0x728]
mov dword [ebp - 0x720], esi
mov eax, dword [esi - 0xc]
test eax, eax
je 0x1008276f
js 0x100826e4
push 0x10202944
push esi
call sub.msvcrt.dll_wcsstr
add esp, 8
test eax, eax
je 0x100826e4
sub eax, esi
sar eax, 1
cmp eax, 0xffffffff
jne 0x1008276f
cmp dword [esi - 0xc], 0
jl 0x10082705
push 0x102054a0
push esi
call sub.msvcrt.dll_wcsstr
add esp, 8
test eax, eax
je 0x10082705
sub eax, esi
sar eax, 1
cmp eax, 0xffffffff
jne 0x1008276f
push 0x410
lea eax, [ebp - 0x61c]
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0x61c]
push 0
push eax
push 0x208
push 0
push esi
push 0
call dword [sym.imp.KERNEL32.dll_SearchPathW]
test eax, eax
je 0x1008276f
lea ecx, [ebp - 0x61c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10082741
sub ecx, edx
lea eax, [ebp - 0x61c]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x728]
call fcn.10003740
mov eax, dword [ebp - 0x728]
mov dword [ebp - 0x720], eax
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x748], eax
mov eax, dword [ebp - 0x738]
inc eax
push eax
lea eax, [ebp - 0x748]
push 0x10204700
push eax
call fcn.10002cb0
mov ecx, dword [ebp - 0x724]
add esp, 0xc
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x708], ecx
mov ecx, dword [ebp - 0x74c]
mov dword [ebp - 0x710], ecx
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x100827cb
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x100827d7
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
lea edi, [eax + 0x10]
mov eax, dword [ebp - 0x740]
mov dword [ebp - 0x718], edi
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x714], ecx
mov dword [ebp - 0x71c], eax
mov ecx, dword [ecx - 0xc]
mov esi, dword [eax - 0xc]
mov eax, dword [edi - 8]
mov dword [ebp - 0x744], ecx
lea ebx, [esi + ecx]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, ebx
or ecx, eax
jge 0x10082831
push ebx
lea ecx, [ebp - 0x718]
call fcn.10003310
mov edi, dword [ebp - 0x718]
add esi, esi
push esi
push dword [ebp - 0x71c]
push esi
push edi
call fcn.10004510
mov eax, dword [ebp - 0x744]
add eax, eax
push eax
push dword [ebp - 0x714]
push eax
lea eax, [esi + edi]
push eax
call fcn.10004510
xor eax, eax
mov dword [edi - 0xc], ebx
mov word [edi + ebx*2], ax
add esp, 0x20
mov ecx, dword [edi - 0x10]
lea eax, [edi - 0x10]
mov dword [ebp - 0x70c], eax
test ecx, ecx
je 0x1008287f
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x1008288b
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
lea esi, [eax + 0x10]
mov eax, dword [ebp - 0x710]
mov dword [ebp - 0x718], esi
test eax, eax
jne 0x100828a9
xor ecx, ecx
jmp 0x100828bf
mov ecx, eax
lea edx, [ecx + 2]
mov edi, edi
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100828b0
sub ecx, edx
sar ecx, 1
mov ebx, dword [edi - 0xc]
mov eax, dword [esi - 8]
mov dword [ebp - 0x71c], ecx
lea edx, [ecx + ebx]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, edx
or ecx, eax
mov dword [ebp - 0x714], edx
jge 0x100828f4
push edx
lea ecx, [ebp - 0x718]
call fcn.10003310
mov esi, dword [ebp - 0x718]
add ebx, ebx
push ebx
push edi
push ebx
push esi
call fcn.10004510
mov eax, dword [ebp - 0x71c]
mov ecx, dword [ebp - 0x710]
add eax, eax
push eax
push ecx
push eax
lea eax, [ebx + esi]
push eax
call fcn.10004510
mov eax, dword [ebp - 0x714]
xor ecx, ecx
mov dword [esi - 0xc], eax
add esp, 0x20
mov word [esi + eax*2], cx
lea eax, [esi - 0x10]
mov ecx, dword [eax]
mov dword [ebp - 0x71c], eax
test ecx, ecx
je 0x10082943
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x1008294f
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
mov ebx, dword [esi - 0xc]
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov dword [ebp - 0x744], ebx
lea edi, [eax + 0x10]
mov eax, dword [ebp - 0x720]
mov dword [ebp - 0x710], edi
mov eax, dword [eax - 0xc]
mov dword [ebp - 0x714], eax
lea edx, [ebx + eax]
mov eax, dword [edi - 8]
sub eax, edx
or ecx, eax
jge 0x1008299d
push edx
lea ecx, [ebp - 0x710]
call fcn.10003310
mov edi, dword [ebp - 0x710]
add ebx, ebx
push ebx
push esi
push ebx
push edi
call fcn.10004510
mov esi, dword [ebp - 0x714]
lea eax, [esi + esi]
push eax
push dword [ebp - 0x720]
push eax
lea eax, [ebx + edi]
push eax
call fcn.10004510
mov eax, dword [ebp - 0x744]
xor ecx, ecx
add eax, esi
add esp, 0x20
mov dword [edi - 0xc], eax
mov word [edi + eax*2], cx
lea eax, [edi - 0x10]
mov ecx, dword [eax]
mov dword [ebp - 0x744], eax
test ecx, ecx
je 0x100829ee
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x100829fa
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
lea esi, [eax + 0x10]
mov eax, dword [ebp - 0x708]
mov dword [ebp - 0x710], esi
test eax, eax
jne 0x10082a18
xor ecx, ecx
jmp 0x10082a2f
mov ecx, eax
lea edx, [ecx + 2]
lea ecx, [ecx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10082a20
sub ecx, edx
sar ecx, 1
mov ebx, dword [edi - 0xc]
mov eax, dword [esi - 8]
mov dword [ebp - 0x718], ecx
lea edx, [ecx + ebx]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, edx
or ecx, eax
mov dword [ebp - 0x714], edx
jge 0x10082a64
push edx
lea ecx, [ebp - 0x710]
call fcn.10003310
mov esi, dword [ebp - 0x710]
add ebx, ebx
push ebx
push edi
push ebx
push esi
call fcn.10004510
mov eax, dword [ebp - 0x718]
mov ecx, dword [ebp - 0x708]
add eax, eax
push eax
push ecx
push eax
lea eax, [ebx + esi]
push eax
call fcn.10004510
mov eax, dword [ebp - 0x714]
xor ecx, ecx
mov dword [esi - 0xc], eax
add esp, 0x20
mov word [esi + eax*2], cx
mov ecx, dword [esi - 0x10]
test ecx, ecx
je 0x10082aab
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x10082ab7
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
mov ebx, dword [esi - 0xc]
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov dword [ebp - 0x714], ebx
lea edi, [eax + 0x10]
mov eax, dword [ebp - 0x748]
mov dword [ebp - 0x708], edi
mov eax, dword [eax - 0xc]
mov dword [ebp - 0x710], eax
lea edx, [ebx + eax]
mov eax, dword [edi - 8]
sub eax, edx
or ecx, eax
jge 0x10082b05
push edx
lea ecx, [ebp - 0x708]
call fcn.10003310
mov edi, dword [ebp - 0x708]
add ebx, ebx
push ebx
push esi
push ebx
push edi
call fcn.10004510
mov eax, dword [ebp - 0x710]
add eax, eax
push eax
push dword [ebp - 0x748]
push eax
lea eax, [ebx + edi]
push eax
call fcn.10004510
mov eax, dword [ebp - 0x714]
xor ecx, ecx
add eax, dword [ebp - 0x710]
add esp, 0x20
mov dword [edi - 0xc], eax
mov word [edi + eax*2], cx
xor eax, eax
mov dword [ebp - 0x630], ecx
mov ecx, edi
mov dword [ebp - 0x62c], 7
mov word [ebp - 0x640], ax
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10082b60
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x640]
call fcn.100070c0
lea eax, [ebp - 0x640]
push eax
lea eax, [ebp - 0x658]
push 0x2000
push eax
call fcn.10091ab0
mov edx, dword [ebp - 0x62c]
add esp, 0xc
cmp edx, 8
jb 0x10082bd7
mov ecx, dword [ebp - 0x640]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x10082bcd
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10083992
push edx
push ecx
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
add esp, 8
xor eax, eax
mov dword [ebp - 0x630], 0
mov word [ebp - 0x640], ax
add edi, 0xfffffff0
mov dword [ebp - 0x62c], 7
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x10082c0c
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
or eax, 0xffffffff
lea edx, [esi - 0x10]
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10082c24
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x744]
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10082c3f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x71c]
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10082c5a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x70c]
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10082c75
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 5
xor eax, eax
mov dword [ebp - 0x630], 0
push str.clsid
lea ecx, [ebp - 0x640]
mov dword [ebp - 0x62c], 7
mov word [ebp - 0x640], ax
call fcn.100070c0
mov edi, dword [ebp - 0x740]
mov eax, dword [edi + 0x14]
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x10082cbd
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x10082cc9
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
mov ecx, 1
sub ecx, dword [eax + 0xc]
lea esi, [eax + 0x10]
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x70c], eax
mov dword [ebp - 0x708], esi
mov ebx, dword [eax - 0xc]
mov eax, dword [esi - 8]
lea edi, [ebx + 6]
sub eax, edi
or ecx, eax
jge 0x10082d0b
push edi
lea ecx, [ebp - 0x708]
call fcn.10003310
mov esi, dword [ebp - 0x708]
test esi, esi
jne 0x10082d21
call sub.msvcrt.dll__errno
mov dword [eax], 0x16
call fcn.101e6c20
jmp 0x10082d38
mov eax, dword [str.clsid_]
mov dword [esi], eax
mov eax, dword [0x1020be28]
mov dword [esi + 4], eax
mov eax, dword [0x1020be2c]
mov dword [esi + 8], eax
lea eax, [ebx + ebx]
push eax
push dword [ebp - 0x70c]
push eax
lea eax, [esi + 0xc]
push eax
call fcn.10004510
mov ebx, dword [ebp - 0x734]
xor eax, eax
add esp, 0x10
mov dword [esi - 0xc], edi
mov word [esi + edi*2], ax
add ebx, 8
lea eax, [ebp - 0x658]
mov ecx, ebx
push eax
call fcn.10079970
mov edi, eax
cmp edi, dword [ebx]
je 0x10082dad
cmp dword [edi + 0x24], 0x10
lea edx, [edi + 0x10]
jb 0x10082d81
mov edx, dword [edi + 0x10]
cmp dword [ebp - 0x644], 0x10
lea ecx, [ebp - 0x658]
jb 0x10082d96
mov ecx, dword [ebp - 0x658]
push dword [edi + 0x20]
push edx
push dword [ebp - 0x648]
push ecx
call fcn.1000b170
add esp, 0x10
test eax, eax
jns 0x10082ded
lea eax, [ebp - 0x658]
mov ecx, ebx
mov dword [ebp - 0x70c], eax
lea eax, [ebp - 0x701]
push eax
lea eax, [ebp - 0x70c]
push eax
push 0x1020abd2
call fcn.10076830
push eax
add eax, 0x10
mov ecx, ebx
push eax
push edi
lea eax, [ebp - 0x774]
push eax
call fcn.100787f0
mov edi, dword [ebp - 0x774]
lea eax, [ebp - 0x640]
lea ebx, [edi + 0x28]
push eax
mov ecx, ebx
call fcn.1001fc60
mov edi, eax
cmp edi, dword [ebx]
je 0x10082e3c
cmp dword [edi + 0x24], 8
lea edx, [edi + 0x10]
jb 0x10082e10
mov edx, dword [edi + 0x10]
cmp dword [ebp - 0x62c], 8
lea ecx, [ebp - 0x640]
jb 0x10082e25
mov ecx, dword [ebp - 0x640]
push dword [edi + 0x20]
push edx
push dword [ebp - 0x630]
push ecx
call fcn.1001fdf0
add esp, 0x10
test eax, eax
jns 0x10082e7c
lea eax, [ebp - 0x640]
mov ecx, ebx
mov dword [ebp - 0x70c], eax
lea eax, [ebp - 0x701]
push eax
lea eax, [ebp - 0x70c]
push eax
push 0x1020abd2
call fcn.10076560
push eax
add eax, 0x10
mov ecx, ebx
push eax
push edi
lea eax, [ebp - 0x75c]
push eax
call fcn.1005eca0
mov edi, dword [ebp - 0x75c]
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10082e81
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [edi + 0x28]
call fcn.100070c0
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x10082eb2
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x62c]
cmp edx, 8
jb 0x10082ef2
mov ecx, dword [ebp - 0x640]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x10082ee8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10083992
push edx
push ecx
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
add esp, 8
push 9
xor eax, eax
mov dword [ebp - 0x630], 0
push str.namespace
lea ecx, [ebp - 0x640]
mov dword [ebp - 0x62c], 7
mov word [ebp - 0x640], ax
call fcn.100070c0
mov edi, dword [ebp - 0x740]
mov eax, dword [edi + 0x10]
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x10082f3a
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x10082f46
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
mov ebx, dword [ebp - 0x738]
lea esi, [eax + 0x10]
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x714], eax
mov dword [ebp - 0x708], esi
mov edx, dword [eax - 0xc]
mov eax, dword [ebp + ebx*4 - 0x628]
mov dword [ebp - 0x70c], edx
test eax, eax
jne 0x10082f7d
xor edi, edi
jmp 0x10082f91
mov edi, eax
lea ecx, [edi + 2]
mov ax, word [edi]
add edi, 2
test ax, ax
jne 0x10082f82
sub edi, ecx
sar edi, 1
mov eax, dword [esi - 8]
lea ebx, [edi + edx]
mov ecx, 1
sub eax, ebx
sub ecx, dword [esi - 4]
or ecx, eax
jge 0x10082fb7
push ebx
lea ecx, [ebp - 0x708]
call fcn.10003310
mov esi, dword [ebp - 0x708]
mov eax, dword [ebp - 0x738]
add edi, edi
push edi
push dword [ebp + eax*4 - 0x628]
push edi
push esi
call fcn.10004510
mov eax, dword [ebp - 0x70c]
add eax, eax
push eax
push dword [ebp - 0x714]
push eax
lea eax, [edi + esi]
push eax
call fcn.10004510
mov dword [esi - 0xc], ebx
xor eax, eax
mov word [esi + ebx*2], ax
add esp, 0x20
mov ebx, dword [ebp - 0x734]
lea eax, [ebp - 0x658]
add ebx, 8
mov ecx, ebx
push eax
call fcn.10079970
mov edi, eax
cmp edi, dword [ebx]
je 0x10083048
cmp dword [edi + 0x24], 0x10
lea edx, [edi + 0x10]
jb 0x1008301c
mov edx, dword [edi + 0x10]
cmp dword [ebp - 0x644], 0x10
lea ecx, [ebp - 0x658]
jb 0x10083031
mov ecx, dword [ebp - 0x658]
push dword [edi + 0x20]
push edx
push dword [ebp - 0x648]
push ecx
call fcn.1000b170
add esp, 0x10
test eax, eax
jns 0x10083088
lea eax, [ebp - 0x658]
mov ecx, ebx
mov dword [ebp - 0x70c], eax
lea eax, [ebp - 0x701]
push eax
lea eax, [ebp - 0x70c]
push eax
push 0x1020abd2
call fcn.10076830
push eax
add eax, 0x10
mov ecx, ebx
push eax
push edi
lea eax, [ebp - 0x760]
push eax
call fcn.100787f0
mov edi, dword [ebp - 0x760]
lea eax, [ebp - 0x640]
lea ebx, [edi + 0x28]
push eax
mov ecx, ebx
call fcn.1001fc60
mov edi, eax
cmp edi, dword [ebx]
je 0x100830d7
cmp dword [edi + 0x24], 8
lea edx, [edi + 0x10]
jb 0x100830ab
mov edx, dword [edi + 0x10]
cmp dword [ebp - 0x62c], 8
lea ecx, [ebp - 0x640]
jb 0x100830c0
mov ecx, dword [ebp - 0x640]
push dword [edi + 0x20]
push edx
push dword [ebp - 0x630]
push ecx
call fcn.1001fdf0
add esp, 0x10
test eax, eax
jns 0x10083117
lea eax, [ebp - 0x640]
mov ecx, ebx
mov dword [ebp - 0x70c], eax
lea eax, [ebp - 0x701]
push eax
lea eax, [ebp - 0x70c]
push eax
push 0x1020abd2
call fcn.10076560
push eax
add eax, 0x10
mov ecx, ebx
push eax
push edi
lea eax, [ebp - 0x764]
push eax
call fcn.1005eca0
mov edi, dword [ebp - 0x764]
mov ecx, esi
lea edx, [ecx + 2]
lea esp, [esp]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10083120
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [edi + 0x28]
call fcn.100070c0
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x10083151
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x640]
call fcn.10005250
push 0xf
xor eax, eax
mov dword [ebp - 0x630], 0
push str.clsid_file_path
lea ecx, [ebp - 0x640]
mov dword [ebp - 0x62c], 7
mov word [ebp - 0x640], ax
call fcn.100070c0
mov edi, dword [ebp - 0x720]
xor eax, eax
mov ecx, edi
mov dword [ebp - 0x660], 0
mov dword [ebp - 0x65c], 7
mov word [ebp - 0x670], ax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100831b3
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x670]
call fcn.100070c0
mov ebx, dword [ebp - 0x734]
lea eax, [ebp - 0x658]
add ebx, 8
push eax
mov ecx, ebx
call fcn.10079970
mov esi, eax
cmp esi, dword [ebx]
je 0x10083224
cmp dword [esi + 0x24], 0x10
lea edx, [esi + 0x10]
jb 0x100831f8
mov edx, dword [esi + 0x10]
cmp dword [ebp - 0x644], 0x10
lea ecx, [ebp - 0x658]
jb 0x1008320d
mov ecx, dword [ebp - 0x658]
push dword [esi + 0x20]
push edx
push dword [ebp - 0x648]
push ecx
call fcn.1000b170
add esp, 0x10
test eax, eax
jns 0x10083264
lea eax, [ebp - 0x658]
mov ecx, ebx
mov dword [ebp - 0x70c], eax
lea eax, [ebp - 0x701]
push eax
lea eax, [ebp - 0x70c]
push eax
push 0x1020abd2
call fcn.10076830
push eax
add eax, 0x10
mov ecx, ebx
push eax
push esi
lea eax, [ebp - 0x768]
push eax
call fcn.100787f0
mov esi, dword [ebp - 0x768]
lea eax, [ebp - 0x640]
lea ebx, [esi + 0x28]
push eax
mov ecx, ebx
call fcn.1001fc60
mov esi, eax
cmp esi, dword [ebx]
je 0x100832b3
cmp dword [esi + 0x24], 8
lea edx, [esi + 0x10]
jb 0x10083287
mov edx, dword [esi + 0x10]
cmp dword [ebp - 0x62c], 8
lea ecx, [ebp - 0x640]
jb 0x1008329c
mov ecx, dword [ebp - 0x640]
push dword [esi + 0x20]
push edx
push dword [ebp - 0x630]
push ecx
call fcn.1001fdf0
add esp, 0x10
test eax, eax
jns 0x100832f3
lea eax, [ebp - 0x640]
mov ecx, ebx
mov dword [ebp - 0x70c], eax
lea eax, [ebp - 0x701]
push eax
lea eax, [ebp - 0x70c]
push eax
push 0x1020abd2
call fcn.10076560
push eax
add eax, 0x10
mov ecx, ebx
push eax
push esi
lea eax, [ebp - 0x76c]
push eax
call fcn.1005eca0
mov esi, dword [ebp - 0x76c]
add esi, 0x28
lea eax, [ebp - 0x670]
cmp esi, eax
je 0x10083359
mov ecx, esi
call fcn.10005250
mov eax, dword [ebp - 0x670]
mov dword [esi], eax
mov eax, dword [ebp - 0x66c]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x668]
mov dword [esi + 8], eax
mov eax, dword [ebp - 0x664]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x660]
mov dword [esi + 0x10], eax
mov eax, dword [ebp - 0x65c]
mov dword [esi + 0x14], eax
xor eax, eax
mov dword [ebp - 0x660], 0
mov dword [ebp - 0x65c], 7
mov word [ebp - 0x670], ax
lea ecx, [ebp - 0x670]
call fcn.10005250
lea ecx, [ebp - 0x640]
call fcn.10005250
lea eax, [edi - 0x10]
push eax
call fcn.10002a60
push 4
push 0x10205260
lea esi, [eax + 0x10]
push esi
call sub.msvcrt.dll_wcsncmp
add esp, 0x10
test eax, eax
je 0x100833ca
push 2
push 0x10205498
push esi
call sub.msvcrt.dll_wcsncmp
add esp, 0xc
test eax, eax
jne 0x100833ca
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x100833bb
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 0x71c], 3
jmp 0x1008362f
push esi
call fcn.1000aa00
add esp, 4
test eax, eax
je 0x100833fe
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x100833ef
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 0x71c], 1
jmp 0x1008362f
cmp dword [esi - 0xc], 0
jl 0x1008396b
push 0x1020c05c
push esi
call sub.msvcrt.dll_wcsstr
add esp, 8
test eax, eax
je 0x1008396b
sub eax, esi
sar eax, 1
cmp eax, 1
jne 0x1008396b
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x10083443
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
push 0x10202940
mov dword [ebp - 0x71c], 2
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
push 0
push 0x400
mov esi, eax
push esi
push dword [ebp - 0x724]
call sub.OLEAUT32.dll_VarR8Pow
push esi
mov ebx, eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp ebx, 1
je 0x1008362f
mov esi, dword [ebp - 0x724]
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x718]
push esi
mov dword [ebp - 0x718], eax
call fcn.10023e80
test al, al
jne 0x100834b6
push esi
lea ecx, [ebp - 0x718]
call fcn.10008170
mov ecx, dword [edi - 0x10]
lea ebx, [edi - 0x10]
test ecx, ecx
je 0x100834c9
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x100834d5
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
push 1
push 0x10205494
push dword [edi - 0xc]
add eax, 0x10
mov dword [ebp - 0x708], eax
lea eax, [ebp - 0x708]
push edi
push eax
call fcn.1007e160
mov esi, dword [ebp - 0x708]
add esp, 0x14
mov ecx, dword [esi - 0x10]
lea eax, [esi - 0x10]
mov dword [ebp - 0x714], eax
test ecx, ecx
je 0x1008351e
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x1008352a
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
mov edi, dword [ebp - 0x718]
add eax, 0x10
mov dword [ebp - 0x708], eax
lea eax, [ebp - 0x708]
push dword [edi - 0xc]
push edi
push dword [esi - 0xc]
push esi
push eax
call fcn.1007e160
mov eax, dword [ebp - 0x708]
add esp, 0x14
lea esi, [eax - 0x10]
cmp esi, ebx
je 0x100835bc
cmp dword [ebx + 0xc], 0
jl 0x100835a1
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x100835a1
push esi
call fcn.10002a60
add esp, 4
mov dword [ebp - 0x70c], eax
or ecx, 0xffffffff
lea edx, [ebx + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x1008359c
mov ecx, dword [ebx]
push ebx
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x70c]
add eax, 0x10
jmp 0x100835b6
push dword [eax - 0xc]
lea ecx, [ebp - 0x728]
push eax
call fcn.10003740
mov eax, dword [ebp - 0x728]
mov dword [ebp - 0x720], eax
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x100835d1
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x714]
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x100835ec
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x10083604
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x724]
cmp eax, 0x10202940
je 0x10083629
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
push 0x10202940
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebp - 0x724], eax
mov edi, dword [ebp - 0x720]
mov eax, dword [0x1025be28]
cmp dword [eax - 0xc], 0
jne 0x100836ce
push 0x208
lea eax, [ebp - 0x20c]
mov dword [ebp - 0x770], 7
push 0
push eax
call sub.msvcrt.dll_memset
push 0x20119
push 0x208
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x770]
push eax
push 0x1020acf4
push str.SYSTEMSetup
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.10176930
lea ecx, [ebp - 0x20c]
add esp, 0x28
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10083693
sub ecx, edx
lea eax, [ebp - 0x20c]
sar ecx, 1
push ecx
push eax
mov ecx, 0x1025be28
call fcn.10003740
push 0xa
push 0xa
mov ecx, 0x1025be28
call fcn.10086e10
mov ecx, eax
call fcn.10086d90
mov eax, dword [0x1025be28]
add eax, 0xfffffff0
push eax
call fcn.10002a60
push dword [ebp - 0x724]
lea esi, [eax + 0x10]
lea eax, [ebp - 0x6b8]
push eax
call fcn.100987c0
add esp, 0xc
mov dword [ebp - 0x708], eax
cmp dword [eax + 0x14], 8
jb 0x10083703
mov eax, dword [eax]
mov dword [ebp - 0x708], eax
lea eax, [ebp - 0x6d0]
push edi
push eax
call fcn.100987c0
mov ebx, eax
add esp, 8
cmp dword [ebx + 0x14], 8
jb 0x1008371d
mov ebx, dword [ebx]
push dword [ebp - 0x74c]
lea eax, [ebp - 0x6e8]
push eax
call fcn.100987c0
add esp, 8
mov dword [ebp - 0x710], eax
cmp dword [eax + 0x14], 8
jb 0x10083746
mov eax, dword [eax]
mov dword [ebp - 0x710], eax
mov ecx, dword [ebp - 0x740]
lea eax, [ebp - 0x700]
push dword [ecx + 0x14]
push eax
call fcn.100987c0
add esp, 8
cmp dword [eax + 0x14], 8
jb 0x10083766
mov eax, dword [eax]
mov ecx, dword [ebp - 0x738]
push esi
push dword [ebp - 0x71c]
inc ecx
push dword [ebp - 0x708]
push ebx
push ecx
push dword [ebp - 0x710]
push eax
push 0x5a
push 0x5a
lea eax, [ebp - 0x640]
push str._type_:_d__rule_group_id_:__d___plugin_name_:_class_id_:__s___name_:__s__t_t_t_t_t_t_t_t_t_t_t_t_t___ns_from_:__d__t_t_t_t_t_t_t_t_t_t_t_t_t___ns_exec_:__s__t_t_t_t_t_t_t_t_t_t_t_t_t___ns_arg_:__s__t_t_t_t_t_t_t_t_t_t_t_t_t___ns_type_:__d__t_t_t_t_t_t_t_t_t_t_t_t_t___exts_:__key_:_sys_clonetag___value_:__s__
push eax
call fcn.10098240
add esp, 0x2c
lea ecx, [ebp - 0x6a0]
mov ebx, eax
lea eax, [ebp - 0x658]
push eax
call fcn.1000b980
push ebx
lea ecx, [ebp - 0x688]
call fcn.10032870
mov ecx, dword [ebp - 0x734]
lea eax, [ebp - 0x6a0]
push eax
call fcn.1001d7b0
mov ecx, dword [ebp - 0x734]
push eax
add eax, 0x10
push eax
push 0
lea eax, [ebp - 0x77c]
push eax
call fcn.1001f180
lea ecx, [ebp - 0x688]
call fcn.10005250
lea ecx, [ebp - 0x6a0]
call fcn.1000c070
lea ecx, [ebp - 0x640]
call fcn.10005250
lea ecx, [ebp - 0x700]
call fcn.10005250
lea ecx, [ebp - 0x6e8]
call fcn.10005250
lea ecx, [ebp - 0x6d0]
call fcn.10005250
lea ecx, [ebp - 0x6b8]
call fcn.10005250
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x1008384b
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x658]
call fcn.1000c070
mov edx, dword [ebp - 0x748]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10083874
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x1008388c
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
push dword [ebp - 0x724]
mov ebx, dword [sym.imp.OLEAUT32.dll_SysStringLen]
call ebx
push dword [ebp - 0x73c]
call ebx
push dword [ebp - 0x74c]
call ebx
mov eax, dword [ebp - 0x750]
test eax, eax
je 0x100838ba
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov esi, dword [0x1025b434]
mov ebx, dword [ebp - 0x730]
lea ecx, [ebp - 0x758]
call fcn.10014d60
mov edi, dword [ebp - 0x758]
mov dword [ebp - 0x740], edi
cmp edi, ebx
jne 0x100825e0
mov esi, dword [ebp - 0x734]
push dword [ebx + 4]
lea ecx, [ebp - 0x730]
call fcn.10087b30
mov eax, dword [ebp - 0x730]
push 0x18
mov dword [eax + 4], ebx
mov eax, dword [ebp - 0x730]
mov dword [eax], ebx
mov eax, dword [ebp - 0x730]
mov dword [eax + 8], ebx
push dword [ebp - 0x730]
mov dword [ebp - 0x72c], 0
call fcn.1001da10
mov ebx, dword [ebp - 0x738]
add esp, 8
inc ebx
mov dword [ebp - 0x738], ebx
cmp ebx, 3
jb 0x10082560
push dword [ebp - 0x754]
mov ecx, 0x1025b450
call fcn.10008cd0
cmp dword [esi + 4], 0
mov ecx, dword [ebp - 4]
pop edi
setne al
xor ecx, ebp
pop esi
pop ebx
call fcn.101f99c6
mov esp, ebp
pop ebp
ret
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x10083983
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 0x71c], 0
jmp 0x1008362f
call fcn.101e6c40
int3