Function at 0x10017580
Capabilities:
Get file system object information
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100d0f78
mov eax, dword fs:[0]
push eax
sub esp, 0x544
mov eax, dword [0x100e7034]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x4f8], ecx
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x4f8]
add eax, 0xcc
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x548], esp
push eax
call fcn.10002310
mov dword [ebp - 0x544], eax
call fcn.10009900
add esp, 0x18
mov byte [ebp - 0x4f1], al
movzx ecx, byte [ebp - 0x4f1]
test ecx, ecx
jne 0x10017633
push str.path_is_not_exist_
push 3
push 0x116
push 0x100d8740
push 0x100d8770
call fcn.100c3a80
add esp, 0x14
mov byte [ebp - 0x4ec], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 8]
call fcn.10001d90
mov al, byte [ebp - 0x4ec]
jmp 0x10017b63
xor edx, edx
mov word [ebp - 0x218], dx
push 0x206
push 0
lea eax, [ebp - 0x216]
push eax
call sub.MSVCR120.dll_memset
add esp, 0xc
mov ecx, dword [ebp - 0x4f8]
add ecx, 0xcc
call fcn.10001c30
push eax
lea ecx, [ebp - 0x218]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathCanonicalizeW]
mov dword [ebp - 0x4dc], 0
push 0x2b0
push 0
lea edx, [ebp - 0x4d8]
push edx
call sub.MSVCR120.dll_memset
add esp, 0xc
push 0x100
push 0x2b4
lea eax, [ebp - 0x4dc]
push eax
push 0
lea ecx, [ebp - 0x218]
push ecx
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov dword [ebp - 0x52c], eax
cmp dword [ebp - 0x52c], 0
jne 0x10017706
lea edx, [ebp - 0x218]
push edx
push str.Get_icon_info_fail__path:__s
push 3
push 0x120
push str..._srcPrivateHelper_toolsExeDetailTool.cpp
push str.CExeDetail::SaveToIco
call fcn.100c3e10
add esp, 0x18
mov byte [ebp - 0x4e9], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 8]
call fcn.10001d90
mov al, byte [ebp - 0x4e9]
jmp 0x10017b63
mov eax, dword [ebp - 0x4dc]
mov dword [ebp - 0x514], eax
mov dword [ebp - 0x524], 0x20
mov byte [ebp - 0x4dd], 0
mov dword [ebp - 0x550], 0
mov dword [ebp - 0x54c], 0
mov dword [ebp - 0x500], 0
mov dword [ebp - 0x504], 0
mov dword [ebp - 0x4fc], 0
push 0
push 0
push 2
push 0
push 1
push 0x40000000
lea ecx, [ebp + 8]
call fcn.10001c30
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x4f0], eax
cmp dword [ebp - 0x4f0], 0xffffffff
jne 0x100177b0
mov ecx, dword [ebp - 0x514]
push ecx
call dword [sym.imp.USER32.dll_DestroyIcon]
mov byte [ebp - 0x4eb], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 8]
call fcn.10001d90
mov al, byte [ebp - 0x4eb]
jmp 0x10017b63
xor edx, edx
mov dword [ebp - 0x51c], edx
mov word [ebp - 0x518], dx
xor eax, eax
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x224], eax
mov dword [ebp - 0x220], eax
mov dword [ebp - 0x21c], eax
lea ecx, [ebp - 0x540]
push ecx
mov edx, dword [ebp - 0x514]
push edx
call dword [sym.imp.USER32.dll_GetIconInfo]
push 1
lea eax, [ebp - 0x510]
push eax
lea ecx, [ebp - 0x528]
push ecx
mov edx, dword [ebp - 0x534]
push edx
mov ecx, dword [ebp - 0x4f8]
call fcn.100174e0
mov eax, dword [ebp - 0x524]
push eax
lea ecx, [ebp - 0x50c]
push ecx
lea edx, [ebp - 0x508]
push edx
mov eax, dword [ebp - 0x530]
push eax
mov ecx, dword [ebp - 0x4f8]
call fcn.100174e0
mov ecx, dword [ebp - 0x528]
push ecx
call dword [sym.imp.MSVCR120.dll_malloc]
add esp, 4
mov dword [ebp - 0x520], eax
mov edx, dword [ebp - 0x508]
push edx
call dword [sym.imp.MSVCR120.dll_malloc]
add esp, 4
mov dword [ebp - 0x4e8], eax
mov eax, dword [ebp - 0x510]
push eax
call dword [sym.imp.MSVCR120.dll_malloc]
add esp, 4
mov dword [ebp - 0x500], eax
mov ecx, dword [ebp - 0x50c]
push ecx
call dword [sym.imp.MSVCR120.dll_malloc]
add esp, 4
mov dword [ebp - 0x504], eax
push 1
mov edx, dword [ebp - 0x500]
push edx
mov eax, dword [ebp - 0x520]
push eax
mov ecx, dword [ebp - 0x534]
push ecx
mov ecx, dword [ebp - 0x4f8]
call fcn.10017480
mov edx, dword [ebp - 0x524]
push edx
mov eax, dword [ebp - 0x504]
push eax
mov ecx, dword [ebp - 0x4e8]
push ecx
mov edx, dword [ebp - 0x530]
push edx
mov ecx, dword [ebp - 0x4f8]
call fcn.10017480
mov eax, 1
mov word [ebp - 0x51a], ax
mov ecx, 1
mov word [ebp - 0x518], cx
movzx esi, byte [ebp - 0x4dd]
push 0
lea edx, [ebp - 0x4fc]
push edx
push 6
lea eax, [ebp - 0x51c]
push eax
mov ecx, dword [ebp - 0x4f0]
push ecx
call dword [sym.imp.KERNEL32.dll_WriteFile]
and esi, eax
je 0x10017922
mov byte [ebp - 0x4e1], 1
jmp 0x10017929
mov byte [ebp - 0x4e1], 0
mov dl, byte [ebp - 0x4e1]
mov byte [ebp - 0x4dd], dl
mov eax, dword [ebp - 0x4e8]
mov cl, byte [eax + 4]
mov byte [ebp - 0x228], cl
mov edx, dword [ebp - 0x4e8]
mov al, byte [edx + 8]
mov byte [ebp - 0x227], al
mov ecx, dword [ebp - 0x4e8]
movzx edx, word [ecx + 0xc]
mov eax, dword [ebp - 0x4e8]
movzx ecx, word [eax + 0xe]
imul edx, ecx
mov word [ebp - 0x226], dx
mov edx, dword [ebp - 0x508]
add edx, dword [ebp - 0x50c]
add edx, dword [ebp - 0x510]
mov dword [ebp - 0x220], edx
mov dword [ebp - 0x21c], 0x16
movzx esi, byte [ebp - 0x4dd]
push 0
lea eax, [ebp - 0x4fc]
push eax
push 0x10
lea ecx, [ebp - 0x228]
push ecx
mov edx, dword [ebp - 0x4f0]
push edx
call dword [sym.imp.KERNEL32.dll_WriteFile]
and esi, eax
je 0x100179c6
mov byte [ebp - 0x4df], 1
jmp 0x100179cd
mov byte [ebp - 0x4df], 0
mov al, byte [ebp - 0x4df]
mov byte [ebp - 0x4dd], al
mov ecx, dword [ebp - 0x4e8]
mov edx, dword [ecx + 8]
shl edx, 1
mov eax, dword [ebp - 0x4e8]
mov dword [eax + 8], edx
movzx esi, byte [ebp - 0x4dd]
push 0
lea ecx, [ebp - 0x4fc]
push ecx
mov edx, dword [ebp - 0x508]
push edx
mov eax, dword [ebp - 0x4e8]
push eax
mov ecx, dword [ebp - 0x4f0]
push ecx
call dword [sym.imp.KERNEL32.dll_WriteFile]
and esi, eax
je 0x10017a25
mov byte [ebp - 0x4e2], 1
jmp 0x10017a2c
mov byte [ebp - 0x4e2], 0
mov dl, byte [ebp - 0x4e2]
mov byte [ebp - 0x4dd], dl
movzx esi, byte [ebp - 0x4dd]
push 0
lea eax, [ebp - 0x4fc]
push eax
mov ecx, dword [ebp - 0x50c]
push ecx
mov edx, dword [ebp - 0x504]
push edx
mov eax, dword [ebp - 0x4f0]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
and esi, eax
je 0x10017a70
mov byte [ebp - 0x4de], 1
jmp 0x10017a77
mov byte [ebp - 0x4de], 0
mov cl, byte [ebp - 0x4de]
mov byte [ebp - 0x4dd], cl
movzx esi, byte [ebp - 0x4dd]
push 0
lea edx, [ebp - 0x4fc]
push edx
mov eax, dword [ebp - 0x510]
push eax
mov ecx, dword [ebp - 0x500]
push ecx
mov edx, dword [ebp - 0x4f0]
push edx
call dword [sym.imp.KERNEL32.dll_WriteFile]
and esi, eax
je 0x10017abb
mov byte [ebp - 0x4e0], 1
jmp 0x10017ac2
mov byte [ebp - 0x4e0], 0
mov al, byte [ebp - 0x4e0]
mov byte [ebp - 0x4dd], al
mov ecx, dword [ebp - 0x4e8]
push ecx
call dword [sym.imp.MSVCR120.dll_free]
add esp, 4
mov edx, dword [ebp - 0x520]
push edx
call dword [sym.imp.MSVCR120.dll_free]
add esp, 4
mov eax, dword [ebp - 0x504]
push eax
call dword [sym.imp.MSVCR120.dll_free]
add esp, 4
mov ecx, dword [ebp - 0x500]
push ecx
call dword [sym.imp.MSVCR120.dll_free]
add esp, 4
mov edx, dword [ebp - 0x530]
push edx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [ebp - 0x534]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov ecx, dword [ebp - 0x514]
push ecx
call dword [sym.imp.USER32.dll_DestroyIcon]
mov edx, dword [ebp - 0x4f0]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, byte [ebp - 0x4dd]
mov byte [ebp - 0x4ea], al
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 8]
call fcn.10001d90
mov al, byte [ebp - 0x4ea]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.100ce74b
mov esp, ebp
pop ebp
ret 0x18