Function at 0x4d47c0
Capabilities:
Get disk size

Disassembly:
sub esp, 0x820
push ebx
push ebp
push esi
mov esi, dword [esp + 0x834]
push edi
mov dword [esp + 0x5c], 1
lea eax, [esp + 0x3e0]
mov ecx, 0xf4c0
mov dword [esp + 0x3c], eax
xor eax, eax
mov edi, esi
xor ebx, ebx
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x834]
xor ebp, ebp
push ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
call fcn.004d2de0
lea edx, [esp + 0x64]
mov byte [esi], al
mov eax, dword [esp + 0x838]
push 0x2a
push edx
push ebp
push eax
mov dword [esi + 0x10], 1
call fcn.004cbe90
add esp, 0x14
test eax, eax
jne 0x4d485d
mov byte [esi + 0x3d2e0], 2
mov byte [esi + 0x3d2e1], 3
jmp 0x4d487f
mov al, byte [esp + 0x62]
mov dword [esp + 0x1c], 1
mov cl, al
shr al, 2
and cl, 3
and al, 3
mov byte [esi + 0x3d2e0], cl
mov byte [esi + 0x3d2e1], al
mov eax, dword [esi + 0x10]
mov cl, byte [esi + 0x3d2e0]
mov dl, byte [esi]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x3e0]
push 0x450
mov byte [esp + 0x27], cl
mov ecx, dword [esp + 0x838]
push eax
mov byte [esp + 0x1f], dl
mov dl, byte [esi + 0x3d2e1]
push 2
push 1
push ecx
mov byte [esp + 0x36], dl
call fcn.004cbb10
add esp, 0x14
test eax, eax
je 0x4d4967
mov edx, dword [esp + 0x3e0]
mov eax, dword [esp + 0x3e1]
and edx, 0xff
and eax, 0xff
shl edx, 8
lea eax, [edx + eax + 2]
cmp eax, 4
mov dword [esp + 0x24], eax
jle 0x4d4967
cmp eax, 0x450
jbe 0x4d4ab6
mov ecx, eax
push ecx
call fcn.004b6a10
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x3c], edi
je 0x4d4967
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x834]
push edx
push edi
push 2
push 1
push eax
call fcn.004cbb10
add esp, 0x14
test eax, eax
jne 0x4d4a98
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x834]
push ecx
push edi
push 2
push 1
push edx
call fcn.004cbb10
add esp, 0x14
test eax, eax
jne 0x4d4a98
push edi
call fcn.004f76fe
add esp, 4
mov ecx, 0xf4c0
xor eax, eax
mov edi, esi
mov ebp, dword [esp + 0x834]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x28]
mov al, byte [esp + 0x17]
mov dl, byte [esp + 0x23]
mov dword [esi + 0x10], ecx
lea ecx, [esp + 0xbc]
push 0x324
xor ebx, ebx
push ecx
mov byte [esi], al
mov al, byte [esp + 0x2a]
push ebx
push ebx
push ebp
mov byte [esi + 0x3d2e0], dl
mov byte [esi + 0x3d2e1], al
call fcn.004cbb10
add esp, 0x14
test eax, eax
jne 0x4d4dde
mov ecx, 0xc9
lea edi, [esp + 0xbc]
lea edx, [esp + 0x28]
push ebx
rep stosd dword es:[edi], eax
push edx
lea eax, [esp + 0xc4]
push 0x324
push eax
push ebx
push ebx
push 0x24000
push ebp
mov dword [esp + 0x48], ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x4d4dd6
cmp dword [0x760b28], 2
jge 0x4d4d59
push 0x800
call fcn.004b6a20
mov edi, eax
add esp, 4
cmp edi, ebx
mov ebx, 1
je 0x4d4d5e
push ebx
push 0x10
push edi
push 0
push ebp
call fcn.004555a0
add esp, 0x14
cmp eax, ebx
jne 0x4d4d40
xor eax, eax
xor ecx, ecx
mov ah, byte [edi + 0x53]
mov cl, byte [edi + 0x51]
mov al, byte [edi + 0x52]
xor edx, edx
mov dl, byte [edi + 0x50]
shl eax, 8
or eax, ecx
shl eax, 8
or eax, edx
je 0x4d4d40
cmp eax, 0x10000000
jae 0x4d4d40
xor ebp, ebp
mov dword [esi + 0x10], ebx
mov dword [esi + 0x3d2bc], ebx
mov dword [esi + 0xc], ebx
mov byte [esi + 0x28], 2
mov dword [esi + 0x2c], ebp
mov dword [esi + 0x40], eax
mov dword [esi + 0x9cc], eax
mov dword [esi + 0x68], ebp
mov dword [esi + 0x3d2d8], 0x800
mov dword [esp + 0x10], ebx
jmp 0x4d4d42
xor eax, eax
xor ecx, ecx
mov al, byte [edi]
mov cl, byte [edi + 1]
shl eax, 8
lea edx, [eax + ecx + 2]
mov eax, dword [esp + 0x24]
cmp eax, edx
jne 0x4d4967
jmp 0x4d4aba
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x24]
xor eax, eax
mov al, byte [edi + 3]
add ecx, 0xfffffffc
mov dword [esi + 0x3d2bc], eax
mov eax, 0xba2e8ba3
mul ecx
shr edx, 3
mov dword [esp + 0x18], 0
mov dword [esp + 0x48], edx
je 0x4d4ce4
mov edx, dword [esp + 0x34]
lea eax, [edi + 7]
mov edi, dword [esp + 0x2c]
jmp 0x4d4af9
mov edx, dword [esp + 0x34]
xor ecx, ecx
mov cl, byte [eax - 3]
cmp ecx, dword [esp + 0x58]
je 0x4d4b1c
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x40], ebx
mov dword [esp + 0x38], edi
mov cl, byte [eax - 2]
and ecx, 0xfffffff0
cmp cl, 0x10
jne 0x4d4ccc
mov cl, byte [eax]
cmp cl, 0xa0
jne 0x4d4b60
xor ecx, ecx
mov cl, byte [eax + 5]
mov edi, ecx
test edi, edi
mov dword [esp + 0x2c], edi
je 0x4d4967
test edx, edx
je 0x4d4b52
inc edx
cmp edi, edx
jne 0x4d4967
xor edx, edx
mov dl, byte [eax + 6]
mov dword [esp + 0x38], edx
jmp 0x4d4ccc
cmp cl, 0xa1
jne 0x4d4b83
xor ecx, ecx
mov cl, byte [eax + 5]
test ecx, ecx
mov dword [esp + 0x30], ecx
je 0x4d4967
cmp ecx, edi
jl 0x4d4967
jmp 0x4d4ccc
cmp cl, 0xa2
jne 0x4d4bb5
xor ecx, ecx
xor edx, edx
mov cl, byte [eax + 5]
mov dl, byte [eax + 6]
lea ecx, [ecx + ecx*2]
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*4 - 2]
lea ecx, [ecx + ecx*2]
lea ecx, [ecx + ecx*4]
lea ebx, [ecx + ecx*4]
xor ecx, ecx
mov cl, byte [eax + 7]
add ebx, ecx
mov dword [esp + 0x40], ebx
jmp 0x4d4ccc
cmp cl, 1
jb 0x4d4ccc
cmp cl, 0x63
ja 0x4d4ccc
and ecx, 0xff
mov edx, ecx
test edi, edi
mov dword [esp + 0x44], edx
je 0x4d4967
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x4d4967
test ebx, ebx
je 0x4d4967
cmp edx, edi
jl 0x4d4967
cmp edx, ecx
jg 0x4d4967
mov ecx, dword [esp + 0x34]
inc ecx
cmp edx, ecx
jne 0x4d4967
test ebp, ebp
jne 0x4d4c13
mov dword [esi + 0x10], edx
xor ecx, ecx
mov cl, byte [eax + 5]
lea ecx, [ecx + ecx*2]
lea edi, [ecx + ecx*4]
xor ecx, ecx
mov cl, byte [eax + 6]
lea ecx, [ecx + edi*4 - 2]
lea ecx, [ecx + ecx*2]
lea ecx, [ecx + ecx*4]
lea edi, [ecx + ecx*4]
xor ecx, ecx
mov cl, byte [eax + 7]
add edi, ecx
lea ecx, [ebp + ebp*8]
lea ecx, [ebp + ecx*2]
lea ecx, [ebp + ecx*4]
shl ecx, 5
add ecx, esi
test ebp, ebp
mov dword [ecx + 0x2c], edi
jbe 0x4d4c69
mov edx, dword [esp + 0x2c]
cmp dword [esp + 0x44], edx
jle 0x4d4c65
sub edi, dword [ecx - 0x974]
mov dword [ecx - 0x960], edi
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x30]
jne 0x4d4c75
sub ebx, dword [ecx + 0x2c]
mov dword [ecx + 0x40], ebx
xor ebx, ebx
mov bl, byte [eax - 3]
dec ebx
mov dword [ecx + 0x68], ebx
mov bl, byte [eax - 2]
test bl, 4
jne 0x4d4c8c
mov byte [ecx + 0x28], 1
jmp 0x4d4cb8
mov edi, dword [esp + 0x38]
test edi, edi
jne 0x4d4c9a
mov byte [ecx + 0x28], 2
jmp 0x4d4cb8
cmp edi, 0x10
je 0x4d4cb4
cmp edi, 1
je 0x4d4cb4
cmp edi, 0x20
je 0x4d4cb4
cmp edi, 2
je 0x4d4cb4
mov byte [ecx + 0x28], 2
jmp 0x4d4cb8
mov byte [ecx + 0x28], 4
mov edi, dword [esi + 0xc]
mov ebx, dword [esp + 0x40]
inc edi
inc ebp
mov dword [esi + 0xc], edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x48]
inc edx
add eax, 0xb
cmp edx, ecx
mov dword [esp + 0x18], edx
jb 0x4d4af5
mov ecx, dword [esi + 0xc]
mov edi, 1
cmp ecx, edi
jl 0x4d4967
mov eax, dword [esi + 0x3d2bc]
cmp eax, edi
jl 0x4d4967
cmp ecx, eax
jl 0x4d4967
cmp dword [esp + 0x24], 0x450
jbe 0x4d4d21
mov edx, dword [esp + 0x3c]
push edx
call fcn.004b6a50
add esp, 4
cmp byte [esi], 0xff
jne 0x4d4d29
mov byte [esi], 1
mov dword [esi + 0x3d2d8], 0x930
mov dword [esp + 0x10], edi
mov dword [esp + 0x50], edi
jmp 0x4d4ff9
xor ebp, ebp
push edi
call fcn.004b6a50
mov eax, dword [esp + 0x14]
add esp, 4
cmp eax, ebp
jne 0x4d4fef
jmp 0x4d4d60
mov ebx, 1
xor ebp, ebp
cmp dword [esp + 0x1c], ebp
je 0x4d4db3
mov al, byte [esp + 0x62]
test al, 3
je 0x4d4d97
mov ecx, dword [esp + 0x69]
mov edx, dword [esp + 0x64]
and ecx, 0xff
and edx, 0xff
shl ecx, 8
add ecx, edx
cmp ecx, ebx
jne 0x4d4fef
test al, 0xc
jne 0x4d4fef
mov dword [esi + 0x3d2bc], ebp
mov dword [esi + 0xc], ebp
mov dword [esi + 0x3d2d8], 0x800
mov dword [esp + 0x10], ebx
jmp 0x4d4ff9
mov al, byte [esp + 0x17]
test al, al
jbe 0x4d4fef
cmp al, 0xff
jae 0x4d4fef
mov dword [esi + 0x3d2d8], ebp
mov dword [esp + 0x10], ebx
jmp 0x4d4ff9
mov dword [esp + 0x54], 1
cmp dword [esp + 0x1c], ebx
je 0x4d4e04
mov eax, dword [esp + 0x69]
mov ecx, dword [esp + 0x64]
and eax, 0xff
and ecx, 0xff
shl eax, 8
add eax, ecx
mov dword [esi + 0x3d2bc], eax
jmp 0x4d4e0e
mov dword [esi + 0x3d2bc], 1
mov ecx, dword [esi + 0x3d2bc]
cmp ecx, ebx
je 0x4d5634
mov eax, dword [esp + 0xbe]
mov edx, dword [esp + 0xbf]
and eax, 0xff
and edx, 0xff
sub edx, eax
mov dword [esi + 0x10], eax
lea eax, [edx + 1]
cmp eax, 1
mov dword [esi + 0xc], eax
jl 0x4d5634
cmp eax, 0x64
jg 0x4d5634
cmp ecx, eax
jle 0x4d4e5c
mov dword [esi + 0x3d2bc], eax
xor ebp, ebp
cmp eax, ebx
jle 0x4d4fe5
lea edi, [esp + 0xc5]
push ebp
push esi
call fcn.004323c0
mov ecx, dword [esp + 0x5c]
add esp, 8
cmp ecx, ebx
jne 0x4d4ec2
xor ecx, ecx
xor edx, edx
mov cl, byte [edi - 1]
mov dl, byte [edi]
shl ecx, 8
add ecx, edx
xor edx, edx
mov dl, byte [edi + 1]
xor ebx, ebx
shl ecx, 8
add ecx, edx
xor edx, edx
mov dl, byte [edi + 2]
shl ecx, 8
add ecx, edx
xor edx, edx
mov dword [eax + 4], ecx
mov bl, byte [edi + 7]
mov dl, byte [edi + 8]
shl ebx, 8
add edx, ebx
xor ebx, ebx
mov bl, byte [edi + 9]
shl edx, 8
add edx, ebx
shl edx, 8
jmp 0x4d4f07
xor ecx, ecx
mov cl, byte [edi + 1]
mov edx, ecx
xor ecx, ecx
mov cl, byte [edi]
lea ecx, [ecx + ecx*2]
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*4 - 2]
lea ecx, [ecx + ecx*2]
lea ecx, [ecx + ecx*4]
lea edx, [ecx + ecx*4]
xor ecx, ecx
mov cl, byte [edi + 2]
add ecx, edx
xor edx, edx
mov dword [eax + 4], ecx
mov dl, byte [edi + 8]
xor ebx, ebx
mov bl, byte [edi + 9]
lea edx, [edx + edx*2]
lea edx, [edx + edx*4]
lea edx, [ebx + edx*4 - 2]
lea edx, [edx + edx*2]
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
xor ebx, ebx
mov bl, byte [edi + 0xa]
add edx, ebx
xor ebx, ebx
sub edx, ecx
mov ecx, edx
mov dword [eax + 0x18], edx
cmp ecx, ebx
jl 0x4d5634
mov cl, byte [esi]
test cl, cl
jbe 0x4d4f2a
cmp cl, 0x10
jb 0x4d4f2f
cmp cl, 0xff
jne 0x4d4f4a
mov ecx, dword [esi + 0x3d2bc]
mov edx, dword [esi + 0xc]
cmp ecx, edx
je 0x4d4f58
cmp ecx, 1
jne 0x4d5634
mov dword [eax + 0x40], ebx
jmp 0x4d4f5b
cmp dword [esi + 0x3d2bc], 1
jne 0x4d4f58
mov dword [eax + 0x40], ebx
jmp 0x4d4f5b
mov dword [eax + 0x40], ebp
test byte [edi - 4], 4
jne 0x4d4f79
mov byte [eax], 1
mov al, byte [esi]
cmp al, 0xff
mov dword [esi + 0x3d2d8], 0x930
jne 0x4d4fd6
mov byte [esi], 1
jmp 0x4d4fd6
mov cl, byte [esi]
test cl, cl
jbe 0x4d4fc9
cmp cl, 0x10
jae 0x4d4fc9
cmp dword [esp + 0x1c], ebx
je 0x4d4fba
mov cl, byte [esp + 0x68]
test cl, cl
je 0x4d4fba
cmp cl, 0x10
jne 0x4d4fa6
mov byte [eax], 4
mov dword [esi + 0x3d2d8], 0x930
jmp 0x4d4fd6
cmp cl, 0x20
jne 0x4d4fba
mov byte [eax], 4
mov dword [esi + 0x3d2d8], 0x930
jmp 0x4d4fd6
mov byte [eax], 2
mov dword [esi + 0x3d2d8], 0x930
jmp 0x4d4fd6
mov byte [eax], 2
mov dword [esi + 0x3d2d8], 0x800
mov eax, dword [esi + 0xc]
inc ebp
add edi, 8
cmp ebp, eax
jl 0x4d4e6d
mov dword [esp + 0x10], 1
jmp 0x4d4ff9
cmp dword [esp + 0x10], ebx
jne 0x4d5634
cmp byte [esi], 0
jne 0x4d501a
mov eax, dword [esi + 0xc]
test eax, eax
jle 0x4d501a
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x4d501a
mov dword [esp + 0x5c], 0
jmp 0x4d47d9
mov eax, dword [esp + 0x66]
mov ebx, dword [esp + 0x6b]
xor ebp, ebp
mov dword [esp + 0x18], ebp
mov ecx, dword [esi + 0xc]
cmp ebp, ecx
jl 0x4d505d
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4d5493
mov edx, dword [esp + 0x66]
mov eax, ebx
and eax, 0xff
and edx, 0xff
shl eax, 8
add eax, edx
cmp ebp, eax
jge 0x4d5493
mov eax, dword [esp + 0x66]
mov edx, dword [esp + 0x840]
test edx, edx
je 0x4d508c
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x4d508c
and ebx, 0xff
and eax, 0xff
shl ebx, 8
add ebx, eax
cmp ecx, ebx
jne 0x4d508c
test ebp, ebp
jg 0x4d5493
mov ecx, dword [esi + 0x10]
mov edx, dword [esp + 0x834]
lea eax, [esp + 0x8c]
push 0x30
add ecx, ebp
push eax
push ecx
push 1
push 0
push edx
call fcn.004cbf10
add esp, 0x18
test eax, eax
jne 0x4d50ed
test ebp, ebp
jne 0x4d5493
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [esi + 0x10]
mov edx, dword [esp + 0x834]
lea eax, [esp + 0x8c]
push 0x30
push eax
push ecx
push 1
push ebp
push edx
call fcn.004cbf10
add esp, 0x18
test eax, eax
je 0x4d5493
mov edx, dword [esp + 0x94]
mov eax, dword [esp + 0x95]
mov ecx, dword [esp + 0x96]
mov edi, dword [esp + 0xa4]
and edx, 0xff
and eax, 0xff
shl edx, 8
add edx, eax
mov eax, dword [esp + 0x97]
shl edx, 8
and ecx, 0xff
and edi, 0xff
add edx, ecx
mov ecx, dword [esp + 0xa5]
shl edx, 8
and eax, 0xff
and ecx, 0xff
shl edi, 8
add edx, eax
mov eax, dword [esp + 0xa6]
add edi, ecx
mov ecx, dword [esp + 0xa7]
shl edi, 8
and eax, 0xff
and ecx, 0xff
add edi, eax
shl edi, 8
add edi, ecx
test ebp, ebp
jne 0x4d517e
test edx, edx
jne 0x4d5493
jmp 0x4d5186
test edx, edx
je 0x4d5493
test edi, edi
je 0x4d5493
cmp dword [esi + 0x3d2d8], 0x930
jne 0x4d5269
cmp ebp, dword [esi + 0xc]
jge 0x4d526c
lea eax, [ebp + ebp*8]
lea ecx, [ebp + eax*2]
lea eax, [ebp + ecx*4]
shl eax, 5
add eax, esi
cmp edx, dword [eax + 0x2c]
jne 0x4d5269
mov ecx, dword [eax + 0x40]
cmp edi, ecx
jg 0x4d5269
sub ecx, edi
cmp ebp, 1
mov dword [eax + 0x3c], ecx
mov dword [eax + 0x38], ecx
jl 0x4d5269
mov ecx, dword [eax - 0x968]
cmp ecx, 0x98
jne 0x4d5214
mov ebx, dword [eax - 0x938]
cmp ebx, dword [eax + 0x68]
jne 0x4d5214
mov ecx, 2
mov dword [eax - 0x964], ecx
mov dword [eax - 0x968], ecx
mov ecx, 0x96
mov dword [eax + 0x34], ecx
mov dword [eax + 0x30], ecx
jmp 0x4d5269
mov ebx, 0x96
cmp ecx, ebx
jne 0x4d5269
mov ecx, dword [eax - 0x938]
cmp ecx, dword [eax + 0x68]
jne 0x4d5269
xor ecx, ecx
mov dword [eax - 0x964], ecx
mov dword [eax - 0x968], ecx
mov dword [eax + 0x34], ebx
mov dword [eax + 0x30], ebx
cmp dword [0x66f4ec], 0xa
jne 0x4d5269
mov ecx, dword [eax - 0x960]
mov ebx, 2
cmp ecx, ebx
jle 0x4d5269
add ecx, 0xfffffffe
mov dword [eax - 0x960], ecx
mov dword [eax - 0x964], ebx
mov dword [eax - 0x968], ebx
cmp ebp, dword [esi + 0xc]
mov ecx, dword [esp + 0x98]
mov ebx, dword [esp + 0x6b]
jl 0x4d5332
cmp byte [esi], 0x10
jb 0x4d5493
mov eax, dword [esp + 0x66]
mov ebp, dword [esp + 0x8e]
and ebx, 0xff
and eax, 0xff
shl ebx, 8
add ebx, eax
mov eax, dword [esp + 0xac]
and eax, 0xff
and ebp, 0xff
shl eax, 8
add eax, ebp
cmp eax, ebx
jl 0x4d5323
mov al, byte [esi + 0x3d2e1]
test al, al
je 0x4d5493
test byte [esp + 0x93], 1
je 0x4d5323
mov ebx, dword [esp + 0x99]
mov eax, ecx
and eax, 0xff
and ebx, 0xff
shl eax, 8
add eax, ebx
mov ebx, dword [esp + 0x9a]
shl eax, 8
and ebx, 0xff
add eax, ebx
mov ebx, dword [esp + 0x9b]
shl eax, 8
and ebx, 0xff
add eax, ebx
cmp eax, edx
je 0x4d5493
jle 0x4d5323
sub eax, edx
cmp eax, edi
jge 0x4d5323
mov edi, eax
mov eax, dword [esi + 0xc]
mov ebx, dword [esp + 0x6b]
mov ebp, dword [esp + 0x18]
inc eax
mov dword [esi + 0xc], eax
mov al, byte [esi]
cmp al, 0x22
je 0x4d5348
cmp al, 0x25
je 0x4d5348
cmp al, 0x2a
je 0x4d5348
cmp al, 0x2e
jne 0x4d53d7
cmp dword [esi + 0xc], 1
jne 0x4d53d7
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4d53d7
mov eax, dword [esp + 0x66]
and ebx, 0xff
shl ebx, 8
and eax, 0xff
add ebx, eax
cmp ebx, 1
jne 0x4d53d3
test byte [esp + 0x93], bl
je 0x4d53d3
mov eax, dword [esp + 0x99]
and ecx, 0xff
shl ecx, 8
and eax, 0xff
add ecx, eax
mov eax, dword [esp + 0x9a]
shl ecx, 8
and eax, 0xff
add ecx, eax
mov eax, dword [esp + 0x9b]
shl ecx, 8
and eax, 0xff
add ecx, eax
cmp ecx, edx
jne 0x4d53c9
mov al, byte [esi + 0x3d2e1]
test al, al
je 0x4d5474
cmp ecx, edx
jle 0x4d53d3
sub ecx, edx
cmp ecx, edi
jge 0x4d53d3
mov edi, ecx
mov ebx, dword [esp + 0x6b]
lea ecx, [ebp + ebp*8]
lea eax, [ebp + ecx*2]
lea ecx, [ebp + eax*4]
shl ecx, 5
lea eax, [ecx + esi]
mov ecx, dword [esp + 0x8f]
and ecx, 0xff
mov dword [eax + 0x2c], edx
mov edx, dword [esp + 0xad]
and edx, 0xff
mov dword [eax + 0x40], edi
shl edx, 8
lea edx, [edx + ecx - 1]
mov dword [eax + 0x68], edx
mov cl, byte [esi]
cmp cl, 0x10
jae 0x4d5436
mov cl, byte [esp + 0x92]
and ecx, 0xf
dec ecx
je 0x4d5436
dec ecx
je 0x4d5462
sub ecx, 0xd
je 0x4d5448
mov cl, byte [eax + 0x28]
test cl, cl
jne 0x4d543a
mov byte [eax + 0x28], 2
mov eax, dword [esp + 0x66]
inc ebp
mov dword [esp + 0x18], ebp
jmp 0x4d5028
mov ecx, dword [esp + 0x50]
test ecx, ecx
jne 0x4d543a
inc ebp
mov byte [eax + 0x28], 1
mov eax, dword [esp + 0x66]
mov dword [esp + 0x18], ebp
jmp 0x4d5028
inc ebp
mov byte [eax + 0x28], 4
mov eax, dword [esp + 0x66]
mov dword [esp + 0x18], ebp
jmp 0x4d5028
mov byte [esi + 0x3d2e0], 0
mov byte [esi + 0x3d2e1], 0
mov dword [esi + 0x3d2bc], 0
mov dword [esi + 0xc], 0
mov eax, dword [esi + 0xc]
test eax, eax
jle 0x4d54b6
lea ecx, [eax + eax*8]
lea edx, [eax + ecx*2]
lea eax, [eax + edx*4]
shl eax, 5
mov ecx, dword [eax + esi - 0x938]
inc ecx
mov dword [esi + 0x3d2bc], ecx
jmp 0x4d54c0
mov dword [esi + 0x3d2bc], 0
mov edx, dword [esp + 0x83c]
push edx
call fcn.0045b090
mov dword [esi + 0x3d2cc], eax
mov eax, dword [esi + 0xc]
mov edi, 1
add esp, 4
cmp eax, edi
jne 0x4d5514
mov al, byte [esi]
cmp al, 0x16
je 0x4d5500
cmp al, 0x1a
je 0x4d5500
cmp al, 0x14
je 0x4d5500
cmp al, 0x27
je 0x4d5500
cmp al, 0x28
je 0x4d5500
cmp al, 0x2c
je 0x4d5500
cmp al, 0x30
jne 0x4d5514
mov ebp, dword [esp + 0x834]
push esi
push eax
push ebp
call fcn.004d5650
add esp, 0xc
jmp 0x4d551b
mov ebp, dword [esp + 0x834]
mov al, byte [esi]
cmp al, 0x13
jne 0x4d552f
mov byte [esi + 0x3d2e0], 1
mov byte [esi + 0x3d2e1], 1
cmp al, 0x27
je 0x4d553f
cmp al, 0x28
je 0x4d553f
cmp al, 0x2c
je 0x4d553f
cmp al, 0x30
jne 0x4d5556
cmp byte [esi + 0x3d2e0], 2
jne 0x4d5556
mov byte [esi + 0x3d2e0], 1
mov byte [esi + 0x3d2e1], 1
cmp dword [esi + 0x3d2bc], edi
jg 0x4d5569
cmp dword [esi + 0xc], edi
jg 0x4d5569
cmp byte [esi + 0x28], 1
jne 0x4d556f
mov dword [esi + 0x3d2c8], edi
push esi
push ebp
call fcn.004d4330
add esp, 8
neg eax
sbb eax, eax
xor ebx, ebx
inc eax
mov dword [esi + 0x3d2c4], eax
mov eax, dword [esi + 0x3d2cc]
cmp eax, ebx
je 0x4d562a
cmp dword [esi + 0xc], edi
jne 0x4d560c
cmp dword [esi + 0x2c], 0xffffff6a
jne 0x4d560c
cmp dword [esi + 0x40], ebx
jne 0x4d560c
lea ecx, [esp + 0x28]
push ebx
push ecx
lea edx, [esp + 0x50]
push 8
push edx
xor eax, eax
push ebx
push ebx
mov dword [esp + 0x60], eax
push 0x7405c
push ebp
mov dword [esp + 0x48], ebx
mov dword [esp + 0x6c], eax
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x4d55fd
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
push ebx
push 0x800
push eax
push ecx
mov dword [esi + 0x2c], ebx
call fcn.004f5c30
mov dword [esi + 0x9cc], eax
mov dword [esi + 0x40], eax
mov dword [esi + 0x3d2c4], edi
jmp 0x4d560c
mov ecx, 0xf4c0
xor eax, eax
mov edi, esi
mov dword [esp + 0x10], ebx
rep stosd dword es:[edi], eax
cmp dword [esi + 0x3d2cc], ebx
je 0x4d562a
cmp byte [esi], 0xff
jne 0x4d562a
cmp dword [esi + 0x40], 0x57e40
setl dl
dec edx
and edx, 0xf
inc edx
mov byte [esi], dl
push esi
push ebp
call fcn.004d5830
add esp, 8
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x820
ret