Function at 0x40dd60
Capabilities:
Get disk information

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x43299e
push eax
mov eax, 0x1110
mov dword fs:[0], esp
call fcn.004204b0
push ebx
push ebp
push esi
mov ebp, ecx
push edi
mov edi, 0x43a328
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea ebx, [ebp + 0x1855]
mov eax, ecx
mov esi, edi
mov edi, ebx
push 0x100
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x24]
push ecx
mov ecx, dword [ebp]
push str.NOCD
push str.CDDRV
push str.FILE
call fcn.004126a0
lea edx, [esp + 0x20]
push edx
call fcn.004204e0
lea edi, [esp + 0x24]
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 1
jne 0x40ddfe
mov al, byte [esp + 0x20]
cmp al, 0x41
jl 0x40ddfe
cmp al, 0x5a
jg 0x40ddfe
mov byte [ebx], al
jmp 0x40de1b
mov edi, dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
xor esi, esi
mov al, byte [ebx]
push ebx
inc al
mov byte [ebx], al
call edi
cmp eax, 5
je 0x40de1b
inc esi
cmp si, 0x19
jb 0x40de06
mov ecx, dword [ebp]
push 1
push str.Insert
push str.FILE
call fcn.00412680
mov ecx, dword [ebp]
push 1
push str.CDROM
push str.FILE
mov byte [ebp + 0x54], al
call fcn.00412680
cmp eax, 1
mov dword [ebp + 8], eax
jne 0x40df1e
mov ecx, dword [ebp]
lea eax, [esp + 0x920]
push 0x80
push eax
push str.SilAI
push str.TITLE
push str.Config
call fcn.004126a0
xor ecx, ecx
lea edx, [esp + 0x920]
mov cl, byte [ebp + 0x54]
lea eax, [esp + 0x520]
inc ecx
push ecx
push edx
push str._s_d
push eax
call fcn.00420440
add esp, 0x10
lea ecx, [esp + 0xd20]
lea edx, [esp + 0x18]
lea eax, [esp + 0x10]
push 0x400
push ecx
push edx
lea ecx, [esp + 0x20]
push eax
push ecx
lea edx, [esp + 0x134]
push 0x400
lea eax, [ebp + 0x1855]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
lea esi, [esp + 0x120]
lea eax, [esp + 0x520]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x40df06
test cl, cl
je 0x40df02
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x40df06
add eax, 2
add esi, 2
test cl, cl
jne 0x40dede
xor eax, eax
jmp 0x40df0b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40df1e
mov ecx, ebp
call fcn.004105f0
test eax, eax
je 0x40e16b
mov ecx, dword [ebp]
push 1
push str.bARCMES
push str.FILE
call fcn.00412680
mov ecx, dword [ebp]
push 1
push str.bARCBG
push str.FILE
mov dword [ebp + 0xc], eax
call fcn.00412680
mov ecx, dword [ebp]
push 1
push str.bARCBGM
push str.FILE
mov dword [ebp + 0x10], eax
call fcn.00412680
mov ecx, dword [ebp]
push 1
push str.bARCVOICE
push str.FILE
mov dword [ebp + 0x14], eax
call fcn.00412680
mov ecx, dword [ebp]
push 1
push str.bARCDATA
push str.FILE
mov dword [ebp + 0x18], eax
call fcn.00412680
mov ecx, dword [ebp]
push 1
push str.bMESTYPE
push 0x43a2a0
mov dword [ebp + 0x1c], eax
call fcn.00412680
mov ecx, dword [ebp]
push 0
push str.bDATATYPE
push str.DATA
mov dword [ebp + 0x20], eax
call fcn.00412680
mov ecx, dword [ebp]
lea esi, [ebp + 0x55]
push 0x100
push esi
push str.MES.ARC
push str.ARCMESNAME
push str.FILE
mov dword [ebp + 0x24], eax
call fcn.004126a0
mov ecx, dword [ebp]
lea ebx, [ebp + 0x455]
push 0x100
push ebx
push str.BG.ARC
push str.ARCBGNAME
push str.FILE
call fcn.004126a0
mov ecx, dword [ebp]
lea eax, [ebp + 0x855]
push 0x100
push eax
push str.BGM.ARC
push str.ARCBGMNAME
push str.FILE
call fcn.004126a0
mov ecx, dword [ebp]
lea edi, [ebp + 0x1455]
push 0x100
push edi
push str.DATA.ARC
push str.ARCDATANAME
push str.FILE
call fcn.004126a0
mov ecx, dword [ebp]
lea eax, [ebp + 0xc55]
push 0x400
push eax
push str.EVENT.ARC
push str.ARCVOICENAME1
push str.FILE
call fcn.004126a0
mov ecx, dword [ebp]
lea eax, [ebp + 0x1055]
push 0x400
push eax
push str.EVERY.ARC
push str.ARCVOICENAME2
push str.FILE
call fcn.004126a0
push 0x1014
call fcn.0042a859
add esp, 4
mov dword [esp + 0x1c], eax
test eax, eax
mov dword [esp + 0x1128], 0
je 0x40e0b7
mov ecx, eax
call fcn.00413590
jmp 0x40e0b9
xor eax, eax
test eax, eax
mov dword [esp + 0x1128], 0xffffffff
mov dword [ebp + 4], eax
je 0x40e16b
push 6
call dword [sym.imp.KERNEL32.dll_SetHandleCount]
mov dword [ebp + 0x50], eax
mov eax, dword [ebp + 0xc]
cmp eax, 1
jne 0x40e0f0
push esi
push 0
mov ecx, ebp
call fcn.0040fa70
test eax, eax
je 0x40e16b
cmp dword [ebp + 0x10], 1
jne 0x40e104
push ebx
push 1
mov ecx, ebp
call fcn.0040fa70
test eax, eax
je 0x40e16b
cmp dword [ebp + 0x1c], 1
jne 0x40e118
push edi
push 2
mov ecx, ebp
call fcn.0040fa70
test eax, eax
je 0x40e16b
cmp dword [ebp + 0x14], 1
jne 0x40e132
lea eax, [ebp + 0x855]
mov ecx, ebp
push eax
push 3
call fcn.0040fa70
test eax, eax
je 0x40e16b
cmp dword [ebp + 0x18], 1
jne 0x40e166
lea eax, [ebp + 0xc55]
mov ecx, ebp
push eax
push 4
call fcn.0040fa70
test eax, eax
je 0x40e16b
lea eax, [ebp + 0x1055]
mov ecx, ebp
push eax
push 5
call fcn.0040fa70
test eax, eax
jne 0x40e166
mov dword [ebp + 0x1c70], eax
mov eax, 1
mov ecx, dword [esp + 0x1120]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x111c
ret