Function at 0x40bd70
Capabilities:
Get file size
Read file on windows

Disassembly:
push 0xffffffffffffffff
push 0x44bd75
mov eax, dword fs:[0]
push eax
mov eax, 0xa4a0
call fcn.00435370
mov eax, dword [0x4638dc]
xor eax, esp
mov dword [esp + 0xa49c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4638dc]
xor eax, esp
push eax
lea eax, [esp + 0xa4b4]
mov dword fs:[0], eax
mov eax, dword [esp + 0xa4c8]
mov ebx, dword [esp + 0xa4c4]
mov esi, dword [esp + 0xa4d0]
mov edi, ecx
mov ecx, dword [esp + 0xa4cc]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], esi
call fcn.0041591e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40bdfb
push 0x80004005
call fcn.00401010
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
push 0x128
push 0
push esi
mov dword [esp + 0xa4c8], 0
call fcn.00432710
push 0x9fb4
lea ecx, [esp + 0x50c]
push 0
push ecx
call fcn.00432710
push 0xa4
lea edx, [esp + 0x274]
push 0
push edx
call fcn.00432710
add esp, 0x24
cmp byte [ebx], 0x5c
jne 0x40be69
cmp byte [ebx + 1], 0x5c
lea eax, [ebx + 1]
jne 0x40be69
push eax
push str.__UNC_s
lea eax, [esp + 0x28]
push eax
jmp 0x40be74
push ebx
push str.___s
lea ecx, [esp + 0x28]
push ecx
call fcn.00402cf0
add esp, 0xc
push 0
push 0x8000000
push 3
push 0
push 0
push SysReAllocStringLen
push ebx
call dword [sym.imp.KERNEL32.DLL_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x40bf37
push ebx
push 0x44fb68
lea esi, [edi + 0x17c]
call dword [sym.imp.KERNEL32.DLL_GetLastError]
push eax
push esi
call fcn.00402e90
add esp, 0x10
lea edx, [esp + 0x18]
push edx
mov ecx, esi
call fcn.00401a10
mov eax, dword [eax]
push 0
push 0
push eax
mov byte [esp + 0xa4c8], 1
call fcn.0041d02a
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0xa4bc], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bf04
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov dword [esp + 0xa4bc], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bf2f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
or eax, 0xffffffff
jmp 0x40d3df
lea ecx, [esp + 0x34]
push ecx
push esi
call dword [sym.imp.KERNEL32.DLL_GetFileSize]
cmp eax, 0xffffffff
mov ebp, dword [sym.imp.KERNEL32.DLL_GetLastError]
mov dword [esp + 0x30], eax
jne 0x40bffc
call ebp
test eax, eax
je 0x40bffc
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
push ebx
push str.Failed_to_get_file_size_for__s.
lea esi, [edi + 0x17c]
call ebp
push eax
push esi
call fcn.00402e90
add esp, 0x10
lea edx, [esp + 0x18]
push edx
mov ecx, esi
call fcn.00401a10
mov eax, dword [eax]
push 0
push 0
push eax
mov byte [esp + 0xa4c8], 2
call fcn.0041d02a
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0xa4bc], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bfc7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov dword [esp + 0xa4bc], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bff2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0xfffffffe
jmp 0x40d3df
push 0
lea ecx, [esp + 0x50]
push ecx
push 0x9fb4
lea edx, [esp + 0x508]
push edx
push esi
call dword [sym.imp.KERNEL32.DLL_ReadFile]
test eax, eax
jne 0x40c0bb
push ebx
push str.Failed_to_read_file_structure_from__s.
add edi, 0x17c
call ebp
push eax
push edi
call fcn.00402e90
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
lea eax, [esp + 0x18]
push eax
mov ecx, edi
call fcn.00401a10
mov eax, dword [eax]
push 0
push 0
push eax
mov byte [esp + 0xa4c8], 3
call fcn.0041d02a
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0xa4bc], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c086
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov dword [esp + 0xa4bc], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c0b1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0xfffffffd
jmp 0x40d3df
push 4
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x28]
call fcn.00404a10
mov eax, dword [eax]
push str..IFU
push eax
call fcn.00431c54
add esp, 8
test eax, eax
mov eax, dword [esp + 0x28]
sete bl
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40c100
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x40c252
push 2
lea ecx, [esp + 0x58]
push ecx
push 0xffffff5c
push esi
mov dword [esp + 0x60], 0xffffff5c
mov dword [esp + 0x64], 0xffffffff
call dword [sym.imp.KERNEL32.DLL_SetFilePointer]
cmp eax, 0xffffffff
jne 0x40c199
call ebp
test eax, eax
je 0x40c199
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x2c]
push edx
push str.__s
add edi, 0x17c
call ebp
push eax
push edi
call fcn.00402e90
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
lea eax, [esp + 0x18]
push eax
mov ecx, edi
call fcn.00401a10
mov ecx, dword [eax]
push 0
push 0
push ecx
mov byte [esp + 0xa4c8], 4
call fcn.0041d02a
lea ecx, [esp + 0x18]
call fcn.00401410
lea ecx, [esp + 0x20]
call fcn.00401410
mov eax, 0xfffffffc
jmp 0x40d3df
push 0
lea edx, [esp + 0x50]
push edx
push 0xa4
lea eax, [esp + 0x264]
push eax
push esi
call dword [sym.imp.KERNEL32.DLL_ReadFile]
test eax, eax
jne 0x40c21b
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x2c]
push ecx
push str.Failed_to_read_offset_info_block_from__s.
add edi, 0x17c
call ebp
push eax
push edi
call fcn.00402e90
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
lea edx, [esp + 0x18]
push edx
mov ecx, edi
call fcn.00401a10
mov eax, dword [eax]
push 0
push 0
push eax
mov byte [esp + 0xa4c8], 5
call fcn.0041d02a
lea ecx, [esp + 0x18]
call fcn.00401410
lea ecx, [esp + 0x20]
call fcn.00401410
mov eax, 0xfffffffb
jmp 0x40d3df
cmp word [esp + 0x2fa], 0xbb66
jne 0x40c252
mov ecx, dword [esp + 0x270]
sub ecx, dword [esp + 0x268]
mov edx, dword [esp + 0x274]
sbb edx, dword [esp + 0x26c]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], edx
mov ebx, 1
jmp 0x40c259
mov bl, byte [esp + 0xa4d4]
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov ecx, 0x80
lea esi, [esp + 0x4fc]
lea edi, [esp + 0x2fc]
rep movsd dword es:[edi], dword [esi]
sub edx, eax
nop
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, 1
test cl, cl
jne 0x40c280
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x30]
mov ebp, dword [esp + 0x34]
mov dword [eax + 0x110], edi
mov dword [eax + 0x114], ebp
mov byte [eax + 0x118], bl
mov eax, 5
mov ecx, str.CD001
lea edx, [esp + 0x84fd]
jmp 0x40c2c0
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40c2d8
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40c2c0
test eax, eax
je 0x40c335
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40c327
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c335
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40c327
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c335
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40c327
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c335
movzx eax, byte [ecx]
movzx esi, byte [edx]
sub esi, eax
je 0x40c335
test esi, esi
mov eax, 1
jg 0x40c337
or eax, 0xffffffff
jmp 0x40c337
xor eax, eax
test eax, eax
jne 0x40c367
movzx eax, word [esp + 0x857c]
mov ecx, dword [esp + 0x854c]
push 0
cdq
push ecx
push edx
push eax
call fcn.00432980
mov edi, dword [esp + 0x1c]
mov word [edi + 0x124], 1
jmp 0x40c41a
mov eax, 5
mov ecx, str.CD001
lea edx, [esp + 0x980d]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40c390
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40c378
test eax, eax
je 0x40c3ed
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40c3df
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c3ed
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40c3df
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c3ed
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40c3df
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c3ed
movzx esi, byte [edx]
movzx edx, byte [ecx]
sub esi, edx
je 0x40c3ed
test esi, esi
mov eax, 1
jg 0x40c3ef
or eax, 0xffffffff
jmp 0x40c3ef
xor eax, eax
test eax, eax
jne 0x40c43b
movzx eax, word [esp + 0x988c]
mov ecx, dword [esp + 0x985c]
push 0
cdq
push ecx
push edx
push eax
call fcn.00432980
mov edi, dword [esp + 0x1c]
mov word [edi + 0x124], 2
mov dword [edi + 0x114], edx
mov dword [edi + 0x110], eax
mov word [edi + 0x11a], 4
mov byte [edi + 0x118], 1
jmp 0x40ccba
mov al, byte [esp + 0x511]
cmp al, 0xf0
je 0x40ccad
cmp al, 0xf9
je 0x40ccad
cmp al, 0xfc
je 0x40ccad
cmp al, 0xfd
je 0x40ccad
cmp al, 0xfe
je 0x40ccad
cmp al, 0xff
je 0x40ccad
cmp al, 0xf8
je 0x40cc9e
movzx eax, byte [esp + 0x532]
sub eax, 0x46
jne 0x40c4a1
movzx eax, byte [esp + 0x533]
sub eax, 0x41
jne 0x40c4a1
movzx eax, byte [esp + 0x534]
sub eax, 0x54
je 0x40c4af
test eax, eax
mov ecx, 1
jg 0x40c4b1
or ecx, 0xffffffff
jmp 0x40c4b1
xor ecx, ecx
test ecx, ecx
je 0x40cc9e
mov eax, 5
mov ecx, str.FAT32
lea edx, [esp + 0x54e]
lea ebx, [ebx]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40c4e8
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40c4d0
test eax, eax
je 0x40c545
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40c537
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c545
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40c537
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c545
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40c537
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c545
movzx esi, byte [edx]
movzx edx, byte [ecx]
sub esi, edx
je 0x40c545
test esi, esi
mov eax, 1
jg 0x40c547
or eax, 0xffffffff
jmp 0x40c547
xor eax, eax
test eax, eax
je 0x40cc9e
mov eax, 4
mov ecx, str.NTFS
lea edx, [esp + 0x4ff]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40c578
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40c560
test eax, eax
je 0x40c5d5
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40c5c7
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c5d5
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40c5c7
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c5d5
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40c5c7
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40c5d5
movzx eax, byte [ecx]
movzx esi, byte [edx]
sub esi, eax
je 0x40c5d5
test esi, esi
mov eax, 1
jg 0x40c5d7
or eax, 0xffffffff
jmp 0x40c5d7
xor eax, eax
test eax, eax
je 0x40cc9e
mov al, byte [esp + 0x6ba]
test al, al
je 0x40c5f2
cmp al, 0x80
jne 0x40cb16
mov al, byte [esp + 0x6ca]
test al, al
je 0x40c605
cmp al, 0x80
jne 0x40cb16
mov al, byte [esp + 0x6da]
test al, al
je 0x40c618
cmp al, 0x80
jne 0x40cb16
mov al, byte [esp + 0x6ea]
test al, al
je 0x40c62b
cmp al, 0x80
jne 0x40cb16
cmp byte [esp + 0x6fa], 0x55
jne 0x40cb16
cmp byte [esp + 0x6fb], 0xaa
jne 0x40cb16
push 0
lea ecx, [esp + 0x70]
call fcn.00404d50
lea ecx, [esp + 0x18]
mov byte [esp + 0xa4bc], 6
call fcn.00402fa0
mov dword [esp + 0x38], 0x4504bc
mov dword [esp + 0x3c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
lea ecx, [esp + 0x58]
mov byte [esp + 0xa4bc], 8
call fcn.0041e2db
lea ecx, [esp + 0x14]
call fcn.004015c0
lea ecx, [esp + 0x28]
call fcn.004015c0
xor eax, eax
cmp byte [esp + 0x4be], al
mov byte [esp + 0xa4bc], 0xb
je 0x40c6c6
mov eax, 1
cmp byte [esp + 0x4ce], 0
je 0x40c6d3
add eax, 1
cmp byte [esp + 0x4de], 0
je 0x40c6e0
add eax, 1
cmp byte [esp + 0x4ee], 0
je 0x40c6ed
add eax, 1
test eax, eax
jne 0x40c7a5
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x2c]
push ecx
push str.No_partitions_found_in__s.
push eax
add esi, 0x17c
push esi
call fcn.00402e90
add esp, 0x10
lea edx, [esp + 0x24]
push edx
mov ecx, esi
call fcn.00401a10
mov eax, dword [eax]
push 0
push 0
push eax
mov byte [esp + 0xa4c8], 0xc
call fcn.0041d02a
lea ecx, [esp + 0x24]
call fcn.00401410
lea ecx, [esp + 0x28]
call fcn.00401410
lea ecx, [esp + 0x14]
call fcn.00401410
lea ecx, [esp + 0x58]
mov byte [esp + 0xa4bc], 8
call fcn.0041e4ad
lea ecx, [esp + 0x38]
mov byte [esp + 0xa4bc], 7
call fcn.0040a5f0
lea ecx, [esp + 0x18]
mov byte [esp + 0xa4bc], 6
call fcn.00402fb0
lea ecx, [esp + 0x6c]
mov byte [esp + 0xa4bc], 0
call fcn.00404dd0
lea ecx, [esp + 0x20]
call fcn.00401410
mov eax, 0xfffffffa
jmp 0x40d3df
lea eax, [esp + 0x38]
push eax
sub esp, 0x200
mov edi, esp
mov ecx, 0x80
lea esi, [esp + 0x500]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x228]
push ecx
mov ecx, dword [esp + 0x234]
call fcn.0040a6e0
mov eax, dword [esp + 0x40]
xor esi, esi
cmp eax, 1
jle 0x40ca41
test eax, eax
jle 0x40c9b2
mov bl, 0xd
lea ecx, [ecx]
push esi
lea ecx, [esp + 0x3c]
call fcn.00409d60
movzx eax, byte [eax + 4]
cmp eax, 0xfc
ja case.0x40c810.3
movzx edx, byte [eax + 0x40d488]
jmp dword [edx*4 + 0x40d40c]
push str.Unallocated
jmp 0x40c912
push str.FAT12
jmp 0x40c912
push str.Xenix
jmp 0x40c912
push str.FAT16__32MB
jmp 0x40c912
push str.Extended
jmp 0x40c912
push 0x450b6c
jmp 0x40c912
push str.NTFS
jmp 0x40c912
push str.FAT32
jmp 0x40c912
push str.FAT32__LBA_
jmp 0x40c912
push str.FAT16__LBA_
jmp 0x40c912
push str.Extended__LBA_
jmp 0x40c912
push str.Hidden_NTFS
jmp 0x40c912
push str.Hidden_FAT32
jmp 0x40c912
push str.Hidden_FAT32__LBA_
jmp 0x40c912
push str.Hidden_VFAT__LBA_
jmp 0x40c912
push str.Partition_Magic
jmp 0x40c912
push str.PowerPC_Boot
jmp 0x40c912
push str.Unix
jmp 0x40c912
push str.Linux_Minix
jmp 0x40c912
push str.Linux_Swap
jmp 0x40c912
push str.Linux_Ext2_Ext3
jmp 0x40c912
push str.Linux_Extended
jmp 0x40c912
push str.Hidden_Linux_Ext2_Ext3
jmp 0x40c912
push str.FreeBSD
jmp 0x40c912
push str.OpenBSD
jmp 0x40c912
push str.NetBSD
jmp 0x40c912
push str.Solaris_Boot
jmp 0x40c912
push str.BeOS_BFS
jmp 0x40c912
push str.VMware_File_System
jmp 0x40c912
push str.VMware_Swap
jmp 0x40c912
push str.Unknown
lea ecx, [esp + 0x18]
call fcn.00402790
push esi
lea ecx, [esp + 0x3c]
call fcn.00409d60
cmp byte [eax + 4], 0
je 0x40c984
push esi
lea ecx, [esp + 0x3c]
call fcn.00409d60
mov eax, dword [eax + 0xc]
mov ecx, 0x200
mul ecx
push edx
push eax
lea edx, [esp + 0x2c]
push edx
lea ecx, [esp + 0x24]
call fcn.00403130
mov eax, dword [eax]
mov ecx, dword [esp + 0x14]
push eax
push ecx
push esi
lea edx, [esp + 0x34]
push str.Partition__d___s___s_
push edx
mov byte [esp + 0xa4d0], bl
call fcn.00402cf0
add esp, 0x14
lea ecx, [esp + 0x24]
mov byte [esp + 0xa4bc], 0xb
call fcn.00401410
jmp 0x40c992
push str.Unallocated
lea ecx, [esp + 0x2c]
call fcn.00402790
mov ecx, dword [esp + 0x60]
lea eax, [esp + 0x28]
push eax
push ecx
lea ecx, [esp + 0x60]
call fcn.0041e613
add esi, 1
cmp esi, dword [esp + 0x40]
jl 0x40c7f0
lea edx, [esp + 0x58]
push edx
lea ecx, [esp + 0x1ec]
call fcn.0041e5e7
lea ecx, [esp + 0x6c]
call fcn.0041667f
cmp eax, 2
jne 0x40ca3a
lea ecx, [esp + 0x28]
call fcn.00401410
lea ecx, [esp + 0x14]
call fcn.00401410
lea ecx, [esp + 0x58]
mov byte [esp + 0xa4bc], 8
call fcn.0041e4ad
lea ecx, [esp + 0x38]
mov byte [esp + 0xa4bc], 7
call fcn.0040a5f0
lea ecx, [esp + 0x18]
mov byte [esp + 0xa4bc], 6
call fcn.00402fb0
lea ecx, [esp + 0x6c]
mov byte [esp + 0xa4bc], 0
call fcn.00404dd0
lea ecx, [esp + 0x20]
call fcn.00401410
mov eax, 0xfffffff9
jmp 0x40d3df
mov esi, dword [esp + 0x1fc]
push esi
lea ecx, [esp + 0x3c]
call fcn.00409d60
mov eax, dword [eax + 8]
mov edi, dword [esp + 0x1c]
mov ecx, 0x200
mul ecx
push esi
lea ecx, [esp + 0x3c]
mov dword [edi + 0x108], eax
mov dword [edi + 0x10c], edx
call fcn.00409d60
mov eax, dword [eax + 0xc]
mov edx, 0x200
mul edx
push esi
lea ecx, [esp + 0x3c]
mov dword [edi + 0x110], eax
mov dword [edi + 0x114], edx
call fcn.00409d60
cmp word [esp + 0x2fa], 0xbb66
mov al, byte [eax + 4]
mov byte [edi + 0x126], al
mov byte [edi + 0x118], 0
mov word [edi + 0x11a], 1
jne 0x40cabb
mov byte [edi + 0x118], 1
lea ecx, [esp + 0x28]
call fcn.00401410
lea ecx, [esp + 0x14]
call fcn.00401410
lea ecx, [esp + 0x58]
mov byte [esp + 0xa4bc], 8
call fcn.0041e4ad
lea ecx, [esp + 0x38]
mov byte [esp + 0xa4bc], 7
call fcn.0040a5f0
lea ecx, [esp + 0x18]
mov byte [esp + 0xa4bc], 6
call fcn.00402fb0
lea ecx, [esp + 0x6c]
mov byte [esp + 0xa4bc], 0
call fcn.00404dd0
jmp 0x40d3d4
mov ecx, edi
add ecx, 0xfffa87ff
mov eax, ebp
adc eax, 0xffffffff
test eax, eax
ja 0x40cb43
jb 0x40cb31
cmp ecx, 0x4ffe
ja 0x40cb43
mov edi, dword [esp + 0x1c]
mov word [edi + 0x11a], 3
jmp 0x40cc28
mov ecx, edi
add ecx, 0xfff4e7ff
mov eax, ebp
adc eax, 0xffffffff
test eax, eax
ja 0x40cb70
jb 0x40cb5e
cmp ecx, 0x4ffe
ja 0x40cb70
mov edi, dword [esp + 0x1c]
mov word [edi + 0x11a], 3
jmp 0x40cc28
mov ecx, edi
add ecx, 0xfff3a7ff
mov eax, ebp
adc eax, 0xffffffff
test eax, eax
ja 0x40cb9d
jb 0x40cb8b
cmp ecx, 0x4ffe
ja 0x40cb9d
mov edi, dword [esp + 0x1c]
mov word [edi + 0x11a], 3
jmp 0x40cc28
mov ecx, edi
add ecx, 0xffed67ff
mov eax, ebp
adc eax, 0xffffffff
test eax, eax
ja 0x40cbc7
jb 0x40cbb8
cmp ecx, 0x4ffe
ja 0x40cbc7
mov edi, dword [esp + 0x1c]
mov word [edi + 0x11a], 3
jmp 0x40cc28
mov ecx, edi
add ecx, 0xffe9a7ff
mov eax, ebp
adc eax, 0xffffffff
test eax, eax
ja 0x40cbf1
jb 0x40cbe2
cmp ecx, 0x4ffe
ja 0x40cbf1
mov edi, dword [esp + 0x1c]
mov word [edi + 0x11a], 3
jmp 0x40cc28
add edi, 0xffe5e7ff
adc ebp, 0xffffffff
mov eax, ebp
test eax, eax
mov ecx, edi
ja 0x40cc1b
jb 0x40cc0c
cmp ecx, 0x4ffe
ja 0x40cc1b
mov edi, dword [esp + 0x1c]
mov word [edi + 0x11a], 3
jmp 0x40cc28
mov edi, dword [esp + 0x1c]
mov word [edi + 0x11a], 1
mov esi, dword [esp + 0x2c]
add esi, 0x17c
cmp word [edi + 0x11a], 3
jne 0x40cc48
mov ecx, dword [esp + 0x24]
push ecx
push 0x4509c8
jmp 0x40cc52
mov edx, dword [esp + 0x24]
push edx
push 0x450978
push 0
push esi
call fcn.00402e90
mov eax, dword [esp + 0x28]
add esp, 0x10
push str.auto_detect
push eax
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40ccba
lea ecx, [esp + 0x28]
push ecx
mov ecx, esi
call fcn.00401a10
mov edx, dword [eax]
push 0
push 0x40
push edx
mov byte [esp + 0xa4c8], 0xe
call fcn.0041d02a
lea ecx, [esp + 0x28]
call fcn.00401410
jmp 0x40ccba
mov edi, dword [esp + 0x1c]
mov word [edi + 0x11a], 1
jmp 0x40ccba
mov edi, dword [esp + 0x1c]
mov word [edi + 0x11a], 3
mov esi, dword [esp + 0x18]
push str.floppy_drive
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40ccdb
mov word [edi + 0x11a], 3
jmp 0x40cd13
push str.cd_dvd_drive
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40ccf8
mov word [edi + 0x11a], 4
jmp 0x40cd13
push str.fixed_drive
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40cd13
mov word [edi + 0x11a], 1
mov eax, 5
mov ecx, str.CD001
lea edx, [esp + 0x84fd]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40cd3c
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40cd24
test eax, eax
je 0x40cd99
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40cd8b
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40cd99
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40cd8b
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40cd99
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40cd8b
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40cd99
movzx esi, byte [edx]
movzx eax, byte [ecx]
sub esi, eax
je 0x40cd99
test esi, esi
mov eax, 1
jg 0x40cd9b
or eax, 0xffffffff
jmp 0x40cd9b
xor eax, eax
test eax, eax
je 0x40d0f2
mov eax, 5
mov ecx, str.CD001
lea edx, [esp + 0x980d]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40cdcc
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40cdb4
test eax, eax
je 0x40ce29
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40ce1b
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40ce29
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40ce1b
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40ce29
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40ce1b
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40ce29
movzx ecx, byte [ecx]
movzx esi, byte [edx]
sub esi, ecx
je 0x40ce29
test esi, esi
mov eax, 1
jg 0x40ce2b
or eax, 0xffffffff
jmp 0x40ce2b
xor eax, eax
test eax, eax
je 0x40d0f2
mov eax, 4
mov ecx, str.NTFS
lea edx, [esp + 0x4ff]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40ce5c
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40ce44
test eax, eax
je 0x40ceb9
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40ceab
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40ceb9
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40ceab
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40ceb9
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40ceab
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40ceb9
movzx esi, byte [edx]
movzx edx, byte [ecx]
sub esi, edx
je 0x40ceb9
test esi, esi
mov eax, 1
jg 0x40cebb
or eax, 0xffffffff
jmp 0x40cebb
xor eax, eax
test eax, eax
jne 0x40cecb
mov byte [edi + 0x126], 7
jmp 0x40d0f9
mov eax, 5
mov ecx, str.FAT12
lea edx, [esp + 0x532]
lea esp, [esp]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40cef8
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40cee0
test eax, eax
je 0x40cf55
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40cf47
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40cf55
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40cf47
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40cf55
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40cf47
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40cf55
movzx eax, byte [ecx]
movzx esi, byte [edx]
sub esi, eax
je 0x40cf55
test esi, esi
mov eax, 1
jg 0x40cf57
or eax, 0xffffffff
jmp 0x40cf57
xor eax, eax
test eax, eax
jne 0x40cf67
mov byte [edi + 0x126], 1
jmp 0x40d0f9
mov eax, 5
mov ecx, str.FAT16
lea edx, [esp + 0x532]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40cf90
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40cf78
test eax, eax
je 0x40cfed
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40cfdf
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40cfed
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40cfdf
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40cfed
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x40cfdf
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40cfed
movzx esi, byte [edx]
movzx ecx, byte [ecx]
sub esi, ecx
je 0x40cfed
test esi, esi
mov eax, 1
jg 0x40cfef
or eax, 0xffffffff
jmp 0x40cfef
xor eax, eax
test eax, eax
jne 0x40cfff
mov byte [edi + 0x126], 4
jmp 0x40d0f9
mov eax, 5
mov ecx, str.FAT32
lea edx, [esp + 0x54e]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40d028
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40d010
test eax, eax
je 0x40d085
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40d077
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40d085
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40d077
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40d085
movzx ebx, byte [ecx]
movzx esi, byte [edx]
sub esi, ebx
jne 0x40d077
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x40d085
movzx eax, byte [ecx]
movzx esi, byte [edx]
sub esi, eax
je 0x40d085
test esi, esi
mov eax, 1
jg 0x40d087
or eax, 0xffffffff
jmp 0x40d087
xor eax, eax
test eax, eax
jne 0x40d094
mov byte [edi + 0x126], 0xb
jmp 0x40d0f9
movzx eax, byte [esp + 0x532]
sub eax, 0x46
jne 0x40d0bb
movzx eax, byte [esp + 0x533]
sub eax, 0x41
jne 0x40d0bb
movzx eax, byte [esp + 0x534]
sub eax, 0x54
je 0x40d0c9
test eax, eax
mov ecx, 1
jg 0x40d0cb
or ecx, 0xffffffff
jmp 0x40d0cb
xor ecx, ecx
test ecx, ecx
jne 0x40d0f2
cmp dword [esp + 0x34], ecx
jg 0x40cff3
jl 0x40d0e9
cmp dword [esp + 0x30], 0x1000000
jae 0x40cff3
mov byte [edi + 0x126], 1
jmp 0x40d0f9
mov byte [edi + 0x126], 0
mov esi, dword [esp + 0x14]
push str.disabled
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d120
mov dword [edi + 0x11c], eax
mov dword [edi + 0x120], eax
jmp 0x40d3d4
push str.floppy__360kb_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
je 0x40d144
push str.floppy__720kb_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d15d
mov dword [edi + 0x11c], 0x96
mov dword [edi + 0x120], 0x1200
jmp 0x40d3d4
push str.floppy__800kb_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d188
mov dword [edi + 0x11c], 0x96
mov dword [edi + 0x120], 0x1400
jmp 0x40d3d4
push str.floppy__1200kb_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d1b3
mov dword [edi + 0x11c], 0xb4
mov dword [edi + 0x120], 0x1e00
jmp 0x40d3d4
push str.floppy__1440kb_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d1de
mov dword [edi + 0x11c], 0x96
mov dword [edi + 0x120], 0x2400
jmp 0x40d3d4
push str.floppy__1680kb_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d209
mov dword [edi + 0x11c], 0x96
mov dword [edi + 0x120], 0x2a00
jmp 0x40d3d4
push str.cd_rom__1x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d234
mov dword [edi + 0x11c], 0x1e0
mov dword [edi + 0x120], 0x4b00
jmp 0x40d3d4
push str.cd_rom__2x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d25f
mov dword [edi + 0x11c], 0x3c0
mov dword [edi + 0x120], 0x4b00
jmp 0x40d3d4
push str.cd_rom__4x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d28a
mov dword [edi + 0x11c], 0x780
mov dword [edi + 0x120], 0x4b00
jmp 0x40d3d4
push str.cd_rom__8x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d2b5
mov dword [edi + 0x11c], 0xf00
mov dword [edi + 0x120], 0x4b00
jmp 0x40d3d4
push str.cd_rom__16x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d2e0
mov dword [edi + 0x11c], 0x1e00
mov dword [edi + 0x120], 0x4b00
jmp 0x40d3d4
push str.cd_rom__32x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d30b
mov dword [edi + 0x11c], 0x3c00
mov dword [edi + 0x120], 0x4b00
jmp 0x40d3d4
push str.cd_rom__52x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d336
mov dword [edi + 0x11c], 0x6180
mov dword [edi + 0x120], 0x4b00
jmp 0x40d3d4
push str.dvd_rom__1x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d354
mov dword [edi + 0x11c], 0x43d
jmp 0x40d3ca
push str.dvd_rom__2x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d372
mov dword [edi + 0x11c], 0x87a
jmp 0x40d3ca
push str.dvd_rom__4x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d390
mov dword [edi + 0x11c], 0x10f4
jmp 0x40d3ca
push str.dvd_rom__8x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d3ae
mov dword [edi + 0x11c], 0x21e8
jmp 0x40d3ca
push str.dvd_rom__16x_
push esi
call fcn.0043531c
add esp, 8
test eax, eax
jne 0x40d3d4
mov dword [edi + 0x11c], 0x43d0
mov dword [edi + 0x120], 0x7ec00
lea ecx, [esp + 0x20]
call fcn.00401410
xor eax, eax
mov ecx, dword [esp + 0xa4b4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xa49c]
xor ecx, esp
call fcn.004326b1
add esp, 0xa4ac
ret 0x14