Function at 0x449a10
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x164
mov eax, dword [0x4f22ec]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x12
push 0
push 0
push 0x4cf8a8
mov dword [ebp - 0x150], ecx
or esi, 0xffffffff
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
mov ebx, eax
mov dword [ebp - 0x154], ebx
cmp ebx, esi
jne 0x449a72
call fcn.00440bb0
push eax
push str.SetupDiGetClassDevs__Interface__failed:__s
call fcn.004407e0
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00491940
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x124]
mov dword [ebp - 0x124], 0x1c
push eax
push 0
push ebx
mov dword [ebp - 0x14c], 0
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
je 0x449a5f
lea ebx, [ebx]
push 0x104
push 0
push 0x53fa58
call fcn.00493600
add esp, 0xc
push 2
push 0x104
call fcn.0049570f
add esp, 8
mov edi, eax
lea eax, [ebp - 0x148]
push eax
push 0x104
push edi
lea eax, [ebp - 0x160]
push eax
push 0xc
lea eax, [ebp - 0x124]
push eax
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x144], eax
test ebx, ebx
je 0x449b2b
push 0
push 0
push 0x104
push 0x53fa58
push 0xffffffffffffffff
push edi
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x449b2b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x144], eax
xor ebx, ebx
test edi, edi
je 0x449b38
push edi
call fcn.004998ec
add esp, 4
push dword [ebp - 0x144]
call dword [sym.imp.KERNEL32.dll_SetLastError]
test ebx, ebx
jne 0x449b9f
call fcn.00440bb0
push eax
push str.SetupDiGetDeviceRegistryProperty__Friendly_Name__failed:__s
call fcn.004407e0
mov eax, dword [str.Generic_Optical_Drive]
add esp, 8
mov dword [0x53fa58], eax
mov eax, dword [0x4e699c]
mov dword [0x53fa5c], eax
mov eax, dword [0x4e69a0]
mov dword [0x53fa60], eax
mov eax, dword [0x4e69a4]
mov dword [0x53fa64], eax
mov eax, dword [0x4e69a8]
mov dword [0x53fa68], eax
mov ax, word [0x4e69ac]
mov word [0x53fa6c], ax
mov byte [0x53fa6d], bl
push 0x53fa58
push str.Found__s_optical_device
call fcn.004407e0
add esp, 8
mov dword [ebp - 0x140], 0x1c
xor edi, edi
xor ebx, ebx
mov dword [ebp - 0x144], ebx
cmp esi, 0xffffffff
je 0x449bd8
test esi, esi
je 0x449bd8
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
or esi, 0xffffffff
push edi
call fcn.004998ec
add esp, 4
xor edi, edi
push edi
call fcn.004998ec
add esp, 4
lea eax, [ebp - 0x140]
push eax
push ebx
mov ebx, dword [ebp - 0x154]
lea eax, [ebp - 0x124]
push 0x4cf8a8
push eax
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
je 0x449e60
push edi
lea eax, [ebp - 0x148]
push eax
push edi
push edi
lea eax, [ebp - 0x140]
push eax
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailA]
test eax, eax
jne 0x449e42
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x449e1e
push dword [ebp - 0x148]
push 1
call fcn.0049570f
mov edi, eax
add esp, 8
mov dword [ebp - 0x15c], edi
test edi, edi
jne 0x449c7e
push str.Unable_to_allocate_data_for_SP_DEVICE_INTERFACE_DETAIL_DATA
call fcn.004407e0
add esp, 4
inc dword [ebp - 0x144]
mov ebx, dword [ebp - 0x144]
jmp 0x449bc5
push 0
lea eax, [ebp - 0x148]
mov dword [edi], 5
push eax
push dword [ebp - 0x148]
lea eax, [ebp - 0x140]
push edi
push eax
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailA]
test eax, eax
jne 0x449cca
call fcn.00440bb0
push eax
push str.SetupDiGetDeviceInterfaceDetail__actual__failed:__s
call fcn.004407e0
add esp, 8
inc dword [ebp - 0x144]
mov ebx, dword [ebp - 0x144]
jmp 0x449bc5
push 0
push 0x8000000
push 3
push 0
push 1
push 0x80000000
lea ebx, [edi + 4]
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
mov dword [ebp - 0x158], esi
cmp esi, 0xffffffff
je 0x449e4f
push 0
lea eax, [ebp - 0x148]
push eax
push 0x100
lea eax, [ebp - 0x108]
push eax
push 0
push 0
push 0x700a0
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x449e4f
cmp dword [ebp - 0xec], 0
jg 0x449d43
jl 0x449e4f
cmp dword [ebp - 0xf0], 0x1000
jbe 0x449e4f
push 0x800
call fcn.00499907
add esp, 4
mov dword [ebp - 0x144], eax
test eax, eax
je 0x449e0e
push 0
push 0
push 0
push 0x8000
push esi
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
je 0x449e0e
push 0
lea eax, [ebp - 0x148]
push eax
push 0x800
push dword [ebp - 0x144]
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x449e0e
cmp dword [ebp - 0x148], 0x800
jne 0x449e0e
mov esi, dword [ebp - 0x144]
mov ecx, 8
add esi, 0x28
mov edi, 0x53fa2c
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x53fa2c
mov byte [0x53fa4c], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x449dc7
sub ecx, edx
lea eax, [ecx - 1]
test eax, eax
js 0x449df5
cmp byte [eax + 0x53fa2c], 0x20
jne 0x449df5
cmp eax, 0x21
jae 0x449f96
mov byte [eax + 0x53fa2c], 0
sub eax, 1
jns 0x449dd7
mov eax, dword [ebp - 0x150]
mov esi, dword [ebp - 0x158]
mov edi, dword [ebp - 0x15c]
mov dword [eax + 0x20], 0x53fa2c
test ebx, ebx
jne 0x449eb5
xor ecx, ecx
inc ecx
jmp 0x449ee9
call fcn.00440bb0
push eax
push str.SetupDiGetDeviceInterfaceDetail__dummy__failed:__s
call fcn.004407e0
add esp, 8
inc dword [ebp - 0x144]
mov ebx, dword [ebp - 0x144]
jmp 0x449bc5
push str.SetupDiGetDeviceInterfaceDetail__dummy____no_data_was_allocated
call fcn.004407e0
add esp, 4
inc dword [ebp - 0x144]
mov ebx, dword [ebp - 0x144]
jmp 0x449bc5
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x103
je 0x449e80
call fcn.00440bb0
push eax
push str.SetupDiEnumDeviceInterfaces_failed:__s
call fcn.004407e0
add esp, 8
mov eax, dword [ebp - 0x14c]
lea ecx, [ebp - 0x124]
inc eax
push ecx
push eax
push ebx
mov dword [ebp - 0x14c], eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
jne 0x449aa0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00491940
mov esp, ebp
pop ebp
ret
mov ecx, ebx
lea edx, [ecx + 1]
lea ebx, [ebx]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x449ec0
sub ecx, edx
lea eax, [ecx + 1]
cmp eax, 0x104
jae 0x449ee4
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x449ed8
sub ecx, edx
inc ecx
jmp 0x449ee9
mov ecx, 0x104
push ecx
push ebx
push 0x53fa58
call fcn.00493080
add esp, 0xc
test ebx, ebx
jne 0x449f04
lea eax, [ebx + 0x53fa58]
jmp 0x449f3c
mov ecx, ebx
lea edx, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x449f10
sub ecx, edx
lea eax, [ecx + 1]
cmp eax, 0x104
jae 0x449f37
lea ecx, [ebx + 1]
mov al, byte [ebx]
inc ebx
test al, al
jne 0x449f26
sub ebx, ecx
lea eax, [ebx + 0x53fa58]
jmp 0x449f3c
mov eax, 0x53fb5b
mov edx, dword [ebp - 0x150]
mov ecx, dword [ebp - 0xec]
mov byte [eax], 0
mov eax, dword [ebp - 0xf0]
mov dword [edx + 0x18], 0x53fa58
mov dword [edx + 0x10], eax
mov dword [edx + 0x14], ecx
test esi, esi
je 0x449f69
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
call fcn.004998ec
add esp, 4
push dword [ebp - 0x144]
call fcn.004998ec
mov ecx, dword [ebp - 4]
add esp, 4
xor ecx, ebp
mov eax, 1
pop edi
pop esi
pop ebx
call fcn.00491940
mov esp, ebp
pop ebp
ret
call fcn.00491a70
int3