Function at 0x403220
Capabilities:
Get storage device properties
Print debug messages

Disassembly:
sub esp, 0x24
push ebp
push esi
xor esi, esi
push edi
cmp eax, 0x7c088
ja 0x4036e9
je 0x403584
sub eax, 0x4d008
je 0x403416
sub eax, 0x24
jne 0x4037d6
mov edi, dword [esp + 0x3c]
test edi, edi
je 0x4037d6
cmp dword [edi + 0x14], 4
jb 0x4037d6
cmp dword [edi + 8], 0x100
jb 0x4037d6
mov eax, dword [esp + 0x34]
push eax
call fcn.00404730
add esp, 4
push eax
push ebx
call fcn.00402f60
test eax, eax
je 0x4037d6
mov ebp, dword [edi + 0x14]
xor eax, eax
add ebp, edi
mov dword [0x656d98], eax
mov dword [0x656d9c], eax
mov dword [0x656da0], eax
mov dword [0x656da4], eax
mov dword [0x656da8], eax
mov byte [0x656dac], al
mov ecx, dword [ebp + 0x14]
mov dword [0x656d98], ecx
mov edx, dword [ebp + 0x18]
mov dword [0x656d9c], edx
mov eax, dword [ebp + 0x1c]
mov dword [0x656da0], eax
mov ecx, dword [ebp + 0x20]
mov dword [0x656da4], ecx
mov edx, dword [ebp + 0x24]
lea edi, [esi + 0x14]
mov esi, 0x656d98
mov ecx, esi
mov dword [0x656da8], edx
call fcn.00402940
mov eax, dword [ebx]
mov ecx, dword [0x656d98]
imul eax, eax, 0x15
mov dword [eax + ebx + 0x88], ecx
mov edx, dword [0x656d9c]
mov dword [eax + ebx + 0x8c], edx
mov ecx, dword [0x656da0]
mov dword [eax + ebx + 0x90], ecx
mov edx, dword [0x656da4]
mov dword [eax + ebx + 0x94], edx
mov ecx, dword [0x656da8]
lea eax, [eax + ebx + 0x88]
mov dword [eax + 0x10], ecx
mov edx, dword [ebx]
mov ecx, dword [0x656d98]
imul edx, edx, 0x15
mov dword [edx + ebx + 0x88], ecx
lea eax, [edx + ebx + 0x88]
mov edx, dword [0x656d9c]
mov dword [eax + 4], edx
mov ecx, dword [0x656da0]
mov dword [eax + 8], ecx
mov edx, dword [0x656da4]
mov dword [eax + 0xc], edx
mov ecx, dword [0x656da8]
mov dword [eax + 0x10], ecx
xor eax, eax
mov dword [0x656db0], eax
mov dword [0x656db4], eax
mov byte [0x656db8], al
mov edx, dword [ebp + 0x2e]
mov dword [0x656db0], edx
mov eax, dword [ebp + 0x32]
mov esi, 0x656db0
mov edi, 8
mov ecx, esi
mov dword [0x656db4], eax
call fcn.00402940
mov eax, dword [ebx]
mov edx, dword [0x656db0]
lea ecx, [ebx + eax*8]
push 0x29
mov dword [eax + ecx + 0x468], edx
mov edx, dword [0x656db4]
push 0
push 0x656dbc
mov dword [eax + ecx + 0x46c], edx
call fcn.00422f70
lea esi, [ebp + 0x36]
mov ecx, 0xa
mov edi, 0x656dbc
rep movsd dword es:[edi], dword [esi]
mov esi, 0x656dbc
add esp, 0xc
mov edi, 0x28
mov ecx, esi
call fcn.00402940
mov eax, dword [ebx]
imul eax, eax, 0x29
lea edi, [eax + ebx + 0x1d8]
mov ecx, 0xa
mov esi, 0x656dbc
rep movsd dword es:[edi], dword [esi]
lea esi, [esp + 0x10]
jmp 0x403799
mov ebp, dword [esp + 0x3c]
test ebp, ebp
je 0x4037d6
add ebp, 0x2c
je 0x4037d6
mov ecx, dword [esp + 0x34]
push ecx
call fcn.00404730
add esp, 4
push eax
push ebx
call fcn.00402f60
test eax, eax
je 0x4037d6
xor eax, eax
mov dword [0x656de8], eax
mov dword [0x656dec], eax
mov dword [0x656df0], eax
mov dword [0x656df4], eax
mov dword [0x656df8], eax
mov byte [0x656dfc], al
mov edx, dword [ebp + 0x14]
mov dword [0x656de8], edx
mov eax, dword [ebp + 0x18]
mov dword [0x656dec], eax
mov ecx, dword [ebp + 0x1c]
mov dword [0x656df0], ecx
mov edx, dword [ebp + 0x20]
mov dword [0x656df4], edx
mov eax, dword [ebp + 0x24]
mov esi, 0x656de8
mov edi, 0x14
mov ecx, esi
mov dword [0x656df8], eax
call fcn.00402940
mov ecx, dword [ebx]
mov edx, dword [0x656de8]
imul ecx, ecx, 0x15
mov dword [ecx + ebx + 0x88], edx
lea eax, [ecx + ebx + 0x88]
mov ecx, dword [0x656dec]
mov dword [eax + 4], ecx
mov edx, dword [0x656df0]
mov dword [eax + 8], edx
mov ecx, dword [0x656df4]
mov dword [eax + 0xc], ecx
mov edx, dword [0x656df8]
mov dword [eax + 0x10], edx
xor eax, eax
mov dword [0x656e00], eax
mov dword [0x656e04], eax
mov byte [0x656e08], al
mov eax, dword [ebp + 0x2e]
mov dword [0x656e00], eax
mov ecx, dword [ebp + 0x32]
mov esi, 0x656e00
mov dword [0x656e04], ecx
mov edi, 8
mov ecx, esi
call fcn.00402940
mov eax, dword [ebx]
mov edx, dword [0x656e00]
lea ecx, [ebx + eax*8]
push 0x29
mov dword [eax + ecx + 0x468], edx
mov edx, dword [0x656e04]
push 0
push 0x656e0c
mov dword [eax + ecx + 0x46c], edx
call fcn.00422f70
lea esi, [ebp + 0x36]
mov ecx, 0xa
mov edi, 0x656e0c
rep movsd dword es:[edi], dword [esi]
mov esi, 0x656e0c
add esp, 0xc
mov edi, 0x28
mov ecx, esi
call fcn.00402940
mov eax, dword [ebx]
imul eax, eax, 0x29
lea edi, [eax + ebx + 0x1d8]
mov ecx, 0xa
mov esi, 0x656e0c
rep movsd dword es:[edi], dword [esi]
lea esi, [esp + 0x18]
jmp 0x403799
mov ebp, dword [esp + 0x3c]
test ebp, ebp
je 0x4037d6
mov ecx, dword [esp + 0x34]
push ecx
call fcn.00404730
add esp, 4
push eax
push ebx
call fcn.00402f60
test eax, eax
je 0x4037d6
xor eax, eax
mov dword [0x656d48], eax
mov dword [0x656d4c], eax
mov dword [0x656d50], eax
mov dword [0x656d54], eax
mov dword [0x656d58], eax
mov byte [0x656d5c], al
mov edx, dword [ebp + 0x24]
mov dword [0x656d48], edx
mov eax, dword [ebp + 0x28]
mov dword [0x656d4c], eax
mov ecx, dword [ebp + 0x2c]
mov dword [0x656d50], ecx
mov edx, dword [ebp + 0x30]
mov dword [0x656d54], edx
mov eax, dword [ebp + 0x34]
mov esi, 0x656d48
mov edi, 0x14
mov ecx, esi
mov dword [0x656d58], eax
call fcn.00402940
mov ecx, dword [ebx]
mov edx, dword [0x656d48]
imul ecx, ecx, 0x15
mov dword [ecx + ebx + 0x88], edx
lea eax, [ecx + ebx + 0x88]
mov ecx, dword [0x656d4c]
mov dword [eax + 4], ecx
mov edx, dword [0x656d50]
mov dword [eax + 8], edx
mov ecx, dword [0x656d54]
mov dword [eax + 0xc], ecx
mov edx, dword [0x656d58]
mov dword [eax + 0x10], edx
xor eax, eax
mov dword [0x656d60], eax
mov dword [0x656d64], eax
mov byte [0x656d68], al
mov eax, dword [ebp + 0x3e]
mov dword [0x656d60], eax
mov ecx, dword [ebp + 0x42]
mov esi, 0x656d60
mov dword [0x656d64], ecx
mov edi, 8
mov ecx, esi
call fcn.00402940
mov eax, dword [ebx]
mov edx, dword [0x656d60]
lea ecx, [ebx + eax*8]
push 0x29
mov dword [eax + ecx + 0x468], edx
mov edx, dword [0x656d64]
push 0
push 0x656d6c
mov dword [eax + ecx + 0x46c], edx
call fcn.00422f70
lea esi, [ebp + 0x46]
mov ecx, 0xa
mov edi, 0x656d6c
rep movsd dword es:[edi], dword [esi]
mov esi, 0x656d6c
add esp, 0xc
mov edi, 0x28
mov ecx, esi
call fcn.00402940
mov eax, dword [ebx]
imul eax, eax, 0x29
lea edi, [eax + ebx + 0x1d8]
mov ecx, 0xa
mov esi, 0x656d6c
rep movsd dword es:[edi], dword [esi]
lea esi, [esp + 0x20]
jmp 0x403799
cmp eax, 0x2d1400
jne 0x4037d6
mov edi, dword [esp + 0x3c]
test edi, edi
je 0x4037d6
mov ecx, dword [esp + 0x38]
mov eax, dword [ecx]
test eax, eax
jne 0x403734
push ebx
mov eax, edi
call fcn.00403020
test eax, eax
je 0x403795
mov edx, dword [esp + 0x34]
push edx
call fcn.00404730
add esp, 4
push eax
push ebx
call fcn.00402f60
test eax, eax
je 0x4037d6
jmp 0x403795
cmp eax, 2
je 0x4037d6
cmp eax, 3
jne 0x403795
cmp dword [edi + 4], 0x14
jbe 0x4037d6
mov ebp, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
cmp dword [edi + 8], esi
jbe 0x40375e
push 0x62484c
call ebp
mov eax, dword [edi + 0xc]
test eax, eax
jbe 0x403789
add eax, edi
push ebx
call fcn.00403020
test eax, eax
je 0x403789
mov eax, dword [esp + 0x34]
push eax
call fcn.00404730
add esp, 4
push eax
push ebx
call fcn.00402f60
test eax, eax
je 0x4037d6
cmp dword [edi + 0x10], esi
jbe 0x403795
push 0x62484c
call ebp
lea esi, [esp + 0x28]
mov edi, dword [esp + 0x34]
call fcn.00403820
mov edx, dword [eax]
mov ecx, dword [ebx]
mov dword [ebx + ecx*8 + 8], edx
mov eax, dword [eax + 4]
mov dword [ebx + ecx*8 + 0xc], eax
mov eax, dword [ebx]
mov ecx, eax
shl ecx, 4
lea edx, [ecx + ebx + 0x7138]
lea eax, [ebx + eax*4 + 0x70f8]
push edx
push eax
mov eax, edi
call fcn.004039e0
inc dword [ebx]
mov esi, 1
pop edi
mov eax, esi
pop esi
pop ebp
add esp, 0x24
ret 0xc