Function at 0x10053440
Capabilities:
Check os version
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100fa6f2
mov eax, dword fs:[0]
push eax
sub esp, 0x564
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 - 0x4ec], edi
cmp byte [edi + 0x30], 0
mov eax, dword [edi + 0xa4]
je 0x100534ab
mov dword [ebp - 0x4f0], eax
lea ebx, [edi + 0xa0]
mov eax, dword [ebx]
mov dword [ebp - 0x4f4], eax
lea eax, [ebp - 0x4f0]
push eax
mov dword [ebp - 0x50c], ebx
lea eax, [ebp - 0x4f4]
jmp 0x100534e7
mov ecx, dword [edi + 0xa0]
mov dword [ebp - 0x530], eax
lea eax, [edi + 0xa0]
mov dword [ebp - 0x50c], eax
imul eax, dword [edi + 0x1c8], 0x54
mov dword [ebp - 0x528], ecx
add eax, ecx
mov ecx, edi
mov dword [ebp - 0x520], eax
lea eax, [ebp - 0x530]
push eax
lea eax, [ebp - 0x520]
push eax
call fcn.10050b30
cmp dword [edi + 0x4c], 0xffffffff
mov dword [edi + 0x38], 0
je 0x10053508
mov ecx, edi
mov dword [edi + 0x4c], 0xffffffff
call fcn.10059df0
cmp dword [edi + 0xec], 0xffffffff
je 0x10053522
mov ecx, edi
mov dword [edi + 0xec], 0xffffffff
call fcn.10059df0
call dword [sym.imp.USER32.dll_GetMessagePos]
push 0x1014c070
mov dword [0x1014b510], eax
mov dword [edi + 0x178], 0
call fcn.10080e70
mov eax, dword [0x1014c078]
mov ebx, dword [eax - 0xc]
xor eax, eax
mov dword [edi + 0x1d0], 0
mov dword [edi + 0x1d4], 0
mov dword [edi + 0x1d8], 0
mov dword [ebp - 0x528], eax
mov dword [ebp - 4], eax
call fcn.100215d0
mov ecx, eax
test ecx, ecx
je 0x10054e1d
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x52c], esi
mov dword [ebp - 4], 1
mov dword [ebp - 0x534], 0
mov byte [ebp - 4], 2
test ebx, ebx
jne 0x100536f6
cmp byte [0x1014b625], bl
jne 0x100536f6
mov eax, dword [0x1014c07c]
cmp eax, dword [0x1014c080]
jne 0x100536f6
mov eax, dword [0x1014c088]
cmp eax, dword [0x1014c08c]
jne 0x100536f6
mov eax, dword [0x1014c094]
cmp eax, dword [0x1014c098]
jne 0x100536f6
lea eax, [ebp - 0x52c]
push eax
cmp byte [0x1014b4d1], bl
je 0x10053602
lea ecx, [edi + 0x1a4]
jmp 0x1005360b
mov ecx, dword [edi + 0x44]
add ecx, 0x1a4
call fcn.100491a0
mov esi, dword [ebp - 0x52c]
push 4
push str.www.
push esi
call fcn.100de265
add esp, 0xc
test eax, eax
je 0x100536d1
push 5
push str.http:
push esi
call fcn.100de265
add esp, 0xc
test eax, eax
je 0x100536d1
push 6
push str.shell:
push esi
call fcn.100de265
add esp, 0xc
test eax, eax
jne 0x1005369b
push eax
push eax
mov dword [ebp - 0x4f8], eax
lea eax, [ebp - 0x4f8]
push eax
push 0
push esi
call dword [sym.imp.SHELL32.dll_SHParseDisplayName]
xor esi, esi
mov ecx, 1
test eax, eax
mov eax, dword [ebp - 0x4f8]
cmovns esi, ecx
mov dword [ebp - 0x528], esi
test eax, eax
je 0x10053695
push eax
call dword [sym.imp.SHELL32.dll_ILFree]
test esi, esi
je 0x100536f6
jmp 0x100536db
push 2
push 0x10112808
push esi
call fcn.100de413
add esp, 0xc
test eax, eax
je 0x100536f6
push 0
push 0
lea eax, [ebp - 0x534]
push eax
push esi
call dword [sym.imp.SHELL32.dll_SHEvaluateSystemCommandTemplate]
test eax, eax
js 0x100536f6
mov dword [ebp - 0x528], 1
jmp 0x100536db
mov dword [ebp - 0x528], 6
lea eax, [ebp - 0x510]
mov dword [ebp - 0x510], 0
push eax
mov ecx, 0x1014c07c
call fcn.100352c0
mov dword [ebp - 0x4e4], 0
mov dword [ebp - 0x4e0], 0
mov dword [ebp - 0x4dc], 0
xor eax, eax
xor edi, edi
mov dword [ebp - 0x508], eax
mov dword [ebp - 0x51c], eax
mov dword [ebp - 0x518], edi
mov dword [ebp - 0x514], eax
mov byte [ebp - 4], 4
mov dword [ebp - 0x520], edi
mov dword [ebp - 0x524], edi
mov dword [ebp - 0x4e8], edi
mov dword [ebp - 0x530], edi
mov dword [ebp - 0x510], eax
cmp byte [0x1014b4d1], al
je 0x100537e5
cmp dword [0x1014e6d8], edi
mov ecx, 0x1e10
mov esi, dword [0x1014dd20]
mov eax, 0x1ce8
cmovne eax, ecx
mov dword [ebp - 0x524], esi
mov ecx, dword [ebp - 0x4ec]
mov eax, dword [eax + 0x1014c288]
mov edx, dword [ecx + 0x1a0]
mov dword [ebp - 0x520], eax
xor eax, eax
cmp byte [0x1014b4fb], al
sete al
imul ecx, dword [ecx + 0x198], 0x54
inc eax
sub edx, eax
mov eax, dword [ebp - 0x50c]
imul edx, esi
mov eax, dword [eax]
mov ecx, dword [ecx + eax + 0x24]
sub ecx, edx
sub ecx, dword [0x1014e268]
sub ecx, dword [0x1014e890]
cmp byte [0x1014c070], 0
mov dword [ebp - 0x4e8], ecx
jne 0x100537e5
call fcn.1005fcd0
test al, al
jne 0x100537e5
add dword [ebp - 0x4e8], esi
test ebx, ebx
je 0x100539e1
mov edx, dword [0x1014c0a4]
mov ecx, edx
mov eax, dword [ebp - 0x4dc]
mov esi, dword [0x1014c0a0]
sub ecx, esi
sub eax, dword [ebp - 0x4e4]
sar ecx, 2
sar eax, 3
cmp ecx, eax
jbe 0x10053837
cmp ecx, 0x1fffffff
ja 0x10054e27
push ecx
lea ecx, [ebp - 0x4e4]
call fcn.100627a0
mov edx, dword [0x1014c0a4]
mov esi, dword [0x1014c0a0]
cmp esi, edx
je 0x10053914
nop
mov eax, dword [ebp - 0x4e0]
sub eax, dword [ebp - 0x4e4]
sar eax, 3
cmp eax, 0x7d0
jge 0x10053914
mov eax, dword [esi]
mov dword [ebp - 0x4f8], eax
mov byte [ebp - 4], 5
call fcn.100215d0
mov ecx, eax
test ecx, ecx
je 0x10054e1d
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov eax, dword [ebp - 0x4f8]
mov dword [ebp - 0x554], ebx
mov dword [ebp - 0x550], eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x4e0]
mov dword [ebp - 0x4f0], eax
cmp dword [ebp - 0x4dc], eax
je 0x100538cc
lea ecx, [ebx - 0x10]
call fcn.10021e50
mov ecx, dword [ebp - 0x4f0]
add eax, 0x10
mov dword [ecx], eax
mov eax, dword [ebp - 0x4f8]
mov dword [ecx + 4], eax
add dword [ebp - 0x4e0], 8
jmp 0x100538e5
lea ecx, [ebp - 0x554]
push ecx
push eax
lea ecx, [ebp - 0x4e4]
call fcn.10063240
mov ebx, dword [ebp - 0x554]
add ebx, 0xfffffff0
mov byte [ebp - 4], 7
or eax, 0xffffffff
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x10053901
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 4
mov byte [ebp - 4], 4
cmp esi, dword [0x1014c0a4]
jne 0x10053840
call fcn.100215d0
mov ecx, eax
test ecx, ecx
je 0x10054e2c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x4fc], eax
mov eax, 0x1010ca30
mov byte [ebp - 4], 8
test eax, 0xffff0000
jne 0x1005395e
movzx esi, ax
mov ecx, esi
call fcn.10027d50
test eax, eax
je 0x10053970
push esi
push eax
lea ecx, [ebp - 0x4fc]
call fcn.10026d00
jmp 0x10053970
push 0
push 0x1010ca30
lea ecx, [ebp - 0x4fc]
call fcn.10021eb0
mov ebx, dword [ebp - 0x4ec]
lea eax, [ebp - 0x4fc]
push 0
push 7
push eax
lea eax, [ebp - 0x4e4]
mov byte [ebp - 4], 9
push eax
mov ecx, ebx
call fcn.10052f00
mov edx, dword [ebp - 0x4fc]
mov esi, eax
add edx, 0xfffffff0
mov byte [ebp - 4], 0xa
or ecx, 0xffffffff
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x100539b7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
cmp byte [0x1014b4d1], 0
je 0x10053c8c
mov eax, dword [ebp - 0x4e8]
cdq
idiv dword [ebp - 0x524]
mov dword [ebx + 0x1d0], esi
mov dword [ebx + 0x1d4], eax
cmp byte [0x1014b4d1], 0
je 0x10053c8c
mov eax, dword [0x1014c080]
xor ebx, ebx
mov ecx, dword [0x1014c07c]
cmp ecx, eax
je 0x10053a4f
sub eax, ecx
lea ecx, [ebp - 0x51c]
sar eax, 2
mov dword [ebp - 0x508], eax
lea eax, [ebp - 0x508]
push eax
push ebx
call fcn.10012820
mov esi, dword [ebp - 0x4ec]
mov edx, dword [ebp - 0x51c]
mov edi, dword [ebp - 0x518]
mov dword [ebp - 0x508], edx
cmp dword [esi + 0x1b4], 1
jne 0x10053a57
mov ebx, dword [0x1014c080]
sub ebx, dword [0x1014c07c]
sar ebx, 2
jmp 0x10053a57
mov esi, dword [ebp - 0x4ec]
xor edx, edx
mov eax, dword [0x1014c098]
mov ecx, dword [0x1014c094]
cmp ecx, eax
je 0x10053ac3
sub eax, ecx
sar eax, 2
mov dword [ebp - 0x504], eax
cmp dword [ebp - 0x514], edi
je 0x10053a86
mov dword [edi], eax
add edi, 4
mov dword [ebp - 0x518], edi
jmp 0x10053aab
lea eax, [ebp - 0x504]
push eax
push edi
lea ecx, [ebp - 0x51c]
call fcn.10012820
mov edx, dword [ebp - 0x51c]
mov edi, dword [ebp - 0x518]
mov dword [ebp - 0x508], edx
cmp dword [esi + 0x1b4], 3
jne 0x10053ac3
mov ebx, dword [0x1014c098]
sub ebx, dword [0x1014c094]
sar ebx, 2
mov eax, dword [0x1014c08c]
mov ecx, dword [0x1014c088]
cmp ecx, eax
je 0x10053b2f
sub eax, ecx
sar eax, 2
mov dword [ebp - 0x540], eax
cmp dword [ebp - 0x514], edi
je 0x10053af2
mov dword [edi], eax
add edi, 4
mov dword [ebp - 0x518], edi
jmp 0x10053b17
lea eax, [ebp - 0x540]
push eax
push edi
lea ecx, [ebp - 0x51c]
call fcn.10012820
mov edx, dword [ebp - 0x51c]
mov edi, dword [ebp - 0x518]
mov dword [ebp - 0x508], edx
cmp dword [esi + 0x1b4], 2
jne 0x10053b2f
mov ebx, dword [0x1014c08c]
sub ebx, dword [0x1014c088]
sar ebx, 2
mov eax, dword [0x1014c0ac]
mov esi, dword [eax]
cmp esi, eax
je 0x10053bb3
nop word [eax + eax]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 0x18]
cmp ecx, eax
je 0x10053b9d
sub eax, ecx
sar eax, 3
mov dword [ebp - 0x500], eax
cmp dword [ebp - 0x514], edi
je 0x10053b6a
mov dword [edi], eax
add edi, 4
mov dword [ebp - 0x518], edi
jmp 0x10053b83
lea eax, [ebp - 0x500]
push eax
push edi
lea ecx, [ebp - 0x51c]
call fcn.10012820
mov edi, dword [ebp - 0x518]
mov eax, dword [ebp - 0x4ec]
mov eax, dword [eax + 0x1b4]
cmp eax, dword [esi + 0xc]
jne 0x10053b9d
mov ebx, dword [esi + 0x18]
sub ebx, dword [esi + 0x14]
sar ebx, 3
mov esi, dword [esi]
cmp esi, dword [0x1014c0ac]
jne 0x10053b40
mov edx, dword [ebp - 0x51c]
mov dword [ebp - 0x508], edx
mov eax, edi
sub eax, edx
sar eax, 2
mov dword [ebp - 0x4f8], eax
test eax, eax
jle 0x10053c8c
mov ecx, eax
mov eax, dword [ebp - 0x4e8]
imul ecx, dword [ebp - 0x520]
sub eax, ecx
cdq
idiv dword [ebp - 0x524]
mov esi, eax
mov eax, dword [ebp - 0x4f8]
cmp esi, eax
jle 0x10053c4c
push dword [ebp - 0x538]
mov ecx, dword [ebp - 0x508]
mov edx, edi
push eax
call fcn.10064a60
mov edx, dword [ebp - 0x4f8]
add esp, 8
xor ecx, ecx
test edx, edx
jle 0x10053c4c
mov edi, edx
mov eax, dword [ebp - 0x508]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0x510], eax
imul eax, edi
cmp eax, esi
jg 0x10053c37
mov eax, dword [ebp - 0x510]
inc ecx
sub esi, eax
dec edi
cmp ecx, edx
jl 0x10053c11
jmp 0x10053c47
lea eax, [edx - 1]
sub esi, ecx
add eax, esi
cdq
idiv edi
mov dword [ebp - 0x510], eax
cmp eax, 3
jge 0x10053c56
mov dword [ebp - 0x510], 3
test ebx, ebx
jle 0x10053c69
imul ebx, dword [ebp - 0x524]
add ebx, dword [ebp - 0x520]
jmp 0x10053c6b
xor ebx, ebx
mov ecx, dword [ebp - 0x4e8]
cmp ebx, ecx
cmovle ecx, ebx
mov ebx, dword [ebp - 0x4e8]
sub ebx, ecx
mov dword [ebp - 0x530], ecx
mov dword [ebp - 0x4e8], ebx
jmp 0x10053c92
mov ebx, dword [ebp - 0x4e8]
mov edi, dword [0x1014c0ac]
xor esi, esi
mov eax, dword [0x1014c0b0]
mov dword [ebp - 0x504], esi
mov edi, dword [edi]
add eax, 3
je 0x1005474a
mov edx, dword [ebp - 0x4e0]
push ecx
mov ecx, dword [ebp - 0x4e4]
call fcn.10022040
mov eax, dword [ebp - 0x4e4]
add esp, 4
mov dword [ebp - 0x4e0], eax
test esi, esi
jne 0x10053cda
lea edx, [esi + 1]
jmp 0x10053cf1
cmp esi, 1
jne 0x10053ce4
lea edx, [esi + 2]
jmp 0x10053cf1
mov edx, 2
cmp esi, 2
je 0x10053cf1
mov edx, dword [edi + 0xc]
cmp byte [0x1014b4d1], 0
mov eax, dword [ebp - 0x4ec]
mov dword [ebp - 0x4fc], edx
je 0x10053d3c
mov ecx, dword [eax + 0x1b4]
cmp edx, ecx
mov eax, ebx
cmove eax, dword [ebp - 0x530]
sub eax, dword [ebp - 0x520]
cdq
idiv dword [ebp - 0x524]
mov ebx, eax
cmp dword [ebp - 0x4fc], ecx
je 0x10053d96
mov eax, dword [ebp - 0x510]
cmp ebx, eax
jle 0x10053d96
mov ebx, eax
jmp 0x10053d96
cmp edx, dword [eax + 0x1b4]
mov ebx, str.SearchResultsMax
mov esi, dword [0x1014e914]
mov eax, str.SearchResults
cmovne ebx, eax
cmp dword [esi], 0
je 0x10053d8e
nop word [eax + eax]
mov eax, dword [esi + 4]
cmp eax, 2
je 0x10053d77
cmp eax, 3
je 0x10053d77
cmp eax, 4
je 0x10053d77
cmp eax, 5
jne 0x10053d86
push ebx
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x10053db0
add esi, 0x60
cmp dword [esi], 0
jne 0x10053d60
xor ebx, ebx
mov esi, dword [ebp - 0x504]
test ebx, ebx
jg 0x10053dcb
mov ebx, dword [ebp - 0x4e8]
cmp esi, 3
jb 0x10054733
mov edi, dword [edi]
jmp 0x10054733
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
mov ebx, dword [esi + 0x40]
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
jmp 0x10053d90
test esi, esi
jne 0x10053f2d
mov ecx, dword [0x1014c080]
mov eax, ecx
mov esi, dword [0x1014c07c]
sub eax, esi
sar eax, 2
cmp ebx, eax
mov dword [ebp - 0x4f8], eax
mov edx, eax
mov eax, dword [ebp - 0x4dc]
cmovle edx, ebx
sub eax, dword [ebp - 0x4e4]
sar eax, 3
mov dword [ebp - 0x4f0], edx
cmp edx, eax
jbe 0x10053e36
cmp edx, 0x1fffffff
ja 0x10054e27
push edx
lea ecx, [ebp - 0x4e4]
call fcn.100627a0
mov ecx, dword [0x1014c080]
mov esi, dword [0x1014c07c]
mov edx, dword [ebp - 0x4f0]
cmp esi, ecx
je 0x10053f17
nop
mov eax, dword [ebp - 0x4e0]
sub eax, dword [ebp - 0x4e4]
sar eax, 3
cmp eax, edx
jge 0x10053f17
mov eax, dword [esi]
mov dword [ebp - 0x4f4], eax
mov byte [ebp - 4], 0xb
call fcn.100215d0
mov ecx, eax
test ecx, ecx
je 0x10054e1d
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov eax, dword [ebp - 0x4f4]
mov dword [ebp - 0x55c], ebx
mov dword [ebp - 0x558], eax
mov byte [ebp - 4], 0xc
mov eax, dword [ebp - 0x4e0]
mov dword [ebp - 0x500], eax
cmp dword [ebp - 0x4dc], eax
je 0x10053ec9
lea ecx, [ebx - 0x10]
call fcn.10021e50
mov ecx, dword [ebp - 0x500]
add eax, 0x10
mov dword [ecx], eax
mov eax, dword [ebp - 0x4f4]
mov dword [ecx + 4], eax
add dword [ebp - 0x4e0], 8
jmp 0x10053ee2
lea ecx, [ebp - 0x55c]
push ecx
push eax
lea ecx, [ebp - 0x4e4]
call fcn.10063240
mov ebx, dword [ebp - 0x55c]
lea edx, [ebx - 0x10]
mov byte [ebp - 4], 0xd
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10053efe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
add esi, 4
mov edx, dword [ebp - 0x4f0]
cmp esi, dword [0x1014c080]
jne 0x10053e40
mov edx, str.Programs
mov ecx, str.Search.CategoryPrograms
call fcn.100a4f10
mov ecx, eax
jmp 0x100543f7
cmp esi, 1
jne 0x1005408e
mov ecx, dword [0x1014c098]
mov eax, ecx
mov esi, dword [0x1014c094]
sub eax, esi
sar eax, 2
cmp ebx, eax
mov dword [ebp - 0x4f8], eax
mov edx, eax
mov eax, dword [ebp - 0x4dc]
cmovle edx, ebx
sub eax, dword [ebp - 0x4e4]
sar eax, 3
mov dword [ebp - 0x4f4], edx
cmp edx, eax
jbe 0x10053f99
cmp edx, 0x1fffffff
ja 0x10054e27
push edx
lea ecx, [ebp - 0x4e4]
call fcn.100627a0
mov ecx, dword [0x1014c098]
mov esi, dword [0x1014c094]
mov edx, dword [ebp - 0x4f4]
cmp esi, ecx
je 0x10054078
mov eax, dword [ebp - 0x4e0]
sub eax, dword [ebp - 0x4e4]
sar eax, 3
cmp eax, edx
jge 0x10054078
mov eax, dword [esi]
mov dword [ebp - 0x4f0], eax
mov byte [ebp - 4], 0xe
call fcn.100215d0
mov ecx, eax
test ecx, ecx
je 0x10054e1d
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov eax, dword [ebp - 0x4f0]
mov dword [ebp - 0x564], ebx
mov dword [ebp - 0x560], eax
mov byte [ebp - 4], 0xf
mov eax, dword [ebp - 0x4e0]
mov dword [ebp - 0x500], eax
cmp dword [ebp - 0x4dc], eax
je 0x1005402a
lea ecx, [ebx - 0x10]
call fcn.10021e50
mov ecx, dword [ebp - 0x500]
add eax, 0x10
mov dword [ecx], eax
mov eax, dword [ebp - 0x4f0]
mov dword [ecx + 4], eax
add dword [ebp - 0x4e0], 8
jmp 0x10054043
lea ecx, [ebp - 0x564]
push ecx
push eax
lea ecx, [ebp - 0x4e4]
call fcn.10063240
mov ebx, dword [ebp - 0x564]
lea edx, [ebx - 0x10]
mov byte [ebp - 4], 0x10
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005405f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
add esi, 4
mov edx, dword [ebp - 0x4f4]
cmp esi, dword [0x1014c098]
jne 0x10053fa1
mov edx, 0x1010bdf8
mov ecx, str.Search.CategoryPCSettings
call fcn.100a4f10
mov ecx, eax
jmp 0x100543f7
cmp esi, 2
jne 0x100541fd
mov ecx, dword [0x1014c08c]
mov eax, ecx
mov esi, dword [0x1014c088]
sub eax, esi
sar eax, 2
cmp ebx, eax
mov dword [ebp - 0x4f8], eax
mov edx, eax
mov eax, dword [ebp - 0x4dc]
cmovle edx, ebx
sub eax, dword [ebp - 0x4e4]
sar eax, 3
mov dword [ebp - 0x4f4], edx
cmp edx, eax
jbe 0x100540fa
cmp edx, 0x1fffffff
ja 0x10054e27
push edx
lea ecx, [ebp - 0x4e4]
call fcn.100627a0
mov ecx, dword [0x1014c08c]
mov esi, dword [0x1014c088]
mov edx, dword [ebp - 0x4f4]
cmp esi, ecx
je 0x100541e7
nop dword [eax]
nop word [eax + eax]
mov eax, dword [ebp - 0x4e0]
sub eax, dword [ebp - 0x4e4]
sar eax, 3
cmp eax, edx
jge 0x100541e7
mov eax, dword [esi]
mov dword [ebp - 0x4f0], eax
mov byte [ebp - 4], 0x11
call fcn.100215d0
mov ecx, eax
test ecx, ecx
je 0x10054e1d
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov eax, dword [ebp - 0x4f0]
mov dword [ebp - 0x56c], ebx
mov dword [ebp - 0x568], eax
mov byte [ebp - 4], 0x12
mov eax, dword [ebp - 0x4e0]
mov dword [ebp - 0x500], eax
cmp dword [ebp - 0x4dc], eax
je 0x10054199
lea ecx, [ebx - 0x10]
call fcn.10021e50
mov ecx, dword [ebp - 0x500]
add eax, 0x10
mov dword [ecx], eax
mov eax, dword [ebp - 0x4f0]
mov dword [ecx + 4], eax
add dword [ebp - 0x4e0], 8
jmp 0x100541b2
lea ecx, [ebp - 0x56c]
push ecx
push eax
lea ecx, [ebp - 0x4e4]
call fcn.10063240
mov ebx, dword [ebp - 0x56c]
lea edx, [ebx - 0x10]
mov byte [ebp - 4], 0x13
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x100541ce
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
add esi, 4
mov edx, dword [ebp - 0x4f4]
cmp esi, dword [0x1014c08c]
jne 0x10054110
mov edx, str.Control_Panel
mov ecx, str.Search.CategorySettings
call fcn.100a4f10
mov ecx, eax
jmp 0x100543f7
mov eax, dword [edi + 0x18]
sub eax, dword [edi + 0x14]
sar eax, 3
cmp ebx, eax
mov dword [ebp - 0x4f8], eax
mov esi, eax
mov eax, dword [ebp - 0x4dc]
cmovle esi, ebx
sub eax, dword [ebp - 0x4e4]
sar eax, 3
mov dword [ebp - 0x540], esi
cmp esi, eax
jbe 0x10054244
cmp esi, 0x1fffffff
ja 0x10054e27
push esi
lea ecx, [ebp - 0x4e4]
call fcn.100627a0
xor eax, eax
mov dword [ebp - 0x4f4], eax
test esi, esi
jle 0x100543f2
nop dword [eax]
nop dword [eax + eax]
lea esi, [eax*8]
mov eax, dword [edi + 0x14]
mov ebx, dword [esi + eax + 4]
mov dword [ebp - 0x53c], 0
lea eax, [ebp - 0x53c]
mov byte [ebp - 4], 0x14
push eax
push 0x10103e10
push ebx
call dword [sym.imp.SHELL32.dll_SHCreateItemFromIDList]
test eax, eax
js 0x100543c1
push 0
push 0
push ebx
push dword [ebp - 0x53c]
mov ecx, 0x1014be70
call fcn.1002ac30
mov dword [ebp - 0x4f0], eax
mov eax, dword [edi + 0x14]
add eax, esi
mov dword [ebp - 0x500], eax
mov byte [ebp - 4], 0x15
call fcn.100215d0
mov ecx, eax
test ecx, ecx
je 0x10054e1d
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ebx, eax
lea esi, [ebx + 0x10]
mov dword [ebp - 0x548], esi
mov byte [ebp - 4], 0x16
mov edx, dword [ebp - 0x500]
mov edx, dword [edx]
lea ecx, [edx - 0x10]
cmp ecx, ebx
je 0x1005434f
mov eax, dword [ebx + 0xc]
lea esi, [ebx + 0xc]
shr eax, 0x1f
test al, al
jne 0x1005433a
mov eax, dword [ecx]
cmp eax, dword [ebx]
jne 0x1005433a
call fcn.10021e50
mov dword [ebp - 0x500], eax
mov byte [ebp - 4], 0x17
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x1005432f
mov ecx, dword [ebx]
push ebx
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x500]
lea esi, [eax + 0x10]
mov dword [ebp - 0x548], esi
jmp 0x1005434f
push dword [edx - 0xc]
lea ecx, [ebp - 0x548]
push edx
call fcn.10021eb0
mov esi, dword [ebp - 0x548]
mov eax, dword [ebp - 0x4f0]
mov dword [ebp - 0x544], eax
mov byte [ebp - 4], 0x18
mov ebx, dword [ebp - 0x4e0]
cmp dword [ebp - 0x4dc], ebx
je 0x1005438c
lea ecx, [esi - 0x10]
call fcn.10021e50
add eax, 0x10
mov dword [ebx], eax
mov eax, dword [ebp - 0x4f0]
mov dword [ebx + 4], eax
add dword [ebp - 0x4e0], 8
jmp 0x100543a5
lea eax, [ebp - 0x548]
push eax
push ebx
lea ecx, [ebp - 0x4e4]
call fcn.10063240
mov esi, dword [ebp - 0x548]
add esi, 0xfffffff0
mov byte [ebp - 4], 0x19
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x100543c1
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x1a
mov eax, dword [ebp - 0x53c]
test eax, eax
je 0x100543d5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x4f4]
inc eax
mov dword [ebp - 0x4f4], eax
cmp eax, dword [ebp - 0x540]
jl 0x10054260
mov ecx, dword [edi + 0x10]
mov edi, dword [edi]
mov eax, dword [ebp - 0x4e4]
cmp eax, dword [ebp - 0x4e0]
je 0x10054727
cmp dword [ebp - 0x504], 0
jne 0x10054690
mov ebx, dword [ebp - 0x528]
test ebx, ebx
je 0x10054690
push 0x30
lea ecx, [ebp - 0x270]
call fcn.10049550
mov byte [ebp - 4], 0x1b
mov dword [ebp - 0x228], ebx
cmp ebx, 6
jne 0x1005444c
mov edx, str.Internet
mov ecx, str.Search.CategoryInternet
jmp 0x10054456
mov edx, str.Programs
mov ecx, str.Search.CategoryPrograms
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x10054465
xor ecx, ecx
jmp 0x1005447f
mov ecx, edx
lea esi, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10054470
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x268]
call fcn.10021eb0
mov ebx, dword [ebp - 0x268]
mov ecx, ebx
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10054497
sub ecx, edx
mov edx, 0x811c9dc5
sar ecx, 1
lea esi, [ecx + ecx]
xor ecx, ecx
test esi, esi
jle 0x100544c5
movzx eax, byte [ebx + ecx]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, esi
jl 0x100544b4
mov ebx, dword [ebp - 0x50c]
lea ecx, [ebp - 0x270]
mov dword [ebp - 0x264], edx
push ecx
mov eax, dword [ebx + 4]
cmp dword [ebx + 8], eax
je 0x100544ed
mov ecx, eax
call fcn.10046980
add dword [ebx + 4], 0x54
jmp 0x100544f5
push eax
mov ecx, ebx
call fcn.10063630
push 0x31
lea ecx, [ebp - 0x428]
call fcn.10049550
mov byte [ebp - 4], 0x1c
mov eax, dword [ebp - 0x52c]
mov ecx, dword [ebp - 0x420]
lea ebx, [eax - 0x10]
lea esi, [ecx - 0x10]
cmp ebx, esi
je 0x1005456e
mov edx, dword [esi + 0xc]
shr edx, 0x1f
test dl, dl
jne 0x1005455f
mov edx, dword [ebx]
cmp edx, dword [esi]
jne 0x1005455f
mov ecx, ebx
call fcn.10021e50
mov ebx, eax
mov byte [ebp - 4], 0x1d
lea edx, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10054550
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
lea eax, [ebx + 0x10]
mov byte [ebp - 4], 0x1c
mov dword [ebp - 0x420], eax
jmp 0x1005456e
push dword [ebx + 4]
lea ecx, [ebp - 0x420]
push eax
call fcn.10021eb0
cmp dword [ebp - 0x528], 6
jne 0x100545b9
lea eax, [ebp - 0x538]
mov dword [ebp - 0x538], 0x104
push eax
lea eax, [ebp - 0x218]
push eax
push 0x1010be30
push str.http
push 0xf
push 0
call dword [sym.imp.SHLWAPI.dll_AssocQueryStringW]
push 0
test eax, eax
js 0x100545b2
lea eax, [ebp - 0x218]
push eax
jmp 0x10054609
push str.shell32.dll_14
jmp 0x10054609
mov eax, dword [ebp - 0x534]
push 0
test eax, eax
je 0x10054604
push 0x10
push ecx
mov ecx, esp
push eax
call fcn.10026a20
call fcn.1002b2c0
mov esi, eax
push 0x1014be70
mov dword [ebp - 0x418], esi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
push dword [esi + 0x10]
call dword [sym.imp.SHELL32.dll_ILClone]
push 0x1014be70
mov dword [ebp - 0x3f0], eax
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
jmp 0x10054614
push str.imageres.dll_100
call fcn.1002bc70
mov dword [ebp - 0x418], eax
mov ebx, dword [ebp - 0x50c]
lea ecx, [ebp - 0x428]
push ecx
mov eax, dword [ebx + 4]
cmp dword [ebx + 8], eax
je 0x10054636
mov ecx, eax
call fcn.10046980
add dword [ebx + 4], 0x54
jmp 0x1005463e
push eax
mov ecx, ebx
call fcn.10063630
mov edx, dword [ebp - 0x420]
mov esi, 1
add edx, 0xfffffff0
or ebx, 0xffffffff
mov byte [ebp - 4], 0x22
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10054667
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x268]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x23
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10054688
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, dword [ebp - 0x4ec]
jmp 0x100546eb
push ecx
lea ecx, [ebp - 0x54c]
call fcn.10026a20
mov ebx, dword [ebp - 0x4ec]
lea eax, [ebp - 0x54c]
mov byte [ebp - 4], 0x24
mov ecx, ebx
push dword [ebp - 0x4f8]
push dword [ebp - 0x4fc]
push eax
lea eax, [ebp - 0x4e4]
push eax
call fcn.10052f00
mov edx, dword [ebp - 0x54c]
mov esi, eax
add edx, 0xfffffff0
mov byte [ebp - 4], 0x25
or ecx, 0xffffffff
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x100546eb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
cmp byte [0x1014b4d1], 0
je 0x10054727
mov eax, dword [ebp - 0x4fc]
cmp eax, dword [ebx + 0x1b4]
je 0x10054727
mov ebx, dword [ebp - 0x4e8]
test esi, esi
jle 0x1005472d
imul esi, dword [ebp - 0x524]
add esi, dword [ebp - 0x520]
sub ebx, esi
mov dword [ebp - 0x4e8], ebx
jmp 0x1005472d
mov ebx, dword [ebp - 0x4e8]
mov esi, dword [ebp - 0x504]
mov eax, dword [0x1014c0b0]
inc esi
add eax, 3
mov dword [ebp - 0x504], esi
cmp esi, eax
jb 0x10053cb0
mov edi, dword [ebp - 0x50c]
mov eax, 0x30c30c31
mov ecx, dword [edi + 4]
sub ecx, dword [edi]
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp byte [0x1014b4d1], 0
je 0x10054863
mov ebx, dword [ebp - 0x4ec]
mov ecx, ebx
push eax
push dword [ebx + 0x1c8]
call fcn.1004e3b0
cmp byte [0x1014b4fb], 0
je 0x100549cb
mov eax, dword [ebx + 0x198]
sub eax, dword [ebx + 0x1a0]
inc eax
imul esi, eax, 0x54
add esi, dword [edi]
cmp byte [0x1014c070], 0
je 0x10054806
mov edx, str.Searching...
mov dword [esi], 0x32
mov ecx, str.Menu.Searching
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x100547ce
xor ecx, ecx
jmp 0x100547e8
mov ecx, edx
lea edi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100547d3
sub ecx, edi
mov edi, dword [ebp - 0x50c]
sar ecx, 1
push ecx
push edx
lea ecx, [esi + 8]
call fcn.10021eb0
push 0
push str.imageres.dll_8
call fcn.1002bc70
mov dword [esi + 0x10], eax
jmp 0x100549cb
mov edx, str.See_more_results
mov dword [esi], 0x33
mov ecx, str.Menu.MoreResults
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x10054825
xor ecx, ecx
jmp 0x10054845
mov ecx, edx
lea edi, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10054830
sub ecx, edi
mov edi, dword [ebp - 0x50c]
sar ecx, 1
push ecx
push edx
lea ecx, [esi + 8]
call fcn.10021eb0
push 0
push str.imageres.dll_177
call fcn.1002bc70
mov dword [esi + 0x10], eax
jmp 0x100549cb
mov ecx, dword [ebp - 0x4ec]
mov dword [ecx + 0x178], eax
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x100548a1
nop word [eax + eax]
cmp dword [esi + 4], 1
jne 0x10054899
push str.SearchInternet
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x100548e7
add esi, 0x60
cmp dword [esi], 0
jne 0x10054880
xor bl, bl
cmp byte [0x1014b4fb], 0
je 0x10054a3e
cmp byte [0x1014c070], 0
je 0x10054a3e
push 0x32
lea ecx, [ebp - 0x4d8]
call fcn.10049550
mov edx, str.Searching...
mov byte [ebp - 4], 0x26
mov ecx, str.Menu.Searching
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x1005491d
xor ecx, ecx
jmp 0x10054931
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
cmp word [esi + 0x38], 3
jne 0x1005490e
cmp dword [esi + 0x40], 1
jne 0x1005490e
push 0x10158d3c
mov bl, 1
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
jmp 0x100548a3
push 0x10158d3c
xor bl, bl
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
jmp 0x100548a3
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10054922
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x4d0]
call fcn.10021eb0
push 0
push str.imageres.dll_8
call fcn.1002bc70
mov dword [ebp - 0x4c8], eax
lea ecx, [ebp - 0x4d8]
mov eax, dword [edi + 4]
push ecx
cmp dword [edi + 8], eax
je 0x1005496c
mov ecx, eax
call fcn.10046980
add dword [edi + 4], 0x54
jmp 0x10054974
push eax
mov ecx, edi
call fcn.10063630
mov edx, dword [ebp - 0x4d0]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x27
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10054996
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov ebx, dword [ebp - 0x4ec]
mov ecx, ebx
call fcn.1004c890
mov ecx, dword [edi + 4]
mov eax, 0x30c30c31
sub ecx, dword [edi]
imul ecx
mov ecx, ebx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push dword [ebx + 0x178]
call fcn.1004e3b0
cmp byte [0x1014c070], 0
jne 0x10054cf6
mov edx, dword [edi]
mov ecx, dword [edi + 4]
cmp edx, ecx
je 0x10054a0d
cmp byte [ebx + 0x108], 0
je 0x10054cf6
sub ecx, edx
mov eax, 0x30c30c31
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, dword [ebx + 0x1c8]
jne 0x10054cf6
push 0x32
lea ecx, [ebp - 0x2c8]
call fcn.10049550
mov edx, str.No_items_match_your_search.
mov byte [ebp - 4], 0x30
mov ecx, str.Menu.NoMatch
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x10054c87
xor ecx, ecx
jmp 0x10054c9f
mov eax, dword [edi]
cmp eax, dword [edi + 4]
jne 0x10054aea
push 0x32
lea ecx, [ebp - 0x320]
call fcn.10049550
mov edx, str.No_items_match_your_search.
mov byte [ebp - 4], 0x28
mov ecx, str.Menu.NoMatch
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x10054a73
xor ecx, ecx
jmp 0x10054a8f
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10054a80
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x318]
call fcn.10021eb0
mov eax, dword [edi + 4]
lea ecx, [ebp - 0x320]
push ecx
cmp dword [edi + 8], eax
je 0x10054ab8
mov ecx, eax
call fcn.10046980
add dword [edi + 4], 0x54
jmp 0x10054ac0
push eax
mov ecx, edi
call fcn.10063630
mov edx, dword [ebp - 0x318]
add edx, 0xfffffff0
or esi, 0xffffffff
mov byte [ebp - 4], 0x29
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10054ae4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
jmp 0x10054aed
or esi, 0xffffffff
cmp byte [0x1014b4fb], 0
je 0x10054bf4
call fcn.1005fcd0
test al, al
je 0x10054bf4
push 1
lea ecx, [ebp - 0x378]
call fcn.10049550
mov byte [ebp - 4], 0x2a
lea ecx, [ebp - 0x378]
mov eax, dword [edi + 4]
push ecx
cmp dword [edi + 8], eax
je 0x10054b34
mov ecx, eax
call fcn.10046980
add dword [edi + 4], 0x54
jmp 0x10054b3c
push eax
mov ecx, edi
call fcn.10063630
mov edx, dword [ebp - 0x370]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x2b
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10054b5d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0x33
lea ecx, [ebp - 0x480]
call fcn.10049550
mov edx, str.See_more_results
mov byte [ebp - 4], 0x2c
mov ecx, str.Menu.MoreResults
call fcn.100a4f10
mov edx, eax
test edx, edx
jne 0x10054b87
xor ecx, ecx
jmp 0x10054ba2
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10054b90
sub ecx, esi
sar ecx, 1
or esi, 0xffffffff
push ecx
push edx
lea ecx, [ebp - 0x478]
call fcn.10021eb0
push 0
push str.imageres.dll_177
call fcn.1002bc70
mov dword [ebp - 0x470], eax
lea ecx, [ebp - 0x480]
mov eax, dword [edi + 4]
push ecx
cmp dword [edi + 8], eax
je 0x10054bdd
mov ecx, eax
call fcn.10046980
add dword [edi + 4], 0x54
jmp 0x10054be5
push eax
mov ecx, edi
call fcn.10063630
mov edx, dword [ebp - 0x478]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x2d
jmp 0x10054c3e
test bl, bl
je 0x1005499a
push 1
lea ecx, [ebp - 0x3d0]
call fcn.10049550
mov byte [ebp - 4], 0x2e
lea ecx, [ebp - 0x3d0]
mov eax, dword [edi + 4]
push ecx
cmp dword [edi + 8], eax
je 0x10054c29
mov ecx, eax
call fcn.10046980
add dword [edi + 4], 0x54
jmp 0x10054c31
push eax
mov ecx, edi
call fcn.10063630
mov edx, dword [ebp - 0x3c8]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x2f
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10054c52
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
test bl, bl
je 0x1005499a
mov ecx, dword [edi + 4]
mov eax, 0x30c30c31
sub ecx, dword [edi]
mov ebx, dword [ebp - 0x4ec]
imul ecx
mov ecx, ebx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
call fcn.1004c7b0
jmp 0x100549a0
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10054c90
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x2c0]
call fcn.10021eb0
mov eax, dword [edi + 4]
lea ecx, [ebp - 0x2c8]
push ecx
cmp dword [edi + 8], eax
je 0x10054cc8
mov ecx, eax
call fcn.10046980
add dword [edi + 4], 0x54
jmp 0x10054cd0
push eax
mov ecx, edi
call fcn.10063630
mov edx, dword [ebp - 0x2c0]
add edx, 0xfffffff0
or esi, 0xffffffff
mov byte [ebp - 4], 0x31
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10054cf9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x10054cf9
or esi, 0xffffffff
mov bl, byte [0x1014c070]
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x508]
test edx, edx
je 0x10054d47
mov eax, dword [ebp - 0x514]
sub eax, edx
sar eax, 2
lea ecx, [eax*4]
mov eax, edx
cmp ecx, 0x1000
jb 0x10054d3d
mov edx, dword [edx - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10054e36
push ecx
push edx
call fcn.100d4917
add esp, 8
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x4e4]
test ecx, ecx
je 0x10054dc2
mov edx, dword [ebp - 0x4e0]
push ecx
call fcn.10022040
mov eax, dword [ebp - 0x4dc]
add esp, 4
mov ecx, dword [ebp - 0x4e4]
sub eax, ecx
sar eax, 3
lea edx, [eax*8]
mov eax, ecx
cmp edx, 0x1000
jb 0x10054d9a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10054e3b
push edx
push ecx
call fcn.100d4917
add esp, 8
mov dword [ebp - 0x4e4], 0
mov dword [ebp - 0x4e0], 0
mov dword [ebp - 0x4dc], 0
mov eax, dword [ebp - 0x534]
test eax, eax
je 0x10054dd3
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov eax, dword [ebp - 0x52c]
mov dword [ebp - 0x534], 0
add eax, 0xfffffff0
mov dword [ebp - 4], 0x32
lock xadd dword [eax + 0xc], esi
dec esi
test esi, esi
jg 0x10054dff
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov al, bl
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.10012960
push 0x80004005
call fcn.10013970
call fcn.100dca69
call fcn.100dca69
int3