Function at 0x10004566
Capabilities:
Get disk information
Get file size
Read file on windows
Write file on windows

Disassembly:
mov eax, 0x10067565
call fcn.100575f8
push ecx
mov eax, 0x14e8
call fcn.10056840
mov eax, dword [0x10084500]
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 4], ebx
call fcn.1002e1b2
cmp byte [0x10085fc2], bl
je 0x10004736
mov edx, dword [0x10085fb0]
cmp edx, ebx
je 0x10004736
xor eax, eax
mov byte [ebp - 0x14d4], bl
mov ecx, 0x1f3
lea edi, [ebp - 0x14d3]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [ebp - 0xd04], bl
mov ecx, 0x2ed
lea edi, [ebp - 0xd03]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 0xc
stosb byte es:[edi], al
pop ecx
xor eax, eax
mov byte [ebp - 0x48], bl
lea edi, [ebp - 0x47]
rep stosd dword es:[edi], eax
push 0x7d0
stosb byte es:[edi], al
lea eax, [ebp - 0x14d4]
push eax
push dword [ebp + 0x10]
mov dword [ebp - 0x14e8], 0x31
push edx
mov dword [ebp - 0x14e0], ebx
call dword [sym.imp.USER32.dll_LoadStringA]
test eax, eax
je 0x10004736
or dword [ebp - 0x14ec], 0xffffffff
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp - 0x14ec]
push eax
push ebx
push ebx
push 0x1006c864
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
push ebx
push 6
push 4
push ebx
push 3
push 0xc0000000
push 0x1006cd39
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
mov dword [ebp - 0x14d8], esi
je 0x10004736
cmp esi, ebx
je 0x10004736
lea eax, [ebp - 0x14f8]
push eax
call fcn.10057f09
lea eax, [ebp - 0x14f8]
push eax
call fcn.10057ef0
cmp eax, ebx
pop ecx
pop ecx
mov dword [ebp - 0x14dc], eax
jne 0x10004697
mov dword [ebp - 0x14dc], str.00_00_00
cmp dword [ebp - 0x14ec], ebx
push ebx
push ebx
push ebx
push esi
je 0x1000478a
mov esi, dword [sym.imp.KERNEL32.dll_SetFilePointer]
call esi
push 0x40
pop ecx
xor eax, eax
mov byte [ebp - 0x14c], bl
lea edi, [ebp - 0x14b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0xa
lea eax, [ebp - 0x48]
push eax
push dword [ebp - 0x14ec]
call fcn.1005b43a
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x14c]
push eax
call fcn.10057da0
lea eax, [ebp - 0x48]
push eax
call fcn.10056d60
push eax
mov dword [ebp - 0x14e8], eax
lea eax, [ebp - 0x48]
push eax
push str.djyntl_
call fcn.1000452b
mov edi, dword [sym.imp.KERNEL32.dll_WriteFile]
add esp, 0x24
push ebx
lea eax, [ebp - 0x14e0]
push eax
push 4
lea eax, [ebp - 0x14e8]
push eax
push dword [ebp - 0x14d8]
call edi
test eax, eax
jne 0x1000474d
push dword [ebp - 0x14d8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x14]
call fcn.100568ae
pop edi
pop esi
pop ebx
leave
ret
push ebx
lea eax, [ebp - 0x14e0]
push eax
push 0x32
lea eax, [ebp - 0x48]
push eax
push dword [ebp - 0x14d8]
call edi
test eax, eax
je 0x1000472a
lea eax, [ebp - 0x14c]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.10057da0
pop ecx
pop ecx
push ebx
push ebx
push 0x36
push dword [ebp - 0x14d8]
call esi
jmp 0x10004811
mov edi, dword [sym.imp.KERNEL32.dll_SetFilePointer]
call edi
push ebx
lea eax, [ebp - 0x14e0]
push eax
push 4
lea eax, [ebp - 0x14e8]
push eax
push esi
mov esi, dword [sym.imp.KERNEL32.dll_ReadFile]
call esi
test eax, eax
je 0x1000472a
push ebx
lea eax, [ebp - 0x14e0]
push eax
push dword [ebp - 0x14e8]
lea eax, [ebp - 0x48]
push eax
push dword [ebp - 0x14d8]
call esi
test eax, eax
je 0x1000472a
push dword [ebp - 0x14e8]
lea eax, [ebp - 0x48]
push eax
push str.djyntl_
call fcn.1000452b
add esp, 0xc
push ebx
push dword [ebp - 0x14d8]
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, ebx
je 0x1000480b
push ebx
push ebx
push eax
push dword [ebp - 0x14d8]
call edi
jmp 0x10004817
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x14e0], eax
mov eax, dword [ebp + 8]
imul eax, eax, 0x32
add eax, 0x10088ff8
push eax
mov eax, dword [ebp + 0xc]
push dword [ebp - 0x14dc]
imul eax, eax, 0x32
add eax, 0x100865d0
push eax
lea eax, [ebp - 0xd04]
push 0x10086cc0
push eax
call fcn.10057e98
add esp, 0x14
xor esi, esi
lea eax, [ebp - 0xd04]
push eax
call fcn.10056d60
cmp esi, eax
pop ecx
jge 0x10004875
lea eax, [ebp + esi - 0xd04]
mov cl, byte [eax]
cmp cl, 0xa
je 0x1000486f
cmp cl, 0xd
jne 0x10004872
mov byte [eax], 0x20
inc esi
jmp 0x1000484b
lea eax, [ebp - 0xd04]
push eax
mov dword [ebp - 0x14e4], ebx
call fcn.10056d60
cmp eax, ebx
pop ecx
mov dword [ebp - 0x14dc], eax
mov dword [ebp - 0x14e4], eax
je 0x1000472a
mov edi, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push 4
mov esi, 0x3000
push esi
push eax
push ebx
call edi
cmp eax, ebx
mov dword [ebp - 0x14f0], eax
je 0x1000472a
push dword [ebp - 0x14dc]
lea ecx, [ebp - 0xd04]
push ecx
push eax
call fcn.10056df0
add esp, 0xc
lea eax, [ebp + 0x14]
push eax
lea eax, [ebp - 0x14d4]
push eax
lea eax, [ebp - 0xd04]
push eax
mov byte [ebp - 0xd04], bl
call dword [sym.imp.USER32.dll_wvsprintfA]
lea eax, [ebp - 0xd04]
push eax
call fcn.10056d60
add dword [ebp - 0x14e4], eax
pop ecx
push 4
push esi
push dword [ebp - 0x14e4]
push ebx
call edi
mov esi, eax
cmp esi, ebx
mov dword [ebp - 0x14dc], esi
je 0x1000472a
push dword [ebp - 0x14f0]
push esi
call fcn.10057da0
lea eax, [ebp - 0xd04]
push eax
push esi
call fcn.10057db0
mov edi, dword [sym.imp.KERNEL32.dll_VirtualFree]
add esp, 0x10
mov esi, 0x8000
push esi
push ebx
push dword [ebp - 0x14f0]
call edi
push dword [ebp - 0x14e4]
lea eax, [ebp - 0x48]
push dword [ebp - 0x14dc]
push eax
call fcn.1000452b
add esp, 0xc
push ebx
lea eax, [ebp - 0x14e0]
push eax
push 4
lea eax, [ebp - 0x14e4]
push eax
push dword [ebp - 0x14d8]
call dword [sym.imp.KERNEL32.dll_WriteFile]
push ebx
lea eax, [ebp - 0x14e0]
push eax
push dword [ebp - 0x14e4]
push dword [ebp - 0x14dc]
push dword [ebp - 0x14d8]
call dword [sym.imp.KERNEL32.dll_WriteFile]
push dword [ebp - 0x14d8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
push ebx
push dword [ebp - 0x14dc]
call edi
jmp 0x10004736