Function at 0x437380
Capabilities:
Get file system object information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xab34e2
mov eax, dword fs:[0]
push eax
sub esp, 0x2d4
mov eax, dword [0xaf408c]
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 esi, ecx
mov ebx, dword [ebp + 0xc]
or edi, 0xffffffff
xor ecx, ecx
movzx edx, word [ebx]
test dx, dx
je 0x4373d6
cmp dx, 0x2e
mov eax, ecx
movzx edx, word [ebx + ecx*2 + 2]
cmovne eax, edi
inc ecx
mov edi, eax
test dx, dx
jne 0x4373c0
mov eax, dword [ebp + 8]
test al, 0x10
jne 0x4375fb
test edi, edi
js 0x4375fb
lea eax, [ebx + edi*2]
mov ebx, dword [esi + 0x10]
xor edi, edi
mov dword [ebp - 0x2c8], eax
mov dword [ebp - 0x2cc], edi
lea edx, [eax + 2]
mov dword [ebp - 0x2d0], edx
test ebx, ebx
je 0x437447
nop word [eax + eax]
mov eax, dword [esi + 0xc]
add edi, ebx
shr edi, 1
mov eax, dword [eax + edi*4]
push dword [eax]
push edx
call fcn.0040b170
test eax, eax
je 0x4374af
jns 0x437436
mov ebx, edi
mov edi, dword [ebp - 0x2cc]
jmp 0x43743d
inc edi
mov dword [ebp - 0x2cc], edi
mov edx, dword [ebp - 0x2d0]
cmp edi, ebx
jne 0x437410
movzx eax, word [edx]
xor ecx, ecx
test ax, ax
je 0x4374bd
add eax, 0xffffffd0
cmp ax, 9
ja 0x437465
movzx eax, word [edx + ecx*2 + 2]
inc ecx
test ax, ax
jne 0x437451
test ecx, ecx
je 0x4374bd
cmp word [edx + ecx*2], 0
jne 0x4374bd
cmp dword [esi + 0x1c], 0
jne 0x4374a7
push 0x4010
push 0x2b4
lea eax, [ebp - 0x2c4]
push eax
push 0x80
push str.__FILE__.001
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov ecx, dword [ebp - 0x2c0]
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], 1
mov eax, dword [esi + 0x18]
jmp 0x4376fe
mov eax, dword [esi + 0xc]
mov eax, dword [eax + edi*4]
mov eax, dword [eax + 0xc]
jmp 0x4376fe
lea ecx, [ebp - 0x2e0]
call fcn.0040a7f0
push dword [ebp - 0x2d0]
lea ecx, [ebp - 0x2e0]
mov dword [ebp - 4], 0
call fcn.0040a9a0
push 0x4010
push 0x2b4
lea eax, [ebp - 0x2c4]
push eax
mov eax, dword [ebp + 8]
or eax, 0x80
push eax
push dword [ebp - 0x2c8]
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov ecx, dword [esi + 0x14]
mov eax, dword [ebp - 0x2c0]
mov dword [ebp - 0x2d4], eax
cmp dword [esi + 0x10], ecx
jne 0x437589
cmp ecx, 0x7fffffff
jae 0x43771c
mov eax, ecx
mov ebx, SysReAllocString
sub ebx, ecx
shr eax, 2
inc eax
mov edx, 4
cmp eax, ebx
cmovbe ebx, eax
add ebx, ecx
xor ecx, ecx
mov eax, ebx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00a3c1e3
mov ecx, dword [esi + 0x10]
add esp, 4
mov dword [ebp - 0x2c8], eax
test ecx, ecx
je 0x437572
shl ecx, 2
push ecx
push dword [esi + 0xc]
push eax
call fcn.00a8d690
add esp, 0xc
push dword [esi + 0xc]
call fcn.00a3c1ec
mov eax, dword [ebp - 0x2c8]
add esp, 4
mov dword [esi + 0xc], eax
mov dword [esi + 0x14], ebx
push 0x10
call fcn.00a3c1a5
mov ebx, eax
add esp, 4
mov dword [ebp - 0x2c8], ebx
mov byte [ebp - 4], 1
test ebx, ebx
je 0x4375bc
lea eax, [ebp - 0x2e0]
mov ecx, ebx
push eax
call fcn.0040a610
mov eax, dword [ebp - 0x2d4]
mov dword [ebx + 0xc], eax
jmp 0x4375be
xor ebx, ebx
mov eax, dword [esi + 0xc]
lea ecx, [eax + edi*4]
mov eax, dword [esi + 0x10]
sub eax, edi
shl eax, 2
push eax
push ecx
lea eax, [ecx + 4]
push eax
call fcn.00a8d690
mov eax, dword [esi + 0xc]
mov dword [eax + edi*4], ebx
inc dword [esi + 0x10]
push dword [ebp - 0x2e0]
mov esi, dword [ebp - 0x2d4]
call fcn.00a3c1ec
add esp, 0x10
mov eax, esi
jmp 0x4376fe
mov edx, dword [esi + 4]
xor edi, edi
test edx, edx
je 0x43762b
mov ebx, dword [esi]
lea ecx, [edx + edi]
shr ecx, 1
mov ebx, dword [ebx + ecx*8]
cmp eax, ebx
je 0x437663
cmp dword [ebp + 8], ebx
mov eax, ecx
mov ebx, dword [esi]
cmovae eax, edx
mov edx, eax
lea eax, [ecx + 1]
cmovae edi, eax
mov eax, dword [ebp + 8]
cmp edi, edx
jne 0x437606
push 0x4010
push 0x2b4
lea ecx, [ebp - 0x2c4]
or eax, 0x80
push ecx
push eax
push str.__DIR__
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov ecx, dword [esi + 8]
cmp dword [esi + 4], ecx
jne 0x4376ce
cmp ecx, 0x7fffffff
jae 0x437737
jmp 0x43766e
mov eax, dword [esi]
mov eax, dword [eax + ecx*8 + 4]
jmp 0x4376fe
mov eax, ecx
mov ebx, SysReAllocString
sub ebx, ecx
shr eax, 2
inc eax
mov edx, 8
cmp eax, ebx
cmovbe ebx, eax
add ebx, ecx
xor ecx, ecx
mov eax, ebx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00a3c1e3
mov ecx, dword [esi + 4]
add esp, 4
mov dword [ebp - 0x2c8], eax
test ecx, ecx
je 0x4376b9
shl ecx, 3
push ecx
push dword [esi]
push eax
call fcn.00a8d690
add esp, 0xc
push dword [esi]
call fcn.00a3c1ec
mov eax, dword [ebp - 0x2c8]
add esp, 4
mov dword [esi], eax
mov dword [esi + 8], ebx
mov eax, dword [esi]
lea ecx, [eax + edi*8]
mov eax, dword [esi + 4]
sub eax, edi
shl eax, 3
push eax
push ecx
add ecx, 8
push ecx
call fcn.00a8d690
mov ecx, dword [esi]
add esp, 0xc
mov eax, dword [ebp + 8]
mov dword [ecx + edi*8], eax
mov eax, dword [ebp - 0x2c0]
mov dword [ecx + edi*8 + 4], eax
inc dword [esi + 4]
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.00a3bfd6
mov esp, ebp
pop ebp
ret 8
push 0xaed7ac
lea eax, [ebp - 0x2c8]
mov dword [ebp - 0x2c8], 0x7e5
push eax
call fcn.00a8e0cc
push 0xaed7ac
lea eax, [ebp - 0x2cc]
mov dword [ebp - 0x2cc], 0x7e5
push eax
call fcn.00a8e0cc
int3