Function at 0x10024710
Capabilities:
Accept command line arguments
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1010d1c3
mov eax, dword fs:[0]
push eax
sub esp, 0x654
mov eax, dword [0x1015a4dc]
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 eax, dword [ebp + 0x10]
mov dword [ebp - 0x63c], eax
mov dword [ebp - 0x644], 0
call dword [sym.imp.KERNEL32.dll_GetTickCount64]
push 0
mov dword [0x10161a28], eax
mov dword [0x10161a2c], edx
call dword [sym.imp.ole32.dll_CoInitialize]
push 0
push 0
push 0
push 0
call dword [sym.imp.USER32.dll_DefWindowProcW]
lea eax, [ebp - 0x650]
mov dword [ebp - 0x650], 8
push eax
mov dword [ebp - 0x64c], 4
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
push 0x1011d2ac
push 0
call fcn.100c338a
add esp, 8
call fcn.10037460
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
push 0x1011d2b0
call fcn.10028b70
add esp, 8
lea ecx, [ebp - 0x658]
xor ebx, ebx
call fcn.10006d50
mov dword [ebp - 4], ebx
call fcn.10023fc0
mov ecx, eax
call fcn.100600c0
mov eax, dword [0x10161a0c]
test al, 1
jne 0x1002480c
or eax, 1
mov dword [0x10161a0c], eax
mov ecx, 0x10161a08
mov byte [ebp - 4], 1
call fcn.10032270
push 0x10117720
call fcn.10067fa4
add esp, 4
mov byte [ebp - 4], bl
mov ecx, 0x10161a08
call fcn.100322c0
call fcn.10011070
test eax, eax
je 0x10024843
push str.xp_sp2
call fcn.10028b70
add esp, 4
push 0
push 0
push 0
push 0x1011d2e8
push 0
call fcn.10031b80
jmp 0x10024f36
call fcn.10023f20
mov ecx, eax
call fcn.100192b0
push eax
call fcn.10024050
mov ecx, eax
call fcn.1000ad20
push 0x1011d178
call fcn.10024050
mov ecx, eax
call fcn.1000ad90
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.10094be0
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x104
push eax
push dword [0x10161978]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x218]
push eax
call fcn.10024050
mov ecx, eax
call fcn.1000ac90
call fcn.10005050
mov ecx, eax
test ecx, ecx
je 0x100255ca
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x638], eax
lea eax, [ebp - 0x638]
mov byte [ebp - 4], 2
push eax
call fcn.10023540
mov ecx, dword [0x1016198c]
add esp, 4
mov esi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, eax
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov dword [ebp - 0x634], edi
test ecx, ecx
jne 0x10024953
push 0x10157f5c
call esi
cmp dword [0x1016198c], 0
jne 0x10024946
push 0x90
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x630], eax
mov byte [ebp - 4], 3
test eax, eax
je 0x10024930
mov ecx, eax
call fcn.100161e0
jmp 0x10024932
xor eax, eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x630]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x1016198c], eax
push 0x10157f5c
call ebx
mov ecx, dword [0x1016198c]
push edi
push dword [ebp - 0x63c]
call fcn.10019da0
mov ecx, dword [0x1016198c]
test ecx, ecx
jne 0x100249c0
push 0x10157f5c
call esi
cmp dword [0x1016198c], 0
jne 0x100249b3
push 0x90
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x630], eax
mov byte [ebp - 4], 4
test eax, eax
je 0x1002499d
mov ecx, eax
call fcn.100161e0
jmp 0x1002499f
xor eax, eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x65c]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x1016198c], eax
push 0x10157f5c
call ebx
mov ecx, dword [0x1016198c]
call fcn.10017ad0
mov eax, dword [eax]
sub eax, 0x10
push eax
call fcn.10004580
mov ebx, eax
add esp, 4
lea edi, [ebx + 0x10]
mov dword [ebp - 0x660], edi
mov byte [ebp - 4], 5
call fcn.10037460
lea edx, [ebp - 0x420]
mov dword [ebp - 0x62c], eax
push edx
push str.DLL_NETUL
mov ecx, dword [eax]
push 0xcc
push dword [0x10161978]
push eax
call dword [ecx + 8]
test eax, eax
jne 0x10024a20
push str.InitCloudConfig_failed.
call fcn.10028b70
add esp, 4
jmp 0x10024ac6
push str.InitCloudConfig_success.
call fcn.10028b70
mov esi, esp
mov dword [ebp - 0x630], esp
mov dword [ebp - 0x640], esi
call fcn.10005050
mov ecx, eax
test ecx, ecx
je 0x100255d4
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi], eax
lea eax, [ebp - 0x420]
mov byte [ebp - 4], 6
push eax
mov ecx, esi
call fcn.10004440
test al, al
jne 0x10024a8e
lea ecx, [ebp - 0x420]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10024a70
sub ecx, edx
lea eax, [ebp - 0x420]
sar ecx, 1
push ecx
push eax
mov ecx, esi
call fcn.100059b0
mov byte [ebp - 4], 7
call fcn.10023f20
mov ecx, eax
mov byte [ebp - 4], 5
call fcn.10019cc0
mov esi, dword [ebp - 0x62c]
mov esi, dword [esi]
call fcn.10023f20
mov ecx, eax
call fcn.1001be10
push eax
push dword [ebp - 0x62c]
call dword [esi + 0x58]
mov esi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [0x1016198c]
test ecx, ecx
jne 0x10024b2b
push 0x10157f5c
call esi
cmp dword [0x1016198c], 0
jne 0x10024b1a
push 0x90
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x630], eax
mov byte [ebp - 4], 8
test eax, eax
je 0x10024b04
mov ecx, eax
call fcn.100161e0
jmp 0x10024b06
xor eax, eax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x630]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x1016198c], eax
push 0x10157f5c
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [0x1016198c]
call fcn.1001bae0
push 4
mov dword [ebp - 0x654], eax
lea eax, [ebp - 0x654]
push eax
push 4
push str.indt
push str.SOFTWAREPCStoreX
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHSetValueW]
push dword [ebp - 0x63c]
push str.lpstrCmdLine_s
call fcn.10028b70
mov ecx, dword [0x1016198c]
add esp, 8
test ecx, ecx
jne 0x10024bce
push 0x10157f5c
call esi
cmp dword [0x1016198c], 0
jne 0x10024bbd
push 0x90
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x630], eax
mov byte [ebp - 4], 9
test eax, eax
je 0x10024ba7
mov ecx, eax
call fcn.100161e0
jmp 0x10024ba9
xor eax, eax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x630]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x1016198c], eax
push 0x10157f5c
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [0x1016198c]
call fcn.1001be10
push eax
call fcn.10031b70
push dword [ebp - 0x634]
push str.CheckVersion_ret:_d
call fcn.10028b70
mov eax, dword [ebp - 0x634]
add esp, 8
test eax, eax
jg 0x10024fbb
call fcn.10005050
mov ecx, eax
test ecx, ecx
je 0x100255de
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x634], esi
mov byte [ebp - 4], 0xa
call fcn.10023f20
mov ecx, eax
call fcn.10019b90
push eax
push 0x1011ccc8
call fcn.10022930
add esp, 8
test al, al
je 0x10024c81
call fcn.10023f20
mov ecx, eax
call fcn.100198c0
mov ebx, eax
call fcn.10023f20
mov ecx, eax
call fcn.100198b0
mov esi, eax
call fcn.10023f20
mov ecx, eax
call fcn.10019b90
push dword [ebx]
push dword [esi]
push dword [eax]
lea eax, [ebp - 0x634]
push str.ex1_sex2_sval1_s
push eax
call fcn.1000f890
mov esi, dword [ebp - 0x634]
add esp, 0x14
sub esp, 0x28
mov eax, esp
mov dword [ebp - 0x630], esp
mov dword [eax + 0x24], 0
push 0
push 0
push str.exist
mov byte [ebp - 4], 0xb
call fcn.10024050
mov ecx, eax
mov byte [ebp - 4], 0xa
call fcn.1000a980
call fcn.10023f20
mov ecx, eax
call fcn.10019720
mov ebx, eax
lea eax, [ebp - 0x62c]
push eax
call fcn.10023f20
mov ecx, eax
call fcn.100198f0
mov byte [ebp - 4], 0xc
test ebx, ebx
je 0x10024ebb
call fcn.10037460
lea ecx, [ebp - 0x638]
push ecx
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x60]
call fcn.10037460
push 0x1011ab90
lea ecx, [ebp - 0x630]
mov ebx, eax
call fcn.10004110
mov dword [ebp - 0x640], eax
mov ecx, dword [ebp - 0x638]
mov byte [ebp - 4], 0xe
mov ecx, dword [ecx - 0x10]
test ecx, ecx
je 0x10024d29
mov edx, dword [ecx]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x10024d3f
call fcn.10005050
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x100255e8
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [ebp - 0x640]
add eax, 0x10
mov dword [ebp - 0x63c], eax
mov eax, dword [ebp - 0x638]
mov dword [ebp - 0x644], 1
mov ecx, dword [ecx]
push dword [ecx - 0xc]
push ecx
push dword [eax - 0xc]
push eax
lea eax, [ebp - 0x63c]
push eax
call fcn.10023b50
add esp, 0x10
lea ecx, [ebp - 0x63c]
mov eax, esp
push str.PCStore_setup.log
push ecx
push eax
call fcn.10022aa0
mov eax, dword [ebx]
add esp, 0xc
mov ecx, ebx
call dword [eax + 0x68]
mov edx, dword [ebp - 0x63c]
or ebx, 0xffffffff
mov byte [ebp - 4], 0xd
add edx, 0xfffffff0
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10024dbe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x630]
mov eax, ebx
mov byte [ebp - 4], 0xc
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10024ddf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.10094be0
add esp, 0xc
call fcn.10037460
push 0x104
lea edx, [ebp - 0x218]
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x48]
push 0x208
lea eax, [ebp - 0x628]
push 0
push eax
call fcn.10094be0
add esp, 0xc
lea eax, [ebp - 0x218]
push str.StoreTray.exe
push eax
lea eax, [ebp - 0x628]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
push 0x1011b374
lea ecx, [ebp - 0x62c]
call fcn.10023350
push 0x1011d3c4
lea ecx, [ebp - 0x62c]
call fcn.10023350
push str.inst
lea ecx, [ebp - 0x62c]
call fcn.10023350
push str.RunApp_Tray
call fcn.10028b70
add esp, 4
call fcn.10037460
mov edx, eax
mov eax, dword [ebp - 0x62c]
mov dword [ebp - 0x630], edx
cmp dword [eax - 4], 1
jle 0x10024eab
push dword [eax - 0xc]
lea ecx, [ebp - 0x62c]
call fcn.10004fa0
mov eax, dword [ebp - 0x62c]
mov edx, dword [ebp - 0x630]
mov ecx, dword [edx]
push eax
lea eax, [ebp - 0x628]
push eax
push edx
call dword [ecx + 0x3c]
jmp 0x10024ebe
or ebx, 0xffffffff
mov edx, dword [ebp - 0x62c]
mov eax, ebx
mov byte [ebp - 4], 0xa
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10024edf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x10024efa
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x10024f15
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x638]
mov byte [ebp - 4], 0
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x10024f34
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor ebx, ebx
mov eax, dword [0x10161a0c]
test al, 1
jne 0x10024f66
or eax, 1
mov dword [0x10161a0c], eax
mov ecx, 0x10161a08
mov byte [ebp - 4], 0x19
call fcn.10032270
push 0x10117720
call fcn.10067fa4
add esp, 4
mov byte [ebp - 4], 0
mov ecx, 0x10161a08
call fcn.100326c0
call fcn.10023fc0
mov ecx, eax
call fcn.10060230
call fcn.10037f30
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
call dword [sym.imp.ole32.dll_CoUninitialize]
lea ecx, [ebp - 0x658]
call fcn.10006d90
mov eax, ebx
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.10067b98
mov esp, ebp
pop ebp
ret
cmp eax, 1
jne 0x10024fc9
call fcn.10037460
push 1
jmp 0x10024fd5
cmp eax, 2
jne 0x10024fdb
call fcn.10037460
push 0
mov ecx, dword [eax]
push eax
call dword [ecx + 0x5c]
call fcn.10005050
mov ecx, eax
test ecx, ecx
je 0x100255f2
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x644], edi
mov ecx, dword [0x1016198c]
mov byte [ebp - 4], 0xf
test ecx, ecx
jne 0x10025061
push 0x10157f5c
call esi
cmp dword [0x1016198c], 0
jne 0x10025050
push 0x90
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x630], eax
mov byte [ebp - 4], 0x10
test eax, eax
je 0x1002503a
mov ecx, eax
call fcn.100161e0
jmp 0x1002503c
xor eax, eax
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x640]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x1016198c], eax
push 0x10157f5c
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [0x1016198c]
call fcn.10019b90
mov dword [ebp - 0x630], eax
mov ecx, dword [eax]
mov ecx, dword [ecx - 0x10]
test ecx, ecx
je 0x10025080
mov edx, dword [ecx]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x10025096
call fcn.10005050
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x100255fc
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x62c], eax
push 0x1011ccc8
lea ecx, [ebp - 0x62c]
mov byte [ebp - 4], 0x11
call fcn.10004440
test al, al
jne 0x10025149
push 0
push 0
push 0xffffffffffffffff
push 0x1011ccc8
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea edx, [eax - 1]
mov dword [ebp - 0x634], edx
test edx, edx
jle 0x1002513e
mov esi, dword [ebp - 0x62c]
mov ecx, 1
mov eax, dword [esi - 8]
sub ecx, dword [esi - 4]
sub eax, edx
or eax, ecx
jge 0x10025111
push edx
lea ecx, [ebp - 0x62c]
call fcn.100053e0
mov esi, dword [ebp - 0x62c]
mov edx, dword [ebp - 0x634]
push edx
push esi
push 0xffffffffffffffff
push 0x1011ccc8
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [ebp - 0x634]
cmp eax, dword [esi - 8]
jg 0x10025606
xor ecx, ecx
mov dword [esi - 0xc], eax
mov word [esi + eax*2], cx
jmp 0x1002514f
lea ecx, [ebp - 0x62c]
call fcn.1001e8b0
mov esi, dword [ebp - 0x62c]
mov eax, dword [ebp - 0x630]
mov byte [ebp - 4], 0xf
mov eax, dword [eax]
test eax, eax
je 0x10025610
mov ecx, esi
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x10025193
test dx, dx
je 0x10025187
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x10025193
add ecx, 4
add eax, 4
test dx, dx
jne 0x10025165
mov dword [ebp - 0x634], 0
jmp 0x1002519e
sbb ecx, ecx
or ecx, 1
mov dword [ebp - 0x634], ecx
lea edx, [esi - 0x10]
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x100251b8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x634], 0
je 0x1002535a
mov eax, dword [0x1016198c]
mov esi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [ebp - 0x62c], eax
test eax, eax
jne 0x1002523e
push 0x10157f5c
call esi
cmp dword [0x1016198c], 0
jne 0x10025224
push 0x90
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x630], eax
mov byte [ebp - 4], 0x12
test eax, eax
je 0x1002520e
mov ecx, eax
call fcn.100161e0
jmp 0x10025210
xor eax, eax
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x634]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x1016198c], eax
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0x10157f5c
call edi
mov eax, dword [0x1016198c]
mov dword [ebp - 0x62c], eax
jmp 0x10025244
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, eax
mov dword [ebp - 0x630], ecx
test ecx, ecx
jne 0x100252ac
push 0x10157f5c
call esi
cmp dword [0x1016198c], 0
jne 0x1002529a
push 0x90
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x640], eax
mov byte [ebp - 4], 0x13
test eax, eax
je 0x10025284
mov ecx, eax
call fcn.100161e0
jmp 0x10025286
xor eax, eax
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x64c]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x1016198c], eax
push 0x10157f5c
call edi
mov eax, dword [0x1016198c]
mov dword [ebp - 0x62c], eax
mov dword [ebp - 0x640], eax
test eax, eax
jne 0x10025312
push 0x10157f5c
call esi
cmp dword [0x1016198c], 0
jne 0x10025300
push 0x90
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x62c], eax
mov byte [ebp - 4], 0x14
test eax, eax
je 0x100252ea
mov ecx, eax
call fcn.100161e0
jmp 0x100252ec
xor eax, eax
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x648]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x1016198c], eax
push 0x10157f5c
call edi
mov eax, dword [0x1016198c]
mov dword [ebp - 0x62c], eax
mov ecx, dword [ebp - 0x630]
call fcn.100198c0
mov ecx, dword [ebp - 0x640]
mov edi, eax
call fcn.100198b0
mov ecx, dword [ebp - 0x62c]
mov esi, eax
call fcn.10019b90
push dword [edi]
push dword [esi]
push dword [eax]
lea eax, [ebp - 0x644]
push str.ex1_sex2_sval1_s
push eax
call fcn.1000f890
mov edi, dword [ebp - 0x644]
add esp, 0x14
or esi, 0xffffffff
mov ecx, dword [0x1016198c]
mov dword [ebp - 0x634], ecx
test ecx, ecx
jne 0x100253ce
push 0x10157f5c
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [0x1016198c], 0
jne 0x100253b8
push 0x90
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x648], eax
mov byte [ebp - 4], 0x15
test eax, eax
je 0x100253a2
mov ecx, eax
call fcn.100161e0
jmp 0x100253a4
xor eax, eax
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x648]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x1016198c], eax
push 0x10157f5c
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [0x1016198c]
mov dword [ebp - 0x634], eax
mov eax, dword [0x10161a04]
mov dword [ebp - 0x62c], eax
test eax, eax
jne 0x1002543e
push 0x101580ec
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [0x10161a04], 0
jne 0x10025428
push 0x20
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x64c], eax
mov byte [ebp - 4], 0x16
test eax, eax
je 0x10025412
mov ecx, eax
call fcn.10009b00
jmp 0x10025414
xor eax, eax
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x64c]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x10161a04], eax
push 0x101580ec
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [0x10161a04]
mov dword [ebp - 0x62c], eax
mov ecx, dword [ebp - 0x634]
call fcn.100192b0
mov ecx, dword [ebp - 0x62c]
push eax
call fcn.1000ad20
sub esp, 0x28
mov eax, esp
mov dword [ebp - 0x648], esp
mov dword [eax + 0x24], 0
mov ecx, dword [0x10161a04]
mov byte [ebp - 4], 0x17
test ecx, ecx
jne 0x100254d1
push 0x101580ec
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [0x10161a04], 0
jne 0x100254c0
push 0x20
call fcn.10032d00
add esp, 4
mov dword [ebp - 0x64c], eax
mov byte [ebp - 4], 0x18
test eax, eax
je 0x100254aa
mov ecx, eax
call fcn.10009b00
jmp 0x100254ac
xor eax, eax
mov byte [ebp - 4], 0x17
lea ecx, [ebp - 0x648]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x10161a04], eax
push 0x101580ec
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [0x10161a04]
push 0
push edi
push 0x1011d3f8
mov byte [ebp - 4], 0xf
call fcn.1000a980
call fcn.10024270
test eax, eax
jne 0x1002554d
mov ecx, 0x101619dc
call fcn.100074e0
push 0xbb8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, esi
mov byte [ebp - 4], 5
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x1002551b
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, esi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x10025533
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x638]
mov byte [ebp - 4], 0
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jmp 0x10024f2a
call fcn.100244c0
test eax, eax
je 0x10025500
push dword [ebp + 0x14]
push dword [ebp - 0x63c]
call fcn.10026a30
add esp, 8
mov dword [ebp - 0x630], eax
mov byte [ebp - 4], 5
add edi, 0xfffffff0
mov ecx, esi
lock xadd dword [edi + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x10025588
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, esi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x100255a0
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x638]
mov byte [ebp - 4], 0
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x100255bf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, dword [ebp - 0x630]
jmp 0x10024f36
push 0x80004005
call fcn.10004420
push 0x80004005
call fcn.10004420
push 0x80004005
call fcn.10004420
push 0x80004005
call fcn.10004420
push 0x80004005
call fcn.10004420
push 0x80004005
call fcn.10004420
push 0x80070057
call fcn.10004420
push 0x80004005
call fcn.10004420
int3