Function at 0x407000
Capabilities:
Get file system object information

Disassembly:
push 0xffffffffffffffff
push 0x4340e6
mov eax, dword fs:[0]
push eax
sub esp, 0x2c8
mov eax, dword [0x444238]
xor eax, esp
mov dword [esp + 0x2c4], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x444238]
xor eax, esp
push eax
lea eax, [esp + 0x2dc]
mov dword fs:[0], eax
mov esi, ecx
call fcn.0040eed2
mov eax, dword [esi + 0x20]
xor ebp, ebp
push ebp
push eax
call dword [sym.imp.USER32.dll_GetSystemMenu]
push eax
call fcn.004164a7
mov ebx, eax
cmp ebx, ebp
je 0x4070f7
call fcn.004165a0
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x407079
push 0x80004005
call fcn.004012a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x18], edi
push 0x65
mov dword [esp + 0x2e8], ebp
call fcn.00416595
cmp eax, ebp
je 0x4070ab
push 0x65
push eax
lea ecx, [esp + 0x20]
call fcn.004038d0
mov edi, dword [esp + 0x18]
cmp dword [edi - 0xc], ebp
je 0x4070d0
mov ecx, dword [ebx + 4]
push ebp
push ebp
mov ebp, dword [sym.imp.USER32.dll_AppendMenuW]
push 0x800
push ecx
call ebp
mov edx, dword [ebx + 4]
push edi
push 0x10
push 0
push edx
call ebp
xor ebp, ebp
lea eax, [edi - 0x10]
mov dword [esp + 0x2e4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4070f7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esi + 0x74]
mov ecx, dword [esi + 0x20]
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push eax
push 1
push 0x80
push ecx
call ebx
mov eax, dword [esi + 0x74]
mov edx, dword [esi + 0x20]
push eax
push ebp
push 0x80
push edx
call ebx
push 0x436c44
lea ecx, [esp + 0x18]
call fcn.00406f40
push ebp
mov dword [esp + 0x2e8], 1
call fcn.00409a40
and eax, 0x3ff
add esp, 4
cmp ax, 0x12
jne 0x40715d
push 0x16
push 0x43709c
lea ecx, [esp + 0x1c]
call fcn.004039a0
jmp 0x4071b5
push ebp
call fcn.00409a40
and eax, 0x3ff
add esp, 4
cmp ax, 0x11
je 0x4071a7
push ebp
call fcn.00409a40
and eax, 0x3ff
add esp, 4
cmp ax, 4
je 0x4071a7
push ebp
call fcn.00409a40
and eax, 0x3ff
add esp, 4
cmp ax, 8
je 0x4071a7
push ebp
call fcn.00409a40
add esp, 4
and eax, 0x3ff
push 0x43709c
lea ecx, [esp + 0x18]
call fcn.004056e0
mov eax, dword [esp + 0x14]
push eax
mov ecx, esi
call fcn.00414c0f
push 0x2b0
lea ecx, [esp + 0x24]
push ebp
push ecx
mov dword [esp + 0x28], ebp
call fcn.0041b350
xor eax, eax
lea edx, [esp + 0x2dc]
push 4
push edx
mov word [esp + 0x2e4], bp
mov dword [esp + 0x2e6], eax
mov word [esp + 0x2ea], ax
call fcn.00409fe0
add esp, 0x14
push 0x436c24
push 8
lea eax, [esp + 0x2d8]
push eax
call fcn.00401ac0
push 0x4001
push 0x2b4
lea ecx, [esp + 0x24]
push ecx
push ebp
lea edx, [esp + 0x2e0]
push edx
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov ecx, dword [esi + 0xe0]
mov edi, dword [sym.imp.COMCTL32.dll_ImageList_ReplaceIcon]
push ecx
push 0xffffffffffffffff
push eax
mov dword [esi + 0xdc], eax
call edi
mov edx, dword [esi + 0xe4]
push edx
mov dword [esi + 0x78], eax
mov eax, dword [esi + 0xdc]
push 0xffffffffffffffff
push eax
call edi
mov ecx, dword [esi + 0xdc]
push ecx
mov dword [esi + 0x7c], eax
call fcn.004150f7
cmp eax, ebp
jne 0x407276
xor eax, eax
jmp 0x407279
mov eax, dword [eax + 4]
mov edx, dword [esi + 0xa0]
push eax
push 1
push 0x1003
push edx
call ebx
push eax
call fcn.004150f7
mov ecx, esi
call fcn.00406870
mov ecx, esi
call fcn.004021e0
mov eax, dword [esi + 0xd8]
mov edx, dword [eax + 4]
lea ecx, [esi + 0xd8]
push esi
push ebp
call edx
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x2e4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4072dc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x2dc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x2c4]
xor ecx, esp
call fcn.0041afda
add esp, 0x2d4
ret