Function at 0x1004c890
Capabilities:
Get file system object information
Get session user name

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100fa25d
mov eax, dword fs:[0]
push eax
mov eax, 0x15d4
call fcn.100d5ce0
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 edi, ecx
mov dword [ebp - 0x15a0], edi
mov eax, dword [edi + 0x40]
test eax, eax
je 0x1004e388
cmp dword [eax + 4], 0
je 0x1004e388
mov ebx, dword [edi + 0x3c]
lea esi, [edi + 0xa0]
mov eax, dword [esi]
and ebx, 0x400100
mov dword [ebp - 0x15a4], ebx
mov dword [ebp - 0x15ac], esi
cmp eax, dword [esi + 4]
je 0x1004ca08
cmp byte [0x1014b4d1], 0
je 0x1004c97c
cmp byte [edi + 0x30], 0
jne 0x1004c97c
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x1004c976
nop
mov eax, dword [esi + 4]
cmp eax, 2
je 0x1004c937
cmp eax, 3
je 0x1004c937
cmp eax, 4
je 0x1004c937
cmp eax, 5
jne 0x1004c94a
push str.ProgramsStyle
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x1004c954
add esi, 0x60
cmp dword [esi], 0
jne 0x1004c920
jmp 0x1004c976
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 0x1004ca08
mov esi, dword [ebp - 0x15ac]
push 1
lea ecx, [ebp - 0x1278]
call fcn.10049550
mov dword [ebp - 4], 0
mov eax, dword [edi + 0x40]
cmp dword [eax + 4], 6
jne 0x1004c9a0
or byte [ebp - 0x1248], 8
cmp ebx, 0x100
jne 0x1004ca9e
mov edi, dword [esi + 4]
lea eax, [ebp - 0x1278]
mov ebx, dword [esi]
push eax
cmp dword [esi + 8], edi
je 0x1004ca91
cmp ebx, edi
jne 0x1004ca1b
mov ecx, edi
call fcn.10046980
add dword [esi + 4], 0x54
mov edi, dword [ebp - 0x15a0]
mov ebx, dword [ebp - 0x15a4]
mov edx, dword [ebp - 0x1270]
add edx, 0xfffffff0
mov dword [ebp - 4], 3
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004ca01
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
cmp ebx, 0x100
jne 0x1004caca
xor esi, esi
jmp 0x1004cae6
lea ecx, [ebp - 0x12d0]
call fcn.10046980
lea esi, [edi - 0x54]
mov byte [ebp - 4], 1
push esi
mov ecx, edi
call fcn.10046980
mov eax, dword [ebp - 0x15a0]
add dword [eax + 0xa4], 0x54
cmp esi, ebx
je 0x1004ca58
sub edi, esi
sub esi, 0x54
push esi
lea ecx, [esi + edi]
call fcn.10049810
cmp esi, ebx
jne 0x1004ca48
lea eax, [ebp - 0x12d0]
mov ecx, ebx
push eax
call fcn.10049810
mov edx, dword [ebp - 0x12c8]
add edx, 0xfffffff0
mov byte [ebp - 4], 2
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004c9d0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1004c9d0
push ebx
mov ecx, esi
call fcn.10063630
jmp 0x1004c9d0
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x1278]
push ecx
cmp dword [esi + 8], eax
je 0x1004cabd
mov ecx, eax
call fcn.10046980
add dword [esi + 4], 0x54
jmp 0x1004c9dc
push eax
mov ecx, esi
call fcn.10063630
jmp 0x1004c9dc
mov eax, dword [ebp - 0x15ac]
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, 0x30c30c31
imul ecx
sar edx, 4
mov esi, edx
shr esi, 0x1f
add esi, edx
mov ebx, dword [edi + 0x40]
xor al, al
mov byte [ebp - 0x1591], al
xor edx, edx
mov byte [ebp - 0x1593], al
mov byte [ebp - 0x1592], al
mov eax, 0xffffffff
mov dword [ebp - 0x15bc], eax
xor al, al
mov dword [ebp - 0x15b0], esi
mov dword [ebp - 0x159c], edx
mov dword [edi + 0x19c], edx
mov dword [ebp - 0x15a8], eax
mov ecx, dword [ebx + 4]
mov esi, 1
mov dword [ebp - 0x158c], ebx
test ecx, ecx
jne 0x1004cb53
test edx, edx
je 0x1004e388
mov edi, dword [ebp - 0x15a0]
mov ebx, edx
xor edx, edx
add ebx, 0x30
mov dword [ebp - 0x159c], edx
jmp 0x1004cb24
cmp ecx, 0x400
je 0x1004cce1
mov dl, byte [edi + 0x30]
test dl, dl
je 0x1004cb72
cmp ecx, dword [0x1014b508]
je 0x1004ccdb
cmp ecx, 7
jne 0x1004cb8d
test dl, dl
jne 0x1004cb8d
cmp byte [0x1014c18d], dl
movzx eax, al
cmovne eax, esi
mov dword [ebp - 0x15a8], eax
xor eax, eax
nop
cmp dword [eax*8 + 0x1013fa10], ecx
je 0x1004cba6
inc eax
cmp eax, 0x23
jb 0x1004cb90
mov eax, 3
jmp 0x1004cbad
mov eax, dword [eax*8 + 0x1013fa14]
mov dword [ebp - 0x1590], eax
test al, 1
je 0x1004ccd5
cmp byte [0x1014b4d1], 0
je 0x1004cd21
test dl, dl
je 0x1004cd21
cmp dword [ebx], 0
je 0x1004cd21
cmp ecx, 0x2c
je 0x1004cc19
cmp ecx, 0x15
je 0x1004cc19
cmp ecx, 0x21
je 0x1004cc19
cmp ecx, 0x2d
je 0x1004cc19
cmp ecx, 0x22
je 0x1004cc19
cmp ecx, 0x23
je 0x1004cc19
cmp ecx, 0x2a
je 0x1004cc19
cmp ecx, 0x28
je 0x1004cc19
cmp ecx, 0x29
je 0x1004cc19
cmp ecx, 0x2b
je 0x1004cc19
cmp ecx, 0x3b
je 0x1004cc19
cmp ecx, 0x3c
jne 0x1004cd21
mov edx, str.ShutdownW7
lea ecx, [ebp - 0x15b8]
call fcn.100aa8e0
mov ecx, dword [ebp - 0x158c]
mov bl, 1
mov esi, dword [ebp - 0x15b8]
mov eax, dword [ecx + 4]
cmp eax, 0x3c
jne 0x1004cc46
mov edi, str.shutdown
jmp 0x1004cc51
cmp eax, 0x3b
mov edi, str.restart
cmovne edi, dword [ecx]
cmp word [esi], 0
je 0x1004ccf5
nop dword [eax + eax]
push 0x1011186c
push 0x64
lea edx, [ebp - 0xae8]
mov ecx, esi
call fcn.100a49c0
mov esi, eax
movzx ebx, bl
xor eax, eax
cmp word [ebp - 0xae8], ax
cmovne ebx, eax
lea eax, [ebp - 0xae8]
push eax
push edi
call fcn.100dc721
add esp, 0x10
test eax, eax
je 0x1004ccef
cmp word [esi], 0
jne 0x1004cc60
test bl, bl
jne 0x1004ccef
mov edx, dword [ebp - 0x15b8]
add edx, 0xfffffff0
mov dword [ebp - 4], 4
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004ccc8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, dword [ebp - 0x158c]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x15a8]
mov edx, dword [ebp - 0x159c]
mov edi, dword [ebp - 0x15a0]
add ebx, 0x30
jmp 0x1004cb24
mov esi, dword [ebp - 0x15b8]
add esi, 0xfffffff0
mov dword [ebp - 4], 5
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x1004cd14
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, dword [ebp - 0x158c]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebx + 4]
cmp edx, 1
jne 0x1004cd56
mov edi, dword [ebp - 0x15b0]
mov esi, dword [ebp - 0x15ac]
test edi, edi
je 0x1004cdae
mov eax, dword [esi]
imul ecx, edi, 0x54
cmp dword [ecx + eax - 0x54], edx
jne 0x1004cdae
mov eax, dword [ebp - 0x15a0]
cmp ebx, dword [eax + 0x40]
jbe 0x1004cdae
cmp dword [ebx - 0x2c], edx
jne 0x1004ccd5
jmp 0x1004cdae
cmp edx, 7
jne 0x1004cd7c
mov eax, dword [ebp - 0x15a8]
add ebx, 0x30
mov edx, dword [ebp - 0x159c]
mov edi, dword [ebp - 0x15a0]
mov byte [ebp - 0x1591], 1
jmp 0x1004cb24
cmp edx, 6
jne 0x1004cda2
mov eax, dword [ebp - 0x15a8]
add ebx, 0x30
mov edx, dword [ebp - 0x159c]
mov edi, dword [ebp - 0x15a0]
mov byte [ebp - 0x1593], 1
jmp 0x1004cb24
mov esi, dword [ebp - 0x15ac]
mov edi, dword [ebp - 0x15b0]
cmp dword [ebp - 0x159c], 0
jne 0x1004cded
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x1004cded
test dword [ebx + 0x20], 0x1000
je 0x1004cded
mov edi, dword [ebp - 0x15a0]
mov edx, ebx
lea ebx, [eax - 0x30]
mov dword [ebp - 0x159c], edx
mov eax, dword [ebp - 0x15a8]
add ebx, 0x30
mov byte [ebp - 0x1592], 1
jmp 0x1004cb24
cmp byte [0x1014b4d1], 0
je 0x1004cee6
cmp edx, 0x2f
jne 0x1004cee6
push 2
lea ecx, [ebp - 0x12d0]
call fcn.10049550
imul eax, edi, 0x54
lea ecx, [ebp - 0x12d0]
push ecx
push ecx
mov dword [ebp - 4], 6
mov ecx, esi
add eax, dword [esi]
push eax
lea eax, [ebp - 0x15d8]
push eax
call fcn.100620f0
mov esi, dword [0x1014e914]
inc edi
mov dword [ebp - 0x15b0], edi
mov dword [ebp - 0x15bc], edi
cmp dword [esi], 0
je 0x1004cec1
nop dword [eax + eax]
cmp dword [esi + 4], 1
jne 0x1004ce69
push str.SearchInternet
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x1004ce73
add esi, 0x60
cmp dword [esi], 0
jne 0x1004ce50
jmp 0x1004cec1
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
cmp word [esi + 0x38], 3
jne 0x1004ce8f
cmp dword [esi + 0x40], 1
jne 0x1004ce8f
mov bl, 1
jmp 0x1004ce91
xor bl, bl
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
test bl, bl
je 0x1004cebb
mov ebx, dword [ebp - 0x15a0]
mov ecx, ebx
push edi
call fcn.1004c7b0
inc edi
inc dword [ebx + 0x19c]
mov dword [ebp - 0x15b0], edi
mov ebx, dword [ebp - 0x158c]
mov edx, dword [ebp - 0x12c8]
add edx, 0xfffffff0
mov dword [ebp - 4], 7
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004cee6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [0x1014b4d1], 0
mov byte [ebp - 0x15a4], 0
je 0x1004cfaa
mov eax, dword [ebp - 0x15a0]
cmp byte [eax + 0x30], 0
jne 0x1004cfaa
mov eax, dword [ebx]
test eax, eax
je 0x1004cfaa
push eax
mov edx, 0x400
lea ecx, [ebp - 0x1220]
call fcn.100a4780
add esp, 4
lea eax, [ebp - 0x1220]
push 0x400
push eax
call dword [sym.imp.SHELL32.dll_DoEnvironmentSubstW]
lea eax, [ebp - 0x1220]
push 0x10110c98
push eax
call fcn.100d62b4
add esp, 8
test eax, eax
je 0x1004cf6c
movzx eax, word [eax + 4]
push eax
call fcn.100df12c
add esp, 4
test eax, eax
jne 0x1004cf6c
mov byte [ebp - 0x15a4], 1
jmp 0x1004cfaa
lea eax, [ebp - 0x1220]
push 0x10110ca0
push eax
call fcn.100d62b4
add esp, 8
test eax, eax
je 0x1004cfaa
movzx eax, word [eax + 4]
push eax
call fcn.100df12c
mov ecx, dword [ebp - 0x15a4]
add esp, 4
test eax, eax
movzx ecx, cl
mov eax, 1
cmove ecx, eax
mov dword [ebp - 0x15a4], ecx
push dword [ebx + 4]
lea ecx, [ebp - 0x1278]
call fcn.10049550
cmp dword [ebp - 0x159c], 0
mov dword [ebp - 4], 8
mov al, byte [ebp - 0x1248]
mov dword [ebp - 0x1274], ebx
je 0x1004cfd6
or al, 0x20
cmp byte [ebp - 0x15a4], 0
jne 0x1004cff7
mov cl, byte [ebp - 0x1591]
shl cl, 4
xor cl, al
and cl, 0x10
xor al, cl
xor cl, cl
mov byte [ebp - 0x1591], cl
mov cl, byte [ebp - 0x1592]
and al, 0xb7
mov dl, byte [ebp - 0x1593]
and cl, 1
shl cl, 3
and dl, 1
or cl, dl
xor edi, edi
shl cl, 3
or cl, al
mov dword [ebp - 0x1598], edi
xor al, al
mov byte [ebp - 0x1248], cl
xor cl, cl
mov byte [ebp - 0x1593], al
mov eax, dword [ebx + 4]
mov byte [ebp - 0x1592], cl
cmp eax, 0xa
jne 0x1004d0f7
mov ecx, 0x1b
lea edi, [ebp - 0xc28]
mov esi, str._LOCALAPPDATA_MicrosoftWindowsApplication_Shortcuts
lea eax, [ebp - 0xbba]
rep movsd dword es:[edi], dword [esi]
push 0x19a
push 0
push eax
movsw word es:[edi], word [esi]
call fcn.100d6eb0
add esp, 0xc
lea eax, [ebp - 0xc28]
push 0x104
push eax
call dword [sym.imp.SHELL32.dll_DoEnvironmentSubstW]
lea eax, [ebp - 0xc28]
push eax
call dword [sym.imp.SHELL32.dll_ILCreateFromPathW]
or byte [ebp - 0x1248], 1
mov edx, str.Apps
mov ecx, str.Menu.Apps
mov dword [ebp - 0x1240], eax
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004d0c4
xor ecx, ecx
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
mov edi, dword [ebp - 0x1598]
jmp 0x1004d53d
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004d0d0
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
mov edi, dword [ebp - 0x1598]
jmp 0x1004d53d
cmp eax, 9
jne 0x1004d137
mov esi, dword [0x1014e914]
cmp dword [esi], edi
je 0x1004d137
mov eax, dword [esi + 4]
cmp eax, 2
je 0x1004d11d
cmp eax, 3
je 0x1004d11d
cmp eax, 4
je 0x1004d11d
cmp eax, 5
jne 0x1004d130
push str.PinnedPrograms
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x1004d1ae
add esi, 0x60
cmp dword [esi], edi
jne 0x1004d106
mov ecx, dword [ebx + 8]
test ecx, ecx
je 0x1004d21c
lea edx, [ebp - 0x1240]
call fcn.100348d0
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x1004d15f
lea edx, [ebp - 0x123c]
call fcn.100348d0
cmp dword [ebp - 0x1240], edi
jne 0x1004d17d
mov eax, dword [ebp - 0x123c]
test eax, eax
je 0x1004d17d
mov dword [ebp - 0x1240], eax
mov dword [ebp - 0x123c], edi
mov edx, dword [ebp - 0x1590]
test dl, 2
je 0x1004d205
mov eax, dword [ebp - 0x1274]
test dword [eax + 0x20], 0x100
jne 0x1004d205
mov al, byte [ebp - 0x1248]
mov cl, 1
and al, 0xfe
or al, cl
mov byte [ebp - 0x1248], al
jmp 0x1004d543
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, 1
jne 0x1004d137
lea edx, [ebp - 0x1240]
mov ecx, 0x10103a80
call fcn.100348d0
cmp byte [0x1014b4ef], 0
jne 0x1004d1f9
lea edx, [ebp - 0x123c]
mov ecx, 0x10103a40
call fcn.100348d0
or byte [ebp - 0x1248], 1
jmp 0x1004d53d
mov al, byte [ebp - 0x1248]
xor cl, cl
and al, 0xfe
or al, cl
mov byte [ebp - 0x1248], al
jmp 0x1004d543
cmp dword [ebx + 0x1c], edi
je 0x1004d53d
mov eax, dword [ebp - 0x1274]
lea ecx, [ebp - 0x820]
mov edx, 0x400
push dword [eax + 0x1c]
call fcn.100a4780
add esp, 4
lea eax, [ebp - 0x820]
push 0x400
push eax
call dword [sym.imp.SHELL32.dll_DoEnvironmentSubstW]
push str..library_ms
lea eax, [ebp - 0x820]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindExtensionW]
push eax
call fcn.100dc721
mov esi, eax
lea eax, [ebp - 0x820]
test esi, esi
push 0x3b
push eax
sete bl
call fcn.100d61ed
add esp, 0x10
mov edi, eax
test esi, esi
je 0x1004d5e4
test edi, edi
je 0x1004d5e4
mov ecx, dword [ebp - 0x1274]
test dword [ecx + 0x20], 0x100
jne 0x1004d5e4
lea ecx, [ebp - 0x820]
cmp edi, ecx
jbe 0x1004d2ca
xor ecx, ecx
mov word [eax], cx
sub eax, 2
cmp word [eax], 0x20
jne 0x1004d2ca
lea ecx, [ebp - 0x820]
cmp eax, ecx
ja 0x1004d2b2
lea eax, [ebp - 0x820]
xor ebx, ebx
push eax
mov dword [ebp - 0x15b4], ebx
mov dword [ebp - 0x1240], ebx
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
test eax, eax
je 0x1004d3da
lea eax, [ebp - 0x820]
push eax
call dword [sym.imp.SHELL32.dll_SHSimpleIDListFromPath]
xor ecx, ecx
mov dword [ebp - 0x1240], eax
mov dword [ebp - 0x1598], ecx
test eax, eax
je 0x1004d408
lea eax, [ebp - 0x820]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindExtensionW]
cmp word [eax], bx
jne 0x1004d3b7
mov ax, word [ebp - 0x81e]
mov ebx, 0x20000000
cmp ax, 0x3a
jne 0x1004d36a
cmp word [ebp - 0x81c], 0x5c
jne 0x1004d35b
cmp word [ebp - 0x81a], 0
je 0x1004d35b
mov dword [ebp - 0x1598], 4
jmp 0x1004d408
mov dword [ebp - 0x1598], 3
jmp 0x1004d408
cmp word [ebp - 0x820], 0x5c
jne 0x1004d34c
cmp ax, 0x5c
jne 0x1004d34c
lea eax, [ebp - 0x81c]
push 0x5c
push eax
call fcn.100d61ed
add esp, 8
test eax, eax
je 0x1004d3ab
add eax, 4
push 0x5c
push eax
call fcn.100d61ed
add esp, 8
mov ecx, eax
neg ecx
sbb ecx, ecx
and ecx, 2
add ecx, 2
jmp 0x1004d402
mov dword [ebp - 0x1598], 1
jmp 0x1004d408
push str..lnk
push eax
call fcn.100dc721
add esp, 8
mov dword [ebp - 0x1598], 5
test eax, eax
jne 0x1004d408
mov ebx, 0x10000
jmp 0x1004d408
lea eax, [ebp - 0x15b4]
push eax
push 0x20410000
lea edx, [ebp - 0x1240]
lea ecx, [ebp - 0x820]
call fcn.100b09d0
mov ebx, dword [ebp - 0x15b4]
add esp, 8
xor ecx, ecx
mov dword [ebp - 0x1598], ecx
add edi, 2
cmp word [edi], 0x20
jne 0x1004d41a
add edi, 2
cmp word [edi], 0x20
je 0x1004d411
xor esi, esi
push edi
mov dword [ebp - 0x15c0], esi
mov dword [ebp - 0x123c], esi
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
test eax, eax
je 0x1004d4e4
push edi
call dword [sym.imp.SHELL32.dll_SHSimpleIDListFromPath]
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x123c], ecx
test ecx, ecx
je 0x1004d508
push edi
call dword [sym.imp.SHLWAPI.dll_PathFindExtensionW]
cmp word [eax], si
jne 0x1004d4c6
movzx eax, word [edi + 2]
mov esi, 0x20000000
cmp eax, 0x3a
jne 0x1004d489
cmp word [edi + 4], 0x5c
jne 0x1004d482
cmp word [edi + 6], 0
je 0x1004d482
mov eax, 4
jmp 0x1004d508
mov eax, 3
jmp 0x1004d508
cmp word [edi], 0x5c
jne 0x1004d478
cmp eax, 0x5c
jne 0x1004d478
push eax
lea eax, [edi + 4]
push eax
call fcn.100d61ed
add esp, 8
test eax, eax
je 0x1004d4bf
add eax, 4
push 0x5c
push eax
call fcn.100d61ed
add esp, 8
neg eax
sbb eax, eax
and eax, 2
add eax, 2
jmp 0x1004d508
mov eax, 1
jmp 0x1004d508
push str..lnk
push eax
call fcn.100dc721
add esp, 8
test eax, eax
mov eax, 5
jne 0x1004d508
mov esi, 0x10000
jmp 0x1004d508
lea eax, [ebp - 0x15c0]
mov ecx, edi
push eax
push 0x20410000
lea edx, [ebp - 0x123c]
call fcn.100b09d0
mov esi, dword [ebp - 0x15c0]
add esp, 8
xor eax, eax
cmp dword [ebp - 0x1240], 0
jne 0x1004d588
mov ecx, dword [ebp - 0x123c]
test ecx, ecx
je 0x1004d531
mov dword [ebp - 0x1240], ecx
mov ebx, esi
mov dword [ebp - 0x123c], 0
mov edi, eax
jmp 0x1004d58e
mov edi, dword [ebp - 0x1598]
mov ebx, dword [ebp - 0x158c]
mov edx, dword [ebp - 0x1590]
cmp dword [ebx + 0x24], 0
je 0x1004d554
cmp dword [ebx + 4], 0x2f
je 0x1004d554
test dl, 2
jne 0x1004d55a
cmp dword [ebx + 4], 0x2e
jne 0x1004d561
or byte [ebp - 0x1248], 1
test byte [ebp - 0x1248], 1
je 0x1004d75b
mov eax, dword [ebp - 0x1274]
test dword [eax + 0x20], 0x2000
je 0x1004d75b
mov cl, 1
jmp 0x1004d75d
mov edi, dword [ebp - 0x1598]
mov al, byte [ebp - 0x1248]
mov ecx, ebx
shr ecx, 0x10
add cl, cl
xor cl, al
and cl, 2
xor cl, al
test ebx, 0x20000000
je 0x1004d5d2
test ebx, 0x410000
je 0x1004d5c0
cmp byte [0x1014b629], 0
je 0x1004d5d2
test cl, 2
je 0x1004d5d2
mov al, 1
and cl, 0xfe
or cl, al
mov byte [ebp - 0x1248], cl
jmp 0x1004d537
xor al, al
and cl, 0xfe
or cl, al
mov byte [ebp - 0x1248], cl
jmp 0x1004d537
lea eax, [ebp - 0x820]
xor esi, esi
push eax
mov dword [ebp - 0x15b4], esi
mov dword [ebp - 0x1240], esi
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
test eax, eax
je 0x1004d6dd
lea eax, [ebp - 0x820]
push eax
call dword [sym.imp.SHELL32.dll_SHSimpleIDListFromPath]
mov ecx, eax
mov dword [ebp - 0x1240], ecx
test ecx, ecx
jne 0x1004d627
xor edi, edi
jmp 0x1004d537
lea eax, [ebp - 0x820]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindExtensionW]
cmp word [eax], si
jne 0x1004d6bf
mov ax, word [ebp - 0x81e]
mov esi, 0x20000000
cmp ax, 0x3a
jne 0x1004d677
cmp word [ebp - 0x81c], 0x5c
jne 0x1004d66d
cmp word [ebp - 0x81a], 0
je 0x1004d66d
mov edi, 4
jmp 0x1004d70d
mov edi, 3
jmp 0x1004d70d
cmp word [ebp - 0x820], 0x5c
jne 0x1004d663
cmp ax, 0x5c
jne 0x1004d663
lea eax, [ebp - 0x81c]
push 0x5c
push eax
call fcn.100d61ed
add esp, 8
test eax, eax
je 0x1004d6b8
add eax, 4
push 0x5c
push eax
call fcn.100d61ed
add esp, 8
mov edi, eax
neg edi
sbb edi, edi
and edi, 2
add edi, 2
jmp 0x1004d70d
mov edi, 1
jmp 0x1004d70d
push str..lnk
push eax
call fcn.100dc721
add esp, 8
mov edi, 5
test eax, eax
jne 0x1004d70d
mov esi, 0x10000
jmp 0x1004d70d
lea eax, [ebp - 0x15b4]
push eax
push 0x20410000
lea edx, [ebp - 0x1240]
lea ecx, [ebp - 0x820]
call fcn.100b09d0
add esp, 8
xor edi, edi
test eax, eax
js 0x1004d537
mov esi, dword [ebp - 0x15b4]
test bl, bl
je 0x1004d717
and esi, 0xffbfffff
mov al, byte [ebp - 0x1248]
mov ecx, esi
shr ecx, 0x10
add cl, cl
xor cl, al
and cl, 2
xor cl, al
mov byte [ebp - 0x1248], cl
test esi, 0x20000000
je 0x1004d5d2
mov eax, dword [ebp - 0x1274]
test dword [eax + 0x20], 0x100
jne 0x1004d5d2
test esi, 0x410000
jmp 0x1004d5b0
xor cl, cl
mov al, byte [ebp - 0x1247]
and al, 0xfe
or al, cl
cmp byte [ebp - 0x15a8], 0
mov ecx, dword [0x1014e1f8]
mov byte [ebp - 0x1247], al
mov eax, dword [0x1014e1fc]
cmove eax, ecx
test byte [ebp - 0x1248], 0x20
je 0x1004d790
test eax, eax
cmove eax, ecx
cmp byte [ebp - 0x15a4], 0
jne 0x1004d7d0
mov ecx, dword [ebp - 0x15a0]
cmp byte [ecx + 0x30], 0
jne 0x1004d7d0
cmp byte [0x1014b4d1], 0
je 0x1004d7b8
mov esi, 2
lea eax, [esi + 0x3e]
jmp 0x1004d7d7
cmp eax, 2
jne 0x1004d7c5
lea esi, [eax - 1]
lea eax, [esi + 0x1f]
jmp 0x1004d7d7
xor esi, esi
cmp eax, 1
je 0x1004d7d2
xor eax, eax
jmp 0x1004d7d7
xor esi, esi
mov eax, 0x10
mov ecx, dword [ebp - 0x158c]
mov ebx, eax
or ebx, 3
cmp dword [ecx + 0x1c], 0
cmove ebx, eax
test bl, 0x70
jne 0x1004d7fd
mov dword [ebp - 0x1268], 0
jmp 0x1004d941
mov eax, dword [ecx + 0x18]
test eax, eax
je 0x1004d83b
push str.none
push eax
call fcn.100dc721
mov ebx, dword [ebp - 0x158c]
add esp, 8
test eax, eax
jne 0x1004d827
mov dword [ebp - 0x1268], eax
jmp 0x1004d947
push esi
push dword [ebx + 0x18]
call fcn.1002bc70
mov dword [ebp - 0x1268], eax
jmp 0x1004d947
test edi, edi
je 0x1004d852
cmp edi, 5
je 0x1004d852
push esi
mov ecx, edi
call fcn.10034270
push eax
jmp 0x1004d936
mov ecx, dword [ebp - 0x1240]
test ecx, ecx
je 0x1004d933
mov dword [ebp - 0x1590], 0
lea eax, [ebp - 0x1590]
mov byte [ebp - 4], 9
push eax
push 0x10103e10
push ecx
call dword [sym.imp.SHELL32.dll_SHCreateItemFromIDList]
test eax, eax
js 0x1004d919
push 0
push ebx
push dword [ebp - 0x1240]
mov ecx, 0x1014be70
push dword [ebp - 0x1590]
call fcn.1002ac30
push 0x1014be70
mov dword [ebp - 0x1268], eax
mov dword [ebp - 0x15cc], 0x1014be70
mov byte [ebp - 0x15c8], 0
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
mov edx, dword [ebp - 0x1268]
mov al, byte [ebp - 0x1248]
mov bl, byte [edx + 0x2b]
shl bl, 2
xor bl, byte [ebp - 0x1247]
and bl, 4
xor bl, byte [ebp - 0x1247]
mov cl, bl
mov byte [ebp - 0x1247], bl
shr cl, 1
xor cl, al
and cl, 2
xor al, cl
lea ecx, [ebp - 0x15cc]
mov byte [ebp - 0x1248], al
mov al, byte [edx + 0x2c]
shl al, 3
xor al, bl
and al, 8
xor al, bl
mov byte [ebp - 0x1247], al
call fcn.100233f0
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0x1590]
test eax, eax
je 0x1004d92d
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 8
jmp 0x1004d941
push esi
push 0
call fcn.1002bc70
mov dword [ebp - 0x1268], eax
mov ebx, dword [ebp - 0x158c]
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x1004d970
push str.none
push eax
call fcn.100dc721
add esp, 8
test eax, eax
jne 0x1004d970
lea ecx, [ebp - 0x1270]
call fcn.10022f70
jmp 0x1004e29c
cmp dword [ebx + 0x10], 0
je 0x1004e012
cmp dword [ebp - 0x1278], 0x21
jne 0x1004d9f9
push 0x200
lea eax, [ebp - 0xa20]
push 0
push eax
call fcn.100d6eb0
add esp, 0xc
mov dword [ebp - 0x1590], 0x100
lea eax, [ebp - 0x1590]
push eax
lea eax, [ebp - 0xa20]
push eax
push 3
call dword [sym.imp.Secur32.dll_GetUserNameExW]
test al, al
jne 0x1004d9db
lea eax, [ebp - 0x1590]
mov dword [ebp - 0x1590], 0x100
push eax
lea eax, [ebp - 0xa20]
push eax
call dword [sym.imp.ADVAPI32.dll_GetUserNameW]
lea eax, [ebp - 0xa20]
push eax
push dword [ebx + 0x10]
lea eax, [ebp - 0x1270]
push eax
call fcn.10020290
add esp, 0xc
jmp 0x1004e29c
cmp dword [ebp - 0x1278], 0x26
jne 0x1004dee3
mov esi, dword [0x1014e914]
mov dword [0x1014b508], 0
cmp dword [esi], 0
je 0x1004da56
nop dword [eax + eax]
mov eax, dword [esi + 4]
cmp eax, 2
je 0x1004da37
cmp eax, 3
je 0x1004da37
cmp eax, 4
je 0x1004da37
cmp eax, 5
jne 0x1004da4e
push str.ShutdownCommand
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x1004db03
add esi, 0x60
cmp dword [esi], 0
jne 0x1004da20
xor esi, esi
xor edx, edx
mov byte [ebp - 0x1c], 0
test esi, esi
mov eax, 8
cmovns edx, esi
cmp edx, 9
lea ecx, [eax + 0x23]
cmovge edx, eax
call fcn.1004c640
and al, 1
mov ecx, 0x2a
mov byte [ebp - 0x1b], al
call fcn.1004c640
and al, 1
mov ecx, 0x21
mov byte [ebp - 0x1a], al
call fcn.1004c640
and al, 1
mov ecx, 0x28
mov byte [ebp - 0x19], al
call fcn.1004c640
and al, 1
mov ecx, 0x29
mov byte [ebp - 0x18], al
call fcn.1004c640
and al, 1
mov ecx, 0x2d
mov byte [ebp - 0x17], al
call fcn.1004c640
and al, 1
mov ecx, 0x2c
mov byte [ebp - 0x16], al
call fcn.1004c640
and al, 1
mov ecx, 0x25
mov byte [ebp - 0x15], al
call fcn.1004c640
and al, 1
mov byte [ebp - 0x14], al
cmp byte [ebp + edx - 0x1c], 0
jne 0x1004db70
mov eax, 1
cmp byte [ebp + eax - 0x1c], 0
jne 0x1004db21
inc eax
cmp eax, 9
jl 0x1004daf4
jmp 0x1004db23
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
mov esi, dword [esi + 0x40]
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
jmp 0x1004da58
mov edx, eax
cmp byte [ebp + edx - 0x1c], 0
jne 0x1004db70
mov edx, dword [ebp - 0x1270]
add edx, 0xfffffff0
mov dword [ebp - 4], 0xb
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004db4f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x15a8]
add ebx, 0x30
mov edx, dword [ebp - 0x159c]
mov edi, dword [ebp - 0x15a0]
mov dword [ebp - 4], 0xffffffff
jmp 0x1004cb24
cmp edx, 1
jne 0x1004dbeb
mov edx, str.Shut_Down
mov ecx, str.Menu.Shutdown
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004db8e
xor ecx, ecx
jmp 0x1004dba2
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004db93
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
cmp byte [0x1014b4f2], 0
je 0x1004dbc4
mov edx, str.Update_and_shut_down
mov ecx, str.Menu.ShutdownUpdate
jmp 0x1004dbce
mov edx, 0x1010ca30
mov ecx, str.Menu.ShutdownTip
call fcn.100a4f10
mov ecx, dword [ebp - 0x1274]
mov dword [ecx + 0x14], eax
mov dword [0x1014b508], 0x2b
jmp 0x1004e29c
cmp edx, 2
jne 0x1004dc79
mov edx, str.Restart
mov ecx, str.Menu.Restart
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004dc0d
xor ecx, ecx
jmp 0x1004dc21
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004dc12
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
cmp byte [0x1014b4f2], 0
je 0x1004dc52
call fcn.100b0560
mov ecx, 0x602
cmp ax, cx
jb 0x1004dc52
mov edx, str.Update_and_restart
mov ecx, str.Menu.RestartUpdate
jmp 0x1004dc5c
mov edx, 0x1010ca30
mov ecx, str.Menu.RestartTip
call fcn.100a4f10
mov ecx, dword [ebp - 0x1274]
mov dword [ecx + 0x14], eax
mov dword [0x1014b508], 0x2a
jmp 0x1004e29c
cmp edx, 3
jne 0x1004dce3
mov edx, str.Log_off
mov ecx, str.Menu.LogOffShort
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004dc97
xor ecx, ecx
jmp 0x1004dcaf
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004dca0
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
mov edx, 0x1010ca30
mov ecx, str.Menu.LogOffTip
call fcn.100a4f10
mov ecx, dword [ebp - 0x1274]
mov dword [ecx + 0x14], eax
mov dword [0x1014b508], 0x21
jmp 0x1004e29c
cmp edx, 4
jne 0x1004dd49
mov edx, 0x10111a78
mov ecx, str.Menu.Sleep
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004dd01
xor ecx, ecx
jmp 0x1004dd15
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004dd06
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
mov edx, 0x1010ca30
mov ecx, str.Menu.SleepTip
call fcn.100a4f10
mov ecx, dword [ebp - 0x1274]
mov dword [ecx + 0x14], eax
mov dword [0x1014b508], 0x28
jmp 0x1004e29c
cmp edx, 5
jne 0x1004ddb3
mov edx, str.Hibernate
mov ecx, str.Menu.Hibernate
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004dd67
xor ecx, ecx
jmp 0x1004dd7f
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004dd70
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
mov edx, 0x1010ca30
mov ecx, str.Menu.HibernateTip
call fcn.100a4f10
mov ecx, dword [ebp - 0x1274]
mov dword [ecx + 0x14], eax
mov dword [0x1014b508], 0x29
jmp 0x1004e29c
cmp edx, 8
jne 0x1004de0e
mov edx, str.Shut_Down...
mov ecx, str.Menu.ShutdownBox
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004ddd1
xor ecx, ecx
jmp 0x1004dde5
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004ddd6
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
mov eax, dword [ebp - 0x1274]
mov dword [eax + 0x14], 0x1010ca30
mov dword [0x1014b508], 0x25
jmp 0x1004e29c
cmp edx, 6
jne 0x1004de74
mov edx, str.Lock
mov ecx, str.Menu.Lock
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004de2c
xor ecx, ecx
jmp 0x1004de40
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004de31
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
mov edx, 0x1010ca30
mov ecx, str.Menu.LockTip
call fcn.100a4f10
mov ecx, dword [ebp - 0x1274]
mov dword [ecx + 0x14], eax
mov dword [0x1014b508], 0x2d
jmp 0x1004e29c
cmp edx, 7
jne 0x1004e29c
mov edx, str.Switch_User
mov ecx, str.Menu.SwitchUser
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004de96
xor ecx, ecx
jmp 0x1004deaf
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004dea0
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
mov edx, 0x1010ca30
mov ecx, str.Menu.SwitchUserTip
call fcn.100a4f10
mov ecx, dword [ebp - 0x1274]
mov dword [ecx + 0x14], eax
mov dword [0x1014b508], 0x2c
jmp 0x1004e29c
cmp byte [0x1014b4f2], 0
je 0x1004dfd1
mov eax, dword [ebp - 0x15a0]
mov al, byte [eax + 0x30]
test al, al
je 0x1004dfd1
cmp dword [ebp - 0x1278], 0x2b
jne 0x1004df61
mov edx, str.Update_and_shut_down
mov ecx, str.Menu.ShutdownUpdate
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004df33
xor ecx, ecx
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
jmp 0x1004e29c
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004df40
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
jmp 0x1004e29c
test al, al
je 0x1004dfd1
cmp dword [ebp - 0x1278], 0x2a
jne 0x1004dfd1
call fcn.100b0560
mov ecx, 0x602
cmp ax, cx
jb 0x1004dfd1
mov edx, str.Update_and_restart
mov ecx, str.Menu.RestartUpdate
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1004dfa6
xor ecx, ecx
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
jmp 0x1004e29c
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004dfb0
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
jmp 0x1004e29c
mov edx, dword [ebx + 0x10]
test edx, edx
jne 0x1004dfec
xor ecx, ecx
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
jmp 0x1004e29c
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004dff1
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
jmp 0x1004e29c
cmp dword [ebp - 0x1240], 0
je 0x1004e165
cmp dword [ebp - 0x1268], 0
je 0x1004e0c6
push 0x1014be70
mov dword [ebp - 0x15d4], 0x1014be70
mov byte [ebp - 0x15d0], 0
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0x1268]
cmp byte [edx + 0x2b], 0
je 0x1004e0b7
mov edx, dword [edx + 0x54]
mov esi, dword [ebp - 0x1270]
add esi, 0xfffffff0
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x1004e0b7
mov eax, dword [esi + 0xc]
lea edi, [esi + 0xc]
shr eax, 0x1f
test al, al
jne 0x1004e0a8
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x1004e0a8
call fcn.10021e50
mov ebx, eax
mov byte [ebp - 4], 0xd
or ecx, 0xffffffff
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x1004e09d
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
lea eax, [ebx + 0x10]
mov dword [ebp - 0x1270], eax
jmp 0x1004e0b7
push dword [edx - 0xc]
lea ecx, [ebp - 0x1270]
push edx
call fcn.10021eb0
lea ecx, [ebp - 0x15d4]
mov byte [ebp - 4], 8
call fcn.100233f0
mov eax, dword [ebp - 0x1270]
cmp dword [eax - 0xc], 0
jne 0x1004e138
push 0x2b4
lea eax, [ebp - 0x1588]
push 0
push eax
call fcn.100d6eb0
add esp, 0xc
lea eax, [ebp - 0x1588]
push 0x208
push 0x2b4
push eax
push 0
push dword [ebp - 0x1240]
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
lea ecx, [ebp - 0x157c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004e110
sub ecx, edx
lea eax, [ebp - 0x157c]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x1270]
call fcn.10021eb0
mov eax, dword [ebp - 0x1270]
push 0x26
push eax
call fcn.100d61ed
add esp, 8
test eax, eax
je 0x1004e29c
push 0x10111bf4
push 0x10111bfc
lea ecx, [ebp - 0x1270]
call fcn.100624a0
jmp 0x1004e29c
mov eax, dword [ebp - 0x1270]
cmp dword [eax - 0xc], 0
jne 0x1004e29c
mov eax, dword [ebp - 0x1278]
cmp eax, 1
je 0x1004e29c
cmp eax, 0x2f
je 0x1004e29c
test byte [ebp - 0x1248], 0x20
jne 0x1004e29c
mov eax, dword [ebx]
test eax, eax
je 0x1004e1d4
mov ecx, 0x10111c00
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x1004e1cb
test dx, dx
je 0x1004e1c7
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x1004e1cb
add eax, 4
add ecx, 4
test dx, dx
jne 0x1004e1a5
xor eax, eax
jmp 0x1004e1d0
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1004e204
cmp dword [ebx + 0x1c], 0
jne 0x1004e204
cmp dword [ebx + 8], 0
jne 0x1004e204
cmp dword [ebx + 0x24], 0
jne 0x1004e204
cmp dword [ebx + 4], 0x27
jne 0x1004e204
or byte [ebp - 0x1247], 0x10
xor al, al
mov dword [ebp - 0x1278], 1
jmp 0x1004e2b2
mov edx, 0xbbd
lea ecx, [ebp - 0x15c4]
call fcn.100aedf0
mov byte [ebp - 4], 0xe
mov edx, dword [eax]
mov esi, dword [ebp - 0x1270]
add esi, 0xfffffff0
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x1004e276
mov eax, dword [esi + 0xc]
lea edi, [esi + 0xc]
shr eax, 0x1f
test al, al
jne 0x1004e267
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x1004e267
call fcn.10021e50
mov ebx, eax
mov byte [ebp - 4], 0xf
or ecx, 0xffffffff
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x1004e25c
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
lea eax, [ebx + 0x10]
mov dword [ebp - 0x1270], eax
jmp 0x1004e276
push dword [edx - 0xc]
lea ecx, [ebp - 0x1270]
push edx
call fcn.10021eb0
mov edx, dword [ebp - 0x15c4]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x10
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004e298
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x1278]
cmp eax, 9
je 0x1004e2b0
cmp eax, 0xc
je 0x1004e2b0
xor al, al
jmp 0x1004e2b2
mov al, 4
mov cl, byte [ebp - 0x1248]
and cl, 0xfb
or cl, al
mov bl, cl
mov byte [ebp - 0x1248], cl
and bl, 0x20
je 0x1004e2d4
mov al, cl
and al, 0xfe
mov byte [ebp - 0x1248], al
mov al, cl
and al, 0xfe
test bl, bl
movzx edx, al
movzx eax, cl
cmove edx, eax
cmp byte [ebp - 0x15a4], 0
je 0x1004e346
mov esi, dword [ebp - 0x15bc]
and dl, 0xde
mov byte [ebp - 0x1248], dl
mov dword [ebp - 0x1278], 0x35
test esi, esi
js 0x1004e373
mov ebx, dword [ebp - 0x15ac]
lea ecx, [ebp - 0x1278]
imul eax, esi, 0x54
push ecx
push ecx
mov ecx, ebx
add eax, dword [ebx]
push eax
lea eax, [ebp - 0x15dc]
push eax
call fcn.100620f0
mov eax, dword [ebp - 0x15a0]
inc esi
inc dword [ebp - 0x15b0]
mov dword [ebp - 0x15bc], esi
inc dword [eax + 0x19c]
jmp 0x1004e373
mov esi, dword [ebp - 0x15b0]
lea edx, [ebp - 0x1278]
mov ecx, dword [ebp - 0x15ac]
imul eax, esi, 0x54
push edx
push ecx
add eax, dword [ecx]
push eax
lea eax, [ebp - 0x15e0]
push eax
call fcn.100620f0
inc esi
mov dword [ebp - 0x15b0], esi
mov edx, dword [ebp - 0x1270]
add edx, 0xfffffff0
mov dword [ebp - 4], 0x11
jmp 0x1004ccb3
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