Function at 0x406e40
Capabilities:
Get file system object information

Disassembly:
sub esp, 0x318
cmp dword [esp + 0x328], 0
push ebx
push esi
push edi
mov edi, dword [esp + 0x328]
jne 0x406f2b
mov bl, byte [edi]
xor edx, edx
cmp dword [0x40f4e0], edx
jle 0x406e8f
mov eax, 0x40f3b0
mov ecx, dword [eax]
cmp byte [ecx + 0xc], bl
je 0x406e84
add eax, 4
inc edx
cmp edx, dword [0x40f4e0]
jl 0x406e6f
jmp 0x406e8f
mov ebx, dword [esp + 0x32c]
mov dword [ebx], edx
jmp 0x406e96
mov ebx, dword [esp + 0x32c]
cmp edx, dword [0x40f4e0]
je 0x406f32
lea ecx, [edi + 1]
mov esi, 0x40122c
mov eax, ecx
mov dl, byte [eax]
cmp dl, byte [esi]
jne 0x406ecc
or dl, dl
je 0x406ec8
mov dl, byte [eax + 1]
cmp dl, byte [esi + 1]
jne 0x406ecc
add eax, 2
add esi, 2
or dl, dl
jne 0x406eac
xor eax, eax
jmp 0x406ed1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406ef1
mov eax, dword [esp + 0x330]
pop edi
pop esi
pop ebx
mov dword [eax], 0
mov eax, 1
add esp, 0x318
ret
mov eax, 0x401230
mov dl, byte [ecx]
cmp dl, byte [eax]
jne 0x406f16
or dl, dl
je 0x406f12
mov dl, byte [ecx + 1]
cmp dl, byte [eax + 1]
jne 0x406f16
add ecx, 2
add eax, 2
or dl, dl
jne 0x406ef6
xor eax, eax
jmp 0x406f1b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406f32
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x318
ret
mov ebx, dword [esp + 0x32c]
mov ecx, 0xffffffff
sub eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
lea edi, [esp + 0xc0]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 0x800
and ecx, 3
push 0x160
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x1cc]
lea eax, [esp + 0xc8]
push ecx
push 0
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
test eax, eax
jne 0x406f88
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x318
ret
test byte [esp + 0x1ce], 1
je 0x406fd3
cmp dword [0x40f610], 0
jne 0x406fb3
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
mov eax, 1
jge 0x406fae
xor eax, eax
mov dword [0x40f610], eax
lea eax, [esp + 0xc0]
push eax
call fcn.00404ae0
add esp, 4
test eax, eax
jne 0x406fd3
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x318
ret
lea eax, [esp + 0x38]
push 0
lea ecx, [esp + 0xc4]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_OpenFile]
cmp eax, 0xffffffff
mov esi, eax
jne 0x406ffb
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x318
ret
lea eax, [esp + 0xc]
push 0x2c
push eax
push esi
call dword [sym.imp.KERNEL32.dll__lread]
push esi
call dword [sym.imp.KERNEL32.dll__lclose]
cmp dword [esp + 0xc], 0x46464952
jne 0x4070bc
cmp dword [esp + 0x14], 0x41444443
jne 0x4070bc
xor ecx, ecx
cmp ecx, dword [0x40f4e0]
jge 0x40705f
mov eax, 0x40f3b0
mov edx, dword [eax]
mov esi, dword [esp + 0x24]
cmp dword [edx + 0x3a9], esi
je 0x407057
add eax, 4
inc ecx
cmp ecx, dword [0x40f4e0]
jl 0x40703b
jmp 0x407059
mov dword [ebx], ecx
cmp ecx, dword [0x40f4e0]
jne 0x40709c
cmp dword [esp + 0x338], 0
jne 0x407090
mov eax, dword [0x40f234]
mov ecx, dword [eax*4 + 0x40f3b0]
test byte [ecx + 0xe], 0x40
jne 0x40708a
mov eax, dword [esp + 0x24]
push eax
call fcn.00407180
add esp, 4
mov dword [ebx], 0xffffffff
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x318
ret
xor ecx, ecx
mov eax, dword [esp + 0x330]
mov cx, word [esp + 0x22]
pop edi
dec ecx
pop esi
pop ebx
mov dword [eax], ecx
mov eax, 1
add esp, 0x318
ret
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x318
ret