Function at 0x451bf0
Capabilities:
Get file system object information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b76de
mov eax, dword fs:[0]
push eax
sub esp, 0x334
mov eax, dword [0x4ed310]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 4]
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x308], ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x30c], eax
mov dword [ebp - 0x2c8], ecx
mov dword [ebp - 0x2d4], esi
cmp ebx, dword [eax + 8]
je 0x45228c
mov edx, dword [ebx]
test byte [edx + 0x14], 2
je 0x4520c4
mov eax, dword [ebp - 0x2c8]
mov eax, dword [eax]
mov edi, dword [eax]
cmp edi, eax
je 0x451ca3
mov eax, dword [ebx]
add eax, 0x2c
cmp dword [eax + 0x14], 8
jb 0x451c72
mov eax, dword [eax]
mov ecx, dword [edi + 8]
mov ecx, dword [ecx + 0x1c]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x451c92
mov edi, dword [edi]
mov edx, dword [ebp - 0x2c8]
cmp edi, dword [edx]
jne 0x451c65
jmp 0x451ca3
mov edi, dword [edi + 8]
mov dword [ebp - 0x2d0], edi
test edi, edi
jne 0x451fcc
push 0x28
call fcn.0049964e
add esp, 4
mov dword [ebp - 0x2cc], eax
xor ecx, ecx
mov dword [ebp - 4], ecx
cmp eax, ecx
je 0x451cd4
mov ecx, dword [ebp - 0x2c8]
push ecx
mov ecx, eax
call fcn.00444a40
mov edi, eax
mov dword [ebp - 0x2cc], edi
jmp 0x451cdc
mov dword [ebp - 0x2cc], ecx
mov edi, ecx
mov eax, dword [edi + 0x1c]
or byte [eax + 0x6d0], 4
mov eax, dword [ebx]
add eax, 0x2c
cmp dword [eax + 0x14], 8
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x2d0], edi
jb 0x451d00
mov eax, dword [eax]
mov edx, dword [edi + 0x1c]
push eax
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov eax, dword [ebp - 0x2c8]
mov ecx, dword [eax + 0x1c]
mov esi, dword [edi + 0x1c]
add ecx, 0x208
push ecx
add esi, 0x208
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov edx, dword [ebp - 0x2c8]
mov eax, dword [edx + 0x1c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x4ccb58
push esi
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov eax, dword [edi + 0x1c]
mov edx, dword [ebx]
lea ecx, [eax + 0x6c2]
push ecx
add eax, 0x6c0
push eax
add edx, 0x24
push edx
call fcn.00407c20
add esp, 0xc
push 0x4410
push 0x2b4
lea eax, [ebp - 0x2c4]
push eax
push 0x10
push 0x4ccd04
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
test eax, eax
je 0x451da7
mov ecx, dword [ebp - 0x2c0]
mov dword [edi + 0x20], ecx
mov eax, dword [edi + 0x1c]
lea edx, [ebp - 0xb0]
push edx
add eax, 0x620
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov esi, dword [edi + 0x1c]
cmp dword [esi + 0x414], 0
jne 0x451de9
push 0x18
call fcn.0049964e
xor ecx, ecx
add esp, 4
cmp eax, ecx
je 0x451de1
mov word [eax], cx
mov byte [eax + 2], cl
xor edx, edx
mov word [eax + 4], dx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov word [eax + 0x14], cx
mov byte [eax + 0x16], cl
jmp 0x451de3
xor eax, eax
mov dword [esi + 0x414], eax
mov ecx, dword [ebx]
movzx edx, byte [ecx + 0x14]
mov eax, dword [esi + 0x414]
mov byte [eax], dl
mov ecx, dword [ebx]
movzx edx, byte [ecx + 0x15]
mov byte [eax + 1], dl
mov ecx, dword [ebx]
movzx edx, byte [ecx + 0x16]
mov byte [eax + 2], dl
mov ecx, dword [ebx]
movzx edx, word [ecx + 0x18]
mov word [eax + 4], dx
mov ecx, dword [ebx]
mov edx, dword [ecx + 0x1c]
mov dword [eax + 8], edx
mov ecx, dword [ebx]
mov edx, dword [ecx + 0x20]
mov dword [eax + 0xc], edx
mov ecx, dword [ebx]
mov edx, dword [ecx + 0x24]
mov dword [eax + 0x10], edx
movzx edx, word [ecx + 0x28]
mov word [eax + 0x14], dx
mov cl, byte [ecx + 0x2a]
mov byte [eax + 0x16], cl
mov ecx, dword [ebp - 0x2c8]
mov esi, dword [ecx]
mov eax, dword [esi + 4]
lea edx, [ebp - 0x2d0]
push edx
push eax
push esi
call fcn.00455cb0
mov ecx, dword [ebp - 0x2c8]
mov ecx, dword [ecx + 4]
mov edx, 0x3ffffffe
sub edx, ecx
cmp edx, 1
jb 0x4522aa
mov edx, dword [ebp - 0x2c8]
inc ecx
mov dword [edx + 4], ecx
mov dword [esi + 4], eax
mov ecx, dword [eax + 4]
push 0x30
xor esi, esi
mov dword [ecx], eax
xor eax, eax
lea edx, [ebp - 0x33c]
push esi
push edx
mov dword [ebp - 0x300], eax
mov dword [ebp - 0x2fc], eax
mov dword [ebp - 0x2f8], eax
mov dword [ebp - 0x2f4], eax
mov dword [ebp - 0x2f0], eax
mov dword [ebp - 0x2ec], eax
mov dword [ebp - 0x2e8], eax
mov dword [ebp - 0x2e4], eax
mov dword [ebp - 0x2e0], eax
call fcn.00499330
mov eax, dword [ebp - 0x2c8]
mov dword [ebp - 0x2ec], esi
mov dword [ebp - 0x2e0], edi
mov dword [ebp - 0x2e4], esi
mov dword [ebp - 0x304], 0x67
mov dword [ebp - 0x2f4], 0xffffffff
mov ecx, 0xa
lea esi, [ebp - 0x304]
lea edi, [ebp - 0x338]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 0x24]
mov edi, dword [ebp - 0x308]
mov edx, dword [edi]
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
xor eax, eax
add esp, 0xc
mov dword [ebp - 0x300], eax
mov dword [ebp - 0x340], ecx
mov dword [ebp - 0x300], ecx
lea ecx, [ebp - 0x304]
push ecx
push eax
mov dword [ebp - 0x33c], 0xffff0002
mov dword [ebp - 0x2fc], eax
mov dword [ebp - 0x2f8], eax
mov dword [ebp - 0x2f4], eax
mov dword [ebp - 0x2f0], eax
mov dword [ebp - 0x2ec], eax
mov dword [ebp - 0x2e8], eax
mov dword [ebp - 0x2e4], eax
mov dword [ebp - 0x2e0], eax
mov dword [ebp - 0x304], 0x40
mov eax, dword [edx]
push 0x113e
push eax
call esi
mov edx, dword [edi]
lea ecx, [ebp - 0x304]
push ecx
push 0
mov dword [ebp - 0x2e4], 1
mov eax, dword [edx]
push 0x113f
push eax
call esi
mov edi, dword [edi]
mov edx, dword [edi]
lea ecx, [ebp - 0x340]
push ecx
push 0
push 0x1132
push edx
call esi
mov ecx, dword [ebp - 0x2cc]
mov edi, dword [ebp - 0x2d0]
mov esi, dword [ebp - 0x2d4]
mov dword [ecx + 0x24], eax
mov eax, dword [esi + 4]
mov edx, dword [ebx]
lea ecx, [ebp - 0x2dc]
mov dword [ebp - 0x2dc], edx
mov dword [ebp - 0x2d8], edi
cmp ecx, eax
jae 0x45205d
mov edx, dword [esi]
cmp edx, ecx
ja 0x45205d
mov edi, ecx
mov ecx, dword [esi + 8]
sub edi, edx
sar edi, 3
cmp eax, ecx
jne 0x45203e
sub eax, edx
sar eax, 3
cmp eax, 0x1ffffffe
ja 0x4522b4
sub ecx, edx
inc eax
sar ecx, 3
cmp eax, ecx
jbe 0x45203e
mov edx, ecx
shr edx, 1
mov esi, 0x1fffffff
sub esi, edx
cmp esi, ecx
jae 0x452028
xor ecx, ecx
jmp 0x45202a
add ecx, edx
cmp ecx, eax
jae 0x452030
mov ecx, eax
mov esi, dword [ebp - 0x2d4]
push ecx
mov ecx, esi
call fcn.004639d0
mov eax, dword [esi + 4]
mov edx, dword [esi]
lea edi, [edx + edi*8]
test eax, eax
je 0x452054
mov ecx, dword [edi]
mov dword [eax], ecx
mov edx, dword [edi + 4]
mov dword [eax + 4], edx
add dword [esi + 4], 8
jmp 0x45227a
mov ecx, dword [esi + 8]
cmp eax, ecx
jne 0x4520a9
mov edx, dword [esi]
sub eax, edx
sar eax, 3
cmp eax, 0x1ffffffe
ja 0x4522b4
sub ecx, edx
inc eax
sar ecx, 3
cmp eax, ecx
jbe 0x4520a9
mov edx, ecx
shr edx, 1
mov edi, 0x1fffffff
sub edi, edx
cmp edi, ecx
jae 0x452093
xor ecx, ecx
jmp 0x452095
add ecx, edx
cmp ecx, eax
jae 0x45209b
mov ecx, eax
push ecx
mov ecx, esi
call fcn.004639d0
mov edi, dword [ebp - 0x2d0]
mov eax, dword [esi + 4]
test eax, eax
je 0x4520bb
mov ecx, dword [ebp - 0x2dc]
mov dword [eax], ecx
mov dword [eax + 4], edi
add dword [esi + 4], 8
jmp 0x45227a
push 0x6d8
call fcn.0049964e
xor ecx, ecx
add esp, 4
cmp eax, ecx
je 0x452121
xor edx, edx
mov word [eax], dx
mov word [eax + 0x208], dx
mov dword [eax + 0x410], ecx
mov dword [eax + 0x414], ecx
mov word [eax + 0x418], dx
mov word [eax + 0x620], dx
mov word [eax + 0x6c0], dx
mov word [eax + 0x6c2], dx
mov dword [eax + 0x6c8], ecx
mov dword [eax + 0x6cc], ecx
mov byte [eax + 0x6d0], cl
mov esi, eax
jmp 0x452123
xor esi, esi
or byte [esi + 0x6d0], 4
mov eax, dword [ebx]
mov edx, dword [eax + 0x20]
mov dword [esi + 0x6c8], edx
mov dword [esi + 0x6cc], ecx
mov eax, dword [ebx]
add eax, 0x2c
cmp dword [eax + 0x14], 8
mov dword [ebp - 0x2cc], esi
jb 0x45214e
mov eax, dword [eax]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov eax, dword [ebp - 0x2c8]
mov ecx, dword [eax + 0x1c]
add ecx, 0x208
push ecx
lea edi, [esi + 0x208]
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov edx, dword [ebp - 0x2c8]
mov eax, dword [edx + 0x1c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x4ccb58
push edi
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov eax, dword [ebx]
lea ecx, [esi + 0x6c2]
push ecx
lea edx, [esi + 0x6c0]
push edx
add eax, 0x24
push eax
call fcn.00407c20
xor edi, edi
add esp, 0xc
cmp dword [esi + 0x414], edi
jne 0x4521eb
push 0x18
call fcn.0049964e
add esp, 4
cmp eax, edi
je 0x4521e3
xor ecx, ecx
mov word [eax], di
mov byte [eax + 2], 0
mov word [eax + 4], cx
mov dword [eax + 8], edi
mov dword [eax + 0xc], edi
mov dword [eax + 0x10], ecx
mov word [eax + 0x14], cx
mov byte [eax + 0x16], cl
jmp 0x4521e5
xor eax, eax
mov dword [esi + 0x414], eax
mov edx, dword [ebx]
movzx ecx, byte [edx + 0x14]
mov eax, dword [esi + 0x414]
mov byte [eax], cl
mov edx, dword [ebx]
movzx ecx, byte [edx + 0x15]
mov byte [eax + 1], cl
mov edx, dword [ebx]
movzx ecx, byte [edx + 0x16]
mov byte [eax + 2], cl
mov edx, dword [ebx]
mov cx, word [edx + 0x18]
mov word [eax + 4], cx
mov edx, dword [ebx]
mov ecx, dword [edx + 0x1c]
mov esi, dword [ebp - 0x2c8]
mov dword [eax + 8], ecx
mov edx, dword [ebx]
mov ecx, dword [edx + 0x20]
mov dword [eax + 0xc], ecx
mov ecx, dword [ebx]
mov edx, dword [ecx + 0x24]
mov dword [eax + 0x10], edx
mov dx, word [ecx + 0x28]
mov word [eax + 0x14], dx
movzx ecx, byte [ecx + 0x2a]
mov byte [eax + 0x16], cl
mov edi, dword [esi + 0xc]
mov eax, dword [edi + 4]
lea edx, [ebp - 0x2cc]
push edx
push eax
push edi
lea ecx, [esi + 0xc]
call fcn.00455cb0
mov ecx, dword [esi + 0x10]
mov edx, 0x3ffffffe
sub edx, ecx
cmp edx, 1
jb 0x4522aa
inc ecx
mov dword [esi + 0x10], ecx
mov esi, dword [ebp - 0x2d4]
mov dword [edi + 4], eax
mov ecx, dword [eax + 4]
mov dword [ecx], eax
mov edx, dword [ebp - 0x30c]
add ebx, 4
ret
add al, 0x3b
pop edx
or byte [edi], cl
invalid
invalid
stc
invalid
invalid
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.00499155
mov esp, ebp
pop ebp
ret 0xc
push str.list_T__too_long
call fcn.00497968
push str.vector_T__too_long
call fcn.00497968
int3