Function at 0x406de8
Capabilities:
Get file size
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3ac
push ebx
push esi
mov esi, dword [0x4339ac]
push edi
push dword [esi + 0x138]
call dword [sym.imp.USER32.dll_SetCursor]
push dword [esi + 0x22f4]
mov dword [ebp - 0x2c], eax
call fcn.0041d0e0
xor ebx, ebx
cmp eax, 0xffffffff
je 0x4070f3
inc eax
imul eax, eax, 0x368
lea eax, [eax + esi + 0xb0c]
cmp dword [eax + 0x364], ebx
je 0x4070f3
mov edi, dword [eax + 0x360]
cmp edi, ebx
je 0x4070f3
push dword [esi + 0x22fc]
call fcn.0041d0e0
cmp eax, 0xffffffff
je 0x4070f3
imul eax, eax, 0x550
lea eax, [eax + edi + 0x1b0]
cmp byte [eax], bl
mov dword [ebp - 0x24], eax
je 0x4070f3
cmp dword [ebp + 8], 2
jge 0x4070d5
push 0x118
lea eax, [ebp - 0x2a8]
push eax
mov dword [ebp - 8], ebx
call fcn.0041ce10
mov eax, dword [esi + 4]
mov dword [ebp - 0x2a8], eax
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x2a0], eax
lea eax, [esi + 0x140]
push eax
lea eax, [ebp - 0x4c]
push eax
mov dword [ebp - 0x2a4], 0xd0
mov dword [ebp - 0x29c], str.dev.cab
mov dword [ebp - 0x298], 0x42c480
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x42c424
lea eax, [ebp - 0x4c]
push eax
call edi
push 0x42c420
lea eax, [ebp - 0x4c]
push eax
call edi
lea eax, [ebp - 0x2a8]
push eax
call fcn.00419fcd
mov edi, eax
cmp edi, ebx
je 0x4070f6
lea eax, [ebp - 0x294]
push eax
lea eax, [ebp - 0x150]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push ebx
push 0x80
push 3
push ebx
push ebx
push 0xd0000000
lea eax, [ebp - 0x150]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [ebp - 4], eax
je 0x407065
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
mov eax, dword [0x4339ac]
push edi
push 8
push dword [eax]
mov dword [ebp - 0x20], edi
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
push ebx
lea ecx, [ebp - 0x14]
push ecx
push edi
push eax
push dword [ebp - 4]
mov dword [ebp - 8], eax
mov dword [ebp - 0x14], ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, edi
cdq
sub eax, edx
sar eax, 1
add eax, 0xfffffff8
cmp eax, ebx
mov dword [ebp - 0xc], ebx
jle 0x406fb7
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x10]
xor edi, edi
mov dx, word [ecx]
cmp dx, word [edi*2 + str.Z5X3Q2Y1]
jne 0x406fa4
inc edi
inc ecx
inc ecx
cmp edi, 8
jl 0x406f8f
cmp edi, 8
je 0x406fbf
inc dword [ebp - 0xc]
add dword [ebp - 0x10], 2
cmp dword [ebp - 0xc], eax
jl 0x406f8a
jmp 0x406fba
mov edi, dword [ebp + 8]
cmp edi, 8
jne 0x406ff3
push 0x20
lea eax, [ebp - 0x190]
push eax
push 0xffffffffffffffff
lea eax, [ebp - 0x4c]
push eax
push ebx
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea eax, [ebp - 0x190]
push eax
mov eax, dword [ebp - 0xc]
add edi, eax
mov eax, dword [ebp - 8]
lea eax, [eax + edi*2]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push ebx
push ebx
push ebx
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push ebx
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x20]
mov dword [ebp - 0x14], ebx
push dword [ebp - 8]
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov edi, eax
cmp edi, ebx
je 0x407065
cmp dword [ebp - 4], ebx
jbe 0x40702a
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x150]
push eax
mov dword [ebp - 4], ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x28], ebx
call fcn.0040595c
mov edi, eax
cmp edi, ebx
je 0x407073
push dword [ebp - 0x18]
lea eax, [ebp - 0x150]
push eax
call fcn.00405a31
mov edi, eax
cmp edi, ebx
je 0x407073
xor edi, edi
inc edi
cmp dword [ebp - 4], ebx
jbe 0x407073
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 8], ebx
je 0x407089
push dword [ebp - 8]
mov eax, dword [0x4339ac]
push ebx
push dword [eax]
call dword [sym.imp.KERNEL32.dll_HeapFree]
cmp edi, ebx
je 0x4070f6
lea eax, [ebp - 0x3ac]
push eax
call fcn.00409d64
lea eax, [ebp - 0x3ac]
push eax
lea eax, [ebp - 0x150]
push eax
push str.DEVL
push str.MAIN
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push str.PNP_Filter
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.00419e90
mov edi, eax
cmp edi, ebx
je 0x4070f6
mov eax, dword [ebp - 0x24]
lea ecx, [ebp - 0x1c]
push ecx
push eax
push dword [ebp + 8]
mov dword [ebp - 0x1c], ebx
call fcn.004069a3
cmp dword [ebp - 0x1c], ebx
mov edi, eax
je 0x4070f6
call fcn.004074ba
jmp 0x4070f6
mov edi, dword [ebp + 8]
cmp dword [ebp + 8], 1
mov eax, str.Install
je 0x407106
mov eax, str.UnInstall
push eax
lea eax, [ebp - 0x150]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp edi, ebx
je 0x407126
mov eax, str._Complete.
mov dword [ebp + 8], 0x40
jmp 0x407132
mov eax, str._Not_Complete.
mov dword [ebp + 8], 0x10
push eax
lea eax, [ebp - 0x150]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
cmp edi, ebx
jne 0x407164
push 0x811
push dword [ebp + 8]
lea eax, [ebp - 0x150]
push str.NezuVirtualUSB
push eax
push dword [esi + 0x658]
call dword [sym.imp.USER32.dll_MessageBoxExA]
call fcn.00415d56
call fcn.004175b3
push dword [ebp - 0x2c]
call dword [sym.imp.USER32.dll_SetCursor]
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret 4