Function at 0x10051380
Capabilities:
Check os version
Encode data using base64
Encode data using xor
Enumerate files on windows
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100fa565
mov eax, dword fs:[0]
push eax
sub esp, 0xb84
mov eax, dword [0x1013c014]
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 ebx, ecx
mov dword [ebp - 0xb1c], ebx
mov eax, dword [ebx + 0xa4]
lea esi, [ebx + 0xa0]
mov dword [ebp - 0xb04], eax
mov eax, dword [esi]
mov dword [ebp - 0xb08], eax
lea eax, [ebp - 0xb04]
push eax
lea eax, [ebp - 0xb08]
mov dword [ebp - 0xb6c], esi
push eax
call fcn.10050b30
mov ecx, dword [ebx + 0x80]
test ecx, ecx
je 0x10051417
mov dword [ebp - 0xb44], ecx
mov dword [ebx + 0x80], 0
mov dword [ebp - 4], 1
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [ebp - 4], 0xffffffff
cmp dword [ebx + 0x4c], 0xffffffff
mov dword [ebx + 0x38], 0
mov byte [ebx + 0x33], 0
je 0x10051436
mov ecx, ebx
mov dword [ebx + 0x4c], 0xffffffff
call fcn.10059df0
cmp dword [ebx + 0xec], 0xffffffff
je 0x10051450
mov ecx, ebx
mov dword [ebx + 0xec], 0xffffffff
call fcn.10059df0
call dword [sym.imp.USER32.dll_GetMessagePos]
mov dword [0x1014b510], eax
mov eax, dword [ebx + 0x3c]
mov dword [ebx + 0x178], 0
mov dword [ebx + 0x1d0], 0
mov dword [ebx + 0x1d4], 0
mov dword [ebx + 0x1d8], 0
mov dword [ebx + 0x198], 0xffffffff
test eax, 0x1000000
je 0x100514f7
push esi
mov ecx, ebx
call fcn.10050bf0
mov dword [ebx + 0x178], 0
mov eax, 0x30c30c31
mov ecx, dword [esi + 4]
mov edi, dword [esi]
sub ecx, edi
imul ecx
mov eax, 0
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
je 0x100514d5
cmp dword [edi], 2
je 0x100514d5
mov dword [ebx + 0x178], ecx
mov eax, ecx
mov dword [ebx + 0x1cc], eax
mov eax, 0x30c30c31
mov edx, dword [esi + 4]
sub edx, dword [esi]
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
jmp 0x10052ebb
test al, 0x10
je 0x10051ab1
cmp dword [0x1013dee4], 0
jle 0x10051ab1
lea eax, [ebp - 0x218]
push eax
push dword [ebx + 0x68]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea eax, [ebp - 0x218]
push eax
push str._s.lnk
lea eax, [ebp - 0x628]
push 0x104
push eax
call fcn.100a4830
add esp, 0x10
mov dword [ebp - 0xb34], 0
mov dword [ebp - 0xb30], 0
mov dword [ebp - 0xb2c], 0
lea eax, [ebp - 0xa30]
mov dword [ebp - 4], 2
push eax
lea eax, [ebp - 0x628]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
mov dword [ebp - 0xae8], esi
cmp esi, 0xffffffff
je 0x100516be
mov byte [ebp - 4], 3
call fcn.100215d0
mov ecx, eax
test ecx, ecx
je 0x10052ee0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xb74], 0
mov dword [ebp - 0xb78], eax
mov dword [ebp - 0xb70], 0
lea eax, [ebp - 0xa04]
mov byte [ebp - 4], 4
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0xb78]
push str._s_s
push eax
call fcn.10020290
mov eax, dword [ebp - 0xa1c]
add esp, 0x10
mov esi, dword [ebp - 0xb30]
mov dword [ebp - 0xb08], eax
mov dword [ebp - 0xb74], eax
mov eax, dword [ebp - 0xa18]
mov dword [ebp - 0xb04], eax
mov dword [ebp - 0xb70], eax
cmp dword [ebp - 0xb2c], esi
je 0x10051641
mov edi, dword [ebp - 0xb78]
lea ecx, [edi - 0x10]
call fcn.10021e50
add eax, 0x10
mov dword [esi], eax
mov eax, dword [ebp - 0xb08]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0xb04]
mov dword [esi + 8], eax
add dword [ebp - 0xb30], 0xc
jmp 0x1005165a
lea eax, [ebp - 0xb78]
push eax
push esi
lea ecx, [ebp - 0xb34]
call fcn.10035c90
mov edi, dword [ebp - 0xb78]
mov esi, dword [ebp - 0xae8]
lea eax, [ebp - 0xa30]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
je 0x10051697
lea edx, [edi - 0x10]
mov byte [ebp - 4], 6
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10051586
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x10051586
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
add edi, 0xfffffff0
mov byte [ebp - 4], 5
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x100516ba
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov esi, dword [ebp - 0xb30]
mov eax, 0x2aaaaaab
mov ecx, dword [ebp - 0xb34]
sub esi, ecx
push dword [ebp - 0xb44]
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0xb30]
push eax
call fcn.100647c0
add esp, 8
mov dword [ebp - 0xae8], 0
mov dword [ebp - 0xb58], 0
lea eax, [ebp - 0xb58]
push eax
push 0x1010fedc
push 0x17
push 0
push 0x10103e70
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x10051a31
push dword [ebp - 0xb58]
lea ecx, [ebp - 0xb28]
call fcn.10047560
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0xb28]
test eax, eax
je 0x10051a23
mov esi, dword [ebp - 0xb34]
cmp esi, dword [ebp - 0xb30]
je 0x10051a23
mov ecx, dword [eax]
push 0
push dword [esi]
push eax
call dword [ecx + 0x14]
test eax, eax
js 0x100519b6
mov eax, dword [ebp - 0xb58]
lea edx, [ebp - 0xa30]
push 0
push edx
push 0x104
mov ecx, dword [eax]
lea edx, [ebp - 0x420]
push edx
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x100519b6
cmp word [ebp - 0x420], 0
je 0x100519b6
test byte [ebp - 0xa30], 0x10
jne 0x100519b6
mov byte [ebp - 4], 9
mov edi, dword [esi]
push edi
mov dword [ebp - 0xaec], 0
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
test eax, eax
je 0x100517dd
push edi
call dword [sym.imp.SHELL32.dll_SHSimpleIDListFromPath]
mov dword [ebp - 0xaec], eax
jmp 0x100517fa
push 0
push 0x20410000
lea edx, [ebp - 0xaec]
mov ecx, edi
call fcn.100b09d0
mov eax, dword [ebp - 0xaec]
add esp, 8
xor ecx, ecx
mov dword [ebp - 0xb00], ecx
mov dword [ebp - 0xaf0], ecx
mov byte [ebp - 4], 0xb
test eax, eax
je 0x10051989
lea ecx, [ebp - 0xb00]
push ecx
push 0x10103e10
push eax
call dword [sym.imp.SHELL32.dll_SHCreateItemFromIDList]
test eax, eax
js 0x1005196c
mov eax, dword [ebp - 0xb00]
lea edx, [ebp - 0xaf0]
push edx
push 0
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
test eax, eax
js 0x1005196c
push str..lnk
push dword [ebp - 0xaf0]
call dword [sym.imp.SHLWAPI.dll_PathFindExtensionW]
push eax
call fcn.100dc721
add esp, 8
test eax, eax
jne 0x100518a8
mov eax, dword [ebp - 0xaf0]
test eax, eax
je 0x1005187b
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov dword [ebp - 0xaf0], 0
mov byte [ebp - 4], 0xc
mov eax, dword [ebp - 0xb00]
test eax, eax
je 0x10051899
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0xaec]
jmp 0x100519ab
push 0
lea ecx, [ebp - 0xae0]
call fcn.10049550
push 0
mov byte [ebp - 4], 0xd
mov ecx, 0x1014be70
mov eax, dword [ebp - 0xaec]
push 0x10
push eax
push dword [ebp - 0xb00]
mov dword [ebp - 0xaec], 0
mov dword [ebp - 0xaa8], eax
call fcn.1002ac30
mov dword [ebp - 0xad0], eax
lea ecx, [ebp - 0xae0]
mov eax, dword [ebx + 0x3c]
shr eax, 0x17
and al, 1
push eax
push dword [ebp - 0xaf0]
call fcn.10049630
mov eax, dword [ebx + 0xa4]
lea ecx, [ebp - 0xae0]
push ecx
cmp dword [ebx + 0xa8], eax
je 0x10051929
mov ecx, eax
call fcn.10046980
add dword [ebx + 0xa4], 0x54
jmp 0x10051935
push eax
lea ecx, [ebx + 0xa0]
call fcn.10063630
mov eax, dword [ebp - 0xae8]
mov edx, dword [ebp - 0xad8]
inc eax
add edx, 0xfffffff0
mov dword [ebp - 0xae8], eax
cmp eax, dword [0x1013dee4]
jge 0x100519c4
mov byte [ebp - 4], 0x10
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005196c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xaf0]
test eax, eax
je 0x1005197d
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov ecx, dword [ebp - 0xb00]
mov eax, dword [ebp - 0xaec]
mov dword [ebp - 0xaf0], 0
mov byte [ebp - 4], 0x11
test ecx, ecx
je 0x100519a7
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov eax, dword [ebp - 0xaec]
mov byte [ebp - 4], 8
test eax, eax
je 0x100519b6
push eax
call dword [sym.imp.SHELL32.dll_ILFree]
mov eax, dword [ebp - 0xb28]
add esi, 0xc
jmp 0x10051751
mov byte [ebp - 4], 0xe
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x100519dd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xaf0]
test eax, eax
je 0x100519ee
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov dword [ebp - 0xaf0], 0
mov byte [ebp - 4], 0xf
mov eax, dword [ebp - 0xb00]
test eax, eax
je 0x10051a0c
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0xaec]
test eax, eax
je 0x10051a1d
push eax
call dword [sym.imp.SHELL32.dll_ILFree]
mov eax, dword [ebp - 0xb28]
mov byte [ebp - 4], 0x12
test eax, eax
je 0x10051a31
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 0x13
mov eax, dword [ebp - 0xb58]
test eax, eax
je 0x10051a45
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0xb34]
test ecx, ecx
je 0x10051ab1
mov edx, dword [ebp - 0xb30]
push ecx
call fcn.10027080
mov ecx, dword [ebp - 0xb2c]
mov eax, 0x2aaaaaab
mov esi, dword [ebp - 0xb34]
add esp, 4
sub ecx, esi
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov eax, esi
shl ecx, 2
cmp ecx, 0x1000
jb 0x10051aa7
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10052eea
push ecx
push esi
call fcn.100d4917
add esp, 8
test dword [ebx + 0x3c], 0x2000000
je 0x10051f32
mov cx, word [0x10159320]
test cx, cx
jne 0x10051ae9
call dword [sym.imp.KERNEL32.dll_GetVersion]
mov ecx, eax
movzx eax, al
shr ecx, 8
movzx ecx, cl
shl ax, 8
or cx, ax
mov word [0x10159320], cx
mov eax, 0x602
cmp cx, ax
jb 0x10051f32
mov dword [ebp - 0xb68], 0
mov dword [ebp - 0xb64], 0
mov dword [ebp - 0xb60], 0
push 0
mov dl, 1
mov dword [ebp - 4], 0x14
lea ecx, [ebp - 0xb68]
call fcn.10072440
mov edi, dword [ebp - 0xb68]
add esp, 4
mov edx, dword [ebp - 0xb64]
cmp edi, edx
je 0x10051ed0
push 0
push 0x12
push dword [edi]
mov ecx, 0x1014be70
push dword [edi + 8]
call fcn.1002ac30
mov esi, eax
mov dword [ebp - 0xb80], 0x1014be70
push 0x1014be70
mov dword [ebp - 0xae8], esi
mov byte [ebp - 0xb7c], 0
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
push str.Microsoft.Windows.Desktop
push dword [esi + 0x50]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x10051eaa
mov byte [ebp - 4], 0x16
call fcn.100215d0
mov ecx, eax
test ecx, ecx
je 0x10052ee0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0xaf8], esi
mov byte [ebp - 4], 0x17
mov edx, dword [ebp - 0xae8]
cmp byte [edx + 0x2b], 0
je 0x10051c50
mov edx, dword [edx + 0x54]
lea ecx, [esi - 0x10]
mov dword [ebp - 0xb04], ecx
lea eax, [edx - 0x10]
cmp eax, ecx
je 0x10051d43
lea eax, [ecx + 0xc]
mov dword [ebp - 0xb08], eax
mov eax, dword [eax]
shr eax, 0x1f
test al, al
jne 0x10051c3c
mov eax, dword [edx - 0x10]
cmp eax, dword [ecx]
jne 0x10051c3c
lea ecx, [edx - 0x10]
call fcn.10021e50
mov dword [ebp - 0xafc], eax
mov byte [ebp - 4], 0x18
or ecx, 0xffffffff
mov edx, dword [ebp - 0xb08]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10051c2e
mov esi, dword [ebp - 0xb04]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0xafc]
lea esi, [eax + 0x10]
mov dword [ebp - 0xaf8], esi
jmp 0x10051d43
push dword [edx - 0xc]
lea ecx, [ebp - 0xaf8]
push edx
call fcn.10021eb0
jmp 0x10051d3d
mov dword [ebp - 0xaf4], 0
mov byte [ebp - 4], 0x19
lea edx, [ebp - 0xaf4]
mov ecx, dword [edi + 8]
push edx
push 0
push ecx
mov eax, dword [ecx]
call dword [eax + 0x14]
test eax, eax
jns 0x10051c9b
mov eax, dword [ebp - 0xaf4]
test eax, eax
je 0x10051c85
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov dword [ebp - 0xaf4], 0
add esi, 0xfffffff0
mov byte [ebp - 4], 0x1a
jmp 0x10051e95
push 2
push 0x10111db4
push dword [ebp - 0xaf4]
call fcn.100de413
add esp, 0xc
test eax, eax
mov eax, dword [ebp - 0xaf4]
jne 0x10051cff
test eax, eax
je 0x10051cc5
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov dword [ebp - 0xaf4], 0
add esi, 0xfffffff0
mov byte [ebp - 4], 0x1b
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x10051ceb
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0xb80]
mov byte [ebp - 4], 0x14
call fcn.100233f0
jmp 0x10051eb9
test eax, eax
jne 0x10051d07
xor edx, edx
jmp 0x10051d1f
mov edx, eax
lea esi, [edx + 2]
nop dword [eax]
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x10051d10
sub edx, esi
sar edx, 1
push edx
push eax
lea ecx, [ebp - 0xaf8]
call fcn.10021eb0
mov eax, dword [ebp - 0xaf4]
test eax, eax
je 0x10051d3d
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov esi, dword [ebp - 0xaf8]
push 0
lea ecx, [ebp - 0xa88]
call fcn.10049550
mov byte [ebp - 4], 0x1c
lea edx, [esi - 0x10]
mov ecx, dword [ebp - 0xa80]
add ecx, 0xfffffff0
mov dword [ebp - 0xb04], ecx
cmp edx, ecx
je 0x10051dd7
lea eax, [ecx + 0xc]
mov dword [ebp - 0xb08], eax
mov eax, dword [eax]
shr eax, 0x1f
test al, al
jne 0x10051dc8
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x10051dc8
mov ecx, edx
call fcn.10021e50
mov dword [ebp - 0xafc], eax
mov byte [ebp - 4], 0x20
or ecx, 0xffffffff
mov edx, dword [ebp - 0xb08]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10051db9
mov esi, dword [ebp - 0xb04]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0xafc]
add eax, 0x10
mov byte [ebp - 4], 0x1c
mov dword [ebp - 0xa80], eax
jmp 0x10051dd7
push dword [edx + 4]
lea ecx, [ebp - 0xa80]
push esi
call fcn.10021eb0
lea ecx, [ebp - 0xaf8]
call fcn.100b0e50
mov esi, dword [ebp - 0xaf8]
mov edx, 0x811c9dc5
mov ecx, esi
call fcn.100b3790
mov edx, dword [ebp - 0xae8]
mov dword [ebp - 0xa7c], eax
mov eax, dword [edi]
mov dword [edi], 0
mov cl, byte [edx + 0x2c]
and cl, 1
mov dword [ebp - 0xa50], eax
mov al, byte [edx + 0x2b]
add cl, cl
and al, 1
mov dword [ebp - 0xa78], edx
or cl, al
mov al, byte [ebp - 0xa57]
shl cl, 2
and al, 0xf3
or cl, al
mov byte [ebp - 0xa57], cl
mov ecx, dword [ebx + 0xa4]
cmp dword [ebx + 0xa8], ecx
je 0x10051e59
lea eax, [ebp - 0xa88]
push eax
call fcn.10046980
add dword [ebx + 0xa4], 0x54
jmp 0x10051e6c
lea edx, [ebp - 0xa88]
push edx
push ecx
lea ecx, [ebx + 0xa0]
call fcn.10063630
mov edx, dword [ebp - 0xa80]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x21
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10051e8e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 0x22
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x10051eaa
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
push 0x1014be70
mov byte [ebp - 4], 0x14
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
mov edx, dword [ebp - 0xb64]
add edi, 0xc
cmp edi, edx
jne 0x10051b42
mov edi, dword [ebp - 0xb68]
mov dword [ebp - 4], 0xffffffff
test edi, edi
je 0x10051f32
push ecx
mov ecx, edi
call fcn.10035f80
mov ecx, dword [ebp - 0xb60]
mov eax, 0x2aaaaaab
mov esi, dword [ebp - 0xb68]
add esp, 4
sub ecx, esi
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov eax, esi
shl ecx, 2
cmp ecx, 0x1000
jb 0x10051f28
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10052eef
push ecx
push esi
call fcn.100d4917
add esp, 8
mov eax, dword [ebx + 0x3c]
mov edi, dword [sym.imp.USER32.dll_CharUpperW]
test eax, 0x2000010
jne 0x1005210c
mov ecx, dword [ebx + 0x68]
test ecx, ecx
je 0x10052048
mov dword [ebp - 0xb0c], 0
lea eax, [ebp - 0xb0c]
mov dword [ebp - 4], 0x23
push eax
push 0x10103e10
push ecx
call dword [sym.imp.SHELL32.dll_SHCreateItemFromIDList]
test eax, eax
js 0x1005201f
mov eax, dword [ebp - 0xb0c]
lea edx, [ebx + 0x80]
push edx
push 0x10103b50
push 0x10103a60
mov ecx, dword [eax]
push 0
push eax
call dword [ecx + 0xc]
lea eax, [ebp - 0xb0c]
push eax
lea ecx, [ebx + 0x78]
call fcn.10035230
mov dword [ebp - 0xb54], 0
mov byte [ebp - 4], 0x24
lea edx, [ebp - 0xb54]
mov eax, dword [ebp - 0xb0c]
push edx
push 0x80028000
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
test eax, eax
js 0x10051ff5
mov ecx, dword [ebp - 0xb54]
test ecx, ecx
je 0x10051fe8
push ecx
call edi
mov ecx, dword [ebp - 0xb54]
mov edx, 0x811c9dc5
call fcn.100b3790
mov dword [ebx + 0x60], eax
push dword [ebx + 0x3c]
lea esi, [ebx + 0xa0]
mov ecx, ebx
push esi
push dword [ebp - 0xb0c]
call fcn.1004b700
mov eax, dword [ebp - 0xb54]
test eax, eax
je 0x10052025
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
jmp 0x10052025
lea esi, [ebx + 0xa0]
mov dword [ebp - 4], 0x25
mov eax, dword [ebp - 0xb0c]
test eax, eax
je 0x1005203c
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebx + 0x3c]
jmp 0x1005204e
lea esi, [ebx + 0xa0]
mov ecx, dword [ebx + 0x70]
test ecx, ecx
je 0x1005210c
mov dword [ebp - 0xb4c], 0
lea eax, [ebp - 0xb4c]
mov dword [ebp - 4], 0x26
push eax
push 0x10103e10
push ecx
call dword [sym.imp.SHELL32.dll_SHCreateItemFromIDList]
test eax, eax
js 0x100520eb
mov dword [ebp - 0xb50], 0
mov byte [ebp - 4], 0x27
lea edx, [ebp - 0xb50]
mov eax, dword [ebp - 0xb4c]
push edx
push 0x80028000
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
test eax, eax
js 0x100520c9
mov ecx, dword [ebp - 0xb50]
test ecx, ecx
je 0x100520be
push ecx
call edi
mov ecx, dword [ebp - 0xb50]
mov edx, dword [ebx + 0x60]
call fcn.100b3790
mov dword [ebx + 0x60], eax
push dword [ebx + 0x3c]
mov ecx, ebx
push esi
push dword [ebp - 0xb4c]
call fcn.1004bef0
mov eax, dword [ebp - 0xb50]
test eax, eax
je 0x100520eb
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov dword [ebp - 4], 0x28
mov eax, dword [ebp - 0xb4c]
test eax, eax
je 0x10052102
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebx + 0x3c]
test al, 0x20
je 0x100523e9
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0xb40], ecx
mov dword [ebp - 0xb3c], edx
mov dword [ebp - 0xb38], ecx
mov dword [ebp - 4], 0x29
mov eax, dword [ebx + 0x6c]
test eax, eax
je 0x10052206
mov dword [ebp - 0xb24], edx
mov esi, dword [sym.imp.SHELL32.dll_SHCreateItemFromIDList]
lea ecx, [ebp - 0xb24]
push ecx
push 0x10103e10
push eax
call esi
test eax, eax
js 0x100521e0
lea eax, [ebp - 0xb24]
push eax
lea ecx, [ebx + 0x7c]
call fcn.10035230
mov dword [ebp - 0xb48], 0
mov byte [ebp - 4], 0x2b
lea edx, [ebp - 0xb48]
mov eax, dword [ebp - 0xb24]
push edx
push 0x80028000
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
test eax, eax
js 0x100521b8
mov ecx, dword [ebp - 0xb48]
test ecx, ecx
je 0x100521ab
push ecx
call edi
mov ecx, dword [ebp - 0xb48]
mov edx, 0x811c9dc5
call fcn.100b3790
mov dword [ebx + 0x64], eax
push dword [ebx + 0x3c]
lea eax, [ebp - 0xb40]
mov ecx, ebx
push eax
push dword [ebp - 0xb24]
call fcn.1004b700
mov eax, dword [ebp - 0xb48]
test eax, eax
je 0x100521e0
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov byte [ebp - 4], 0x2c
mov eax, dword [ebp - 0xb24]
test eax, eax
je 0x100521f4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 0x29
mov edx, dword [ebp - 0xb3c]
mov ecx, dword [ebp - 0xb40]
jmp 0x1005220c
mov esi, dword [sym.imp.SHELL32.dll_SHCreateItemFromIDList]
mov eax, dword [ebx + 0x74]
test eax, eax
je 0x100522c8
mov dword [ebp - 0xae8], 0
lea ecx, [ebp - 0xae8]
push ecx
push 0x10103e10
push eax
call esi
test eax, eax
js 0x100522a4
mov dword [ebp - 0xafc], 0
mov byte [ebp - 4], 0x2e
lea edx, [ebp - 0xafc]
mov eax, dword [ebp - 0xae8]
push edx
push 0x80028000
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
test eax, eax
js 0x1005227c
mov ecx, dword [ebp - 0xafc]
test ecx, ecx
je 0x10052271
push ecx
call edi
mov ecx, dword [ebp - 0xafc]
mov edx, dword [ebx + 0x64]
call fcn.100b3790
mov dword [ebx + 0x64], eax
push dword [ebx + 0x3c]
lea eax, [ebp - 0xb40]
mov ecx, ebx
push eax
push dword [ebp - 0xae8]
call fcn.1004bef0
mov eax, dword [ebp - 0xafc]
test eax, eax
je 0x100522a4
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov byte [ebp - 4], 0x2f
mov eax, dword [ebp - 0xae8]
test eax, eax
je 0x100522b8
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 0x29
mov edx, dword [ebp - 0xb3c]
mov ecx, dword [ebp - 0xb40]
cmp ecx, edx
je 0x1005238b
mov eax, dword [ebx + 0xa0]
lea esi, [ebx + 0xa0]
cmp eax, dword [esi + 4]
je 0x1005234f
push 1
lea ecx, [ebp - 0x788]
call fcn.10049550
mov byte [ebp - 4], 0x30
lea ecx, [ebp - 0x788]
mov eax, dword [esi + 4]
mov byte [ebp - 0x756], 1
push ecx
cmp dword [esi + 8], eax
je 0x10052315
mov ecx, eax
call fcn.10046980
add dword [esi + 4], 0x54
jmp 0x1005231d
push eax
mov ecx, esi
call fcn.10063630
mov edx, dword [ebp - 0x780]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x31
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005233f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x29
mov edx, dword [ebp - 0xb3c]
mov ecx, dword [ebp - 0xb40]
cmp ecx, edx
je 0x1005236a
mov byte [ecx + 0x32], 2
add ecx, 0x54
mov edx, dword [ebp - 0xb3c]
cmp ecx, edx
jne 0x10052353
mov ecx, dword [ebp - 0xb40]
push dword [ebp - 0xb44]
push edx
push ecx
push dword [ebx + 0xa4]
mov ecx, esi
call fcn.10063a10
mov edx, dword [ebp - 0xb3c]
mov ecx, dword [ebp - 0xb40]
mov dword [ebp - 4], 0xffffffff
test ecx, ecx
je 0x100523e9
push ecx
call fcn.100637e0
mov ecx, dword [ebp - 0xb38]
mov eax, 0x30c30c31
mov esi, dword [ebp - 0xb40]
add esp, 4
sub ecx, esi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
imul ecx, eax, 0x54
mov eax, esi
cmp ecx, 0x1000
jb 0x100523df
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10052ef4
push ecx
push esi
call fcn.100d4917
add esp, 8
mov ecx, ebx
call fcn.1005ede0
mov ecx, dword [ebx + 0xa4]
mov eax, 0x30c30c31
mov edi, dword [ebx + 0xa0]
sub ecx, edi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0x7d0
jbe 0x1005248e
mov ebx, dword [ebp - 0xb6c]
mov ecx, 0x7d0
mov dword [ebp - 0xae8], ecx
mov esi, 0x29040
mov eax, dword [esi + edi + 0x38]
mov edi, dword [sym.imp.SHELL32.dll_ILFree]
test eax, eax
je 0x10052441
push eax
call edi
mov eax, dword [ebx]
mov eax, dword [esi + eax + 0x3c]
test eax, eax
je 0x1005244e
push eax
call edi
mov ecx, dword [ebx + 4]
mov eax, 0x30c30c31
mov edi, dword [ebx]
add esi, 0x54
inc dword [ebp - 0xae8]
sub ecx, edi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp - 0xae8], eax
jb 0x10052430
mov edi, ebx
push edi
push 0x7d0
mov ecx, edi
call fcn.10063410
mov ebx, dword [ebp - 0xb1c]
jmp 0x10052494
lea edi, [ebx + 0xa0]
mov eax, dword [ebx + 0x3c]
and eax, 0x80004
cmp eax, 4
jne 0x10052522
mov esi, 0x811c9dc5
xor edx, edx
nop dword [eax]
movzx eax, byte [edx + str.::D20EA4E1_3957_11D2_A40B_0C5020524153]
xor eax, esi
imul ecx, eax, 0x1000193
movzx eax, byte [edx + 0x10112719]
xor ecx, eax
movzx eax, byte [edx + 0x1011271a]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [edx + 0x1011271b]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [edx + 0x1011271c]
imul ecx, ecx, 0x1000193
add edx, 5
xor ecx, eax
imul esi, ecx, 0x1000193
cmp edx, 0x50
jl 0x100524b0
mov eax, dword [edi]
mov ecx, dword [ebx + 0xa4]
cmp eax, ecx
je 0x10052522
nop
cmp dword [eax + 0xc], esi
je 0x1005251e
add eax, 0x54
cmp eax, ecx
jne 0x10052510
jmp 0x10052522
or byte [eax + 0x30], 1
mov eax, dword [edi]
cmp eax, dword [edi + 4]
jne 0x100525ec
cmp dword [ebx + 0x68], 0
je 0x100525ec
cmp dword [ebx + 0x78], 0
je 0x100525ec
xor eax, eax
lea ecx, [ebp - 0x730]
cmp byte [ebx + 0x30], al
sete al
add eax, 2
push eax
call fcn.10049550
mov edx, str._Empty_
mov dword [ebp - 4], 0x32
mov ecx, str.Menu.Empty
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x10052578
xor ecx, ecx
jmp 0x1005258f
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10052580
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x728]
call fcn.10021eb0
mov eax, dword [edi + 4]
lea ecx, [ebp - 0x730]
push ecx
cmp dword [edi + 8], eax
je 0x100525b8
mov ecx, eax
call fcn.10046980
add dword [edi + 4], 0x54
jmp 0x100525c0
push eax
mov ecx, edi
call fcn.10063630
mov edx, dword [ebp - 0x728]
add edx, 0xfffffff0
mov dword [ebp - 4], 0x33
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x100525e5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
cmp byte [ebx + 0x30], 0
jne 0x1005262d
mov esi, dword [edi]
cmp esi, dword [ebx + 0xa4]
je 0x1005262d
nop dword [eax]
mov al, byte [esi + 0x30]
test al, 2
je 0x10052622
test al, 1
jne 0x10052622
cmp dword [esi + 0x38], 0
je 0x10052622
push 0
push 4
push dword [esi + 0x10]
mov ecx, 0x1014be70
call fcn.1002b890
add esi, 0x54
cmp esi, dword [ebx + 0xa4]
jne 0x10052600
test byte [ebx + 0x3c], 0x40
je 0x100528a0
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x10052674
mov eax, dword [esi + 4]
cmp eax, 2
je 0x10052659
cmp eax, 3
je 0x10052659
cmp eax, 4
je 0x10052659
cmp eax, 5
jne 0x1005266c
push str.MaxRecentPrograms
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x10052689
add esi, 0x60
cmp dword [esi], 0
jne 0x10052642
xor esi, esi
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x28
jle 0x100526a4
mov eax, 0x28
jmp 0x100526ac
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
mov esi, dword [esi + 0x40]
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
jmp 0x10052676
test eax, eax
jle 0x100528a0
mov dword [ebp - 0xb18], 0
mov dword [ebp - 0xb14], 0
mov dword [ebp - 0xb10], 0
push eax
lea eax, [ebp - 0xb18]
mov dword [ebp - 4], 0x34
push eax
mov ecx, ebx
call fcn.1004e570
mov ecx, dword [ebp - 0xb18]
cmp ecx, dword [ebp - 0xb14]
je 0x1005283c
push 1
lea ecx, [ebp - 0x680]
call fcn.10049550
mov byte [ebp - 4], 0x35
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x10052731
nop
cmp dword [esi + 4], 1
jne 0x10052729
push str.RecentProgsTop
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x10052754
add esi, 0x60
cmp dword [esi], 0
jne 0x10052710
mov eax, dword [edi + 4]
lea ecx, [ebp - 0x680]
push ecx
cmp dword [edi + 8], eax
je 0x100527ed
mov ecx, eax
call fcn.10046980
add dword [edi + 4], 0x54
jmp 0x100527f5
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
cmp word [esi + 0x38], 3
jne 0x10052773
cmp dword [esi + 0x40], 1
mov byte [ebp - 0xae1], 1
je 0x1005277a
mov byte [ebp - 0xae1], 0
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
cmp byte [ebp - 0xae1], 0
je 0x10052731
mov eax, dword [ebp - 0xb14]
lea ecx, [ebp - 0x680]
push ecx
cmp dword [ebp - 0xb10], eax
je 0x100527ca
mov ecx, eax
call fcn.10046980
mov eax, dword [ebp - 0xb14]
push dword [ebp - 0xb44]
add eax, 0x54
push eax
push dword [ebp - 0xb18]
mov dword [ebp - 0xb14], eax
push dword [edi]
jmp 0x1005280d
push eax
lea ecx, [ebp - 0xb18]
call fcn.10063630
push dword [ebp - 0xb44]
mov eax, dword [ebp - 0xb14]
push eax
push dword [ebp - 0xb18]
push dword [edi]
jmp 0x1005280d
push eax
mov ecx, edi
call fcn.10063630
push dword [ebp - 0xb44]
push dword [ebp - 0xb14]
push dword [ebp - 0xb18]
push dword [ebx + 0xa4]
mov ecx, edi
call fcn.10063a10
mov edx, dword [ebp - 0x678]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x36
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10052836
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xb18]
mov dword [ebp - 4], 0xffffffff
test ecx, ecx
je 0x100528a0
mov edx, dword [ebp - 0xb14]
push ecx
call fcn.100637e0
mov ecx, dword [ebp - 0xb10]
mov eax, 0x30c30c31
mov esi, dword [ebp - 0xb18]
add esp, 4
sub ecx, esi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
imul ecx, eax, 0x54
mov eax, esi
cmp ecx, 0x1000
jb 0x10052896
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10052ef9
push ecx
push esi
call fcn.100d4917
add esp, 8
cmp byte [ebx + 0x30], 0
jne 0x10052abb
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x10052abb
nop dword [eax]
cmp dword [esi + 4], 1
jne 0x100528d9
push str.EnableJumplists
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x100528e6
add esi, 0x60
cmp dword [esi], 0
jne 0x100528c0
jmp 0x10052abb
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
cmp word [esi + 0x38], 3
jne 0x10052905
cmp dword [esi + 0x40], 1
mov byte [ebp - 0xae1], 1
je 0x1005290c
mov byte [ebp - 0xae1], 0
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
cmp byte [ebp - 0xae1], 0
je 0x10052abb
mov edi, dword [edi]
cmp edi, dword [ebx + 0xa4]
je 0x10052ab5
mov al, byte [edi + 0x30]
test al, 2
je 0x10052aa6
test al, 1
jne 0x10052aa6
cmp dword [edi + 0x38], 0
je 0x10052aa6
push 0x1014be70
mov dword [ebp - 0xb90], 0x1014be70
mov byte [ebp - 0xb8c], 0
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
mov dword [ebp - 4], 0x37
mov eax, dword [edi + 0x10]
mov ebx, dword [eax + 0x50]
cmp dword [ebx - 0xc], 0
je 0x10052a6b
mov edx, ebx
lea ecx, [ebp - 0xb5c]
call fcn.10038580
mov byte [ebp - 4], 0x38
mov esi, dword [ebp - 0xb5c]
test esi, esi
je 0x10052a06
mov eax, dword [esi]
lea ecx, [ebp - 0xb20]
push ecx
push esi
call dword [eax + 0x18]
test eax, eax
js 0x10052a06
cmp dword [ebp - 0xb20], 0
jbe 0x10052a06
mov eax, 0x1010fc80
nop dword [eax]
mov cx, word [ebx]
cmp cx, word [eax]
jne 0x100529e6
test cx, cx
je 0x100529e2
mov cx, word [ebx + 2]
cmp cx, word [eax + 2]
jne 0x100529e6
add ebx, 4
add eax, 4
test cx, cx
jne 0x100529c0
xor eax, eax
jmp 0x100529eb
sbb eax, eax
or eax, 1
test eax, eax
jne 0x100529f8
mov byte [ebp - 4], 0x39
jmp 0x10052a65
mov byte [ebp - 4], 0x3a
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov al, 1
jmp 0x10052a6d
push ebx
lea ecx, [ebp - 0xb88]
call fcn.10038240
mov ecx, eax
mov byte [ebp - 4], 0x3b
call fcn.10038380
mov bl, al
mov byte [ebp - 4], 0x3c
mov edx, dword [ebp - 0xb84]
test edx, edx
je 0x10052a33
mov ecx, dword [edx]
push edx
call dword [ecx + 8]
mov byte [ebp - 4], 0x3d
mov ecx, dword [ebp - 0xb88]
test ecx, ecx
je 0x10052a47
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
test bl, bl
je 0x10052a5d
mov byte [ebp - 4], 0x3e
test esi, esi
je 0x10052a59
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov al, 1
jmp 0x10052a6d
mov byte [ebp - 4], 0x3f
test esi, esi
je 0x10052a6b
mov eax, dword [esi]
push esi
call dword [eax + 8]
xor al, al
mov dl, byte [edi + 0x30]
and dl, 0xfe
or dl, al
mov al, byte [edi + 0x31]
mov byte [edi + 0x30], dl
and al, 0xfd
and dl, 1
mov dword [ebp - 4], 0xffffffff
mov cl, dl
add cl, cl
or cl, al
and cl, 0xfe
or cl, dl
push 0x1014be70
mov byte [edi + 0x31], cl
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
mov ebx, dword [ebp - 0xb1c]
add edi, 0x54
cmp edi, dword [ebx + 0xa4]
jne 0x10052932
lea edi, [ebx + 0xa0]
mov ecx, dword [edi + 4]
mov eax, 0x30c30c31
sub ecx, dword [edi]
imul ecx
sar edx, 4
mov esi, edx
shr esi, 0x1f
add esi, edx
mov dword [ebx + 0x178], esi
test esi, esi
jle 0x10052af0
mov eax, dword [edi]
imul ecx, esi, 0x54
cmp dword [ecx + eax - 0x54], 8
jne 0x10052af0
lea eax, [esi - 1]
mov dword [ebx + 0x178], eax
cmp byte [0x1014b4d1], 0
je 0x10052bc8
cmp byte [ebx + 0x30], 0
jne 0x10052bc8
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x10052b64
mov eax, dword [esi + 4]
cmp eax, 2
je 0x10052b29
cmp eax, 3
je 0x10052b29
cmp eax, 4
je 0x10052b29
cmp eax, 5
jne 0x10052b3c
push str.ProgramsStyle
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x10052b46
add esi, 0x60
cmp dword [esi], 0
jne 0x10052b12
jmp 0x10052b64
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
mov esi, dword [esi + 0x40]
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
cmp esi, 2
je 0x10052bc8
push 8
lea ecx, [ebp - 0x7e0]
call fcn.10049550
mov dword [ebp - 4], 0x40
lea ecx, [ebp - 0x7e0]
mov eax, dword [edi + 4]
push ecx
cmp dword [edi + 8], eax
je 0x10052b94
mov ecx, eax
call fcn.10046980
add dword [edi + 4], 0x54
jmp 0x10052b9c
push eax
mov ecx, edi
call fcn.10063630
mov edx, dword [ebp - 0x7d8]
add edx, 0xfffffff0
mov dword [ebp - 4], 0x41
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10052bc1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov ecx, ebx
call fcn.1004c890
mov esi, dword [edi]
mov edi, dword [edi + 4]
cmp esi, edi
je 0x10052c5e
mov eax, esi
mov dword [ebp - 0xb1c], eax
mov esi, eax
mov ecx, edi
sub ecx, eax
mov eax, 0x30c30c31
imul ecx
mov ecx, dword [ebp - 0xb1c]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x54
cmp dword [eax + ecx - 0x54], 1
jne 0x10052c5e
test byte [eax + ecx - 0x24], 0x20
mov esi, ecx
jne 0x10052c5e
mov edx, dword [edi - 0x4c]
sub edx, 0x10
mov dword [ebp - 4], 0x42
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10052c36
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edi, dword [ebx + 0xa4]
add edi, 0xffffffac
mov dword [ebx + 0xa4], edi
mov esi, dword [ebx + 0xa0]
mov eax, esi
mov dword [ebp - 0xb1c], esi
cmp esi, edi
jne 0x10052be4
cmp esi, dword [ebx + 0xa4]
jne 0x10052d10
push 2
lea ecx, [ebp - 0x6d8]
call fcn.10049550
mov edx, str._Empty_
mov dword [ebp - 4], 0x43
mov ecx, str.Menu.Empty
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x10052c97
xor ecx, ecx
jmp 0x10052caf
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10052ca0
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x6d0]
call fcn.10021eb0
mov eax, dword [ebx + 0xa4]
lea esi, [ebx + 0xa0]
lea ecx, [ebp - 0x6d8]
push ecx
cmp dword [esi + 8], eax
je 0x10052ce1
mov ecx, eax
call fcn.10046980
add dword [esi + 4], 0x54
jmp 0x10052ce9
push eax
mov ecx, esi
call fcn.10063630
mov edx, dword [ebp - 0x6d0]
add edx, 0xfffffff0
mov dword [ebp - 4], 0x44
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10052d16
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x10052d16
lea esi, [ebx + 0xa0]
cmp byte [ebx + 0x30], 0
mov eax, 0x30c30c31
je 0x10052db5
mov ecx, dword [esi + 4]
sub ecx, dword [esi]
xor esi, esi
imul ecx
mov dword [ebx + 0x198], 0xffffffff
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebx + 0x178], eax
mov eax, 0x30c30c31
mov ecx, dword [ebx + 0xa4]
mov edi, dword [ebx + 0xa0]
sub ecx, edi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x10052e8b
xor eax, eax
cmp dword [eax + edi], 0x2f
jne 0x10052d7d
mov dword [ebx + 0x198], esi
mov ecx, dword [ebx + 0xa4]
add eax, 0x54
mov edi, dword [ebx + 0xa0]
inc esi
mov dword [ebp - 0xb20], eax
sub ecx, edi
mov eax, 0x30c30c31
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
mov eax, dword [ebp - 0xb20]
jl 0x10052d71
jmp 0x10052e8b
mov dword [ebx + 0x1c0], 0xffffffff
xor edi, edi
mov dword [ebx + 0x1bc], 0xffffffff
mov dword [ebx + 0x198], 0xffffffff
mov ecx, dword [ebx + 0xa4]
mov esi, dword [esi]
sub ecx, esi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x10052e69
xor ecx, ecx
mov edx, esi
cmp dword [ecx + esi], 8
mov eax, esi
jne 0x10052e0d
mov dword [ebx + 0x1c0], edi
mov eax, dword [ebx + 0xa0]
mov edx, eax
cmp dword [ecx + eax], 9
mov esi, edx
jne 0x10052e23
mov dword [ebx + 0x1bc], edi
mov esi, dword [ebx + 0xa0]
mov eax, esi
cmp dword [ecx + eax], 0x2f
lea eax, [ebx + 0xa0]
jne 0x10052e37
mov dword [ebx + 0x198], edi
mov esi, dword [eax]
add ecx, 0x54
mov dword [ebp - 0xb5c], esi
mov dword [ebp - 0xb20], ecx
inc edi
mov ecx, dword [eax + 4]
mov eax, 0x30c30c31
sub ecx, esi
imul ecx
mov ecx, dword [ebp - 0xb20]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, esi
cmp edi, eax
jl 0x10052df7
cmp byte [0x1014b4d1], 0
mov dword [ebx + 0x1a0], 1
je 0x10052e8b
mov eax, dword [ebx + 0x19c]
add eax, 2
mov dword [ebx + 0x1a0], eax
mov ecx, dword [ebx + 0xa4]
mov eax, 0x30c30c31
sub ecx, dword [ebx + 0xa0]
imul ecx
mov eax, dword [ebx + 0x178]
sar edx, 4
mov ecx, edx
mov dword [ebx + 0x1cc], eax
shr ecx, 0x1f
add ecx, edx
mov dword [ebx + 0x1c8], ecx
push ecx
push 0
mov ecx, ebx
call fcn.1004e3b0
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.100d4906
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.10013970
call fcn.100dca69
call fcn.100dca69
call fcn.100dca69
call fcn.100dca69
int3