Function at 0x100163b0
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1004e7b0
mov eax, dword fs:[0]
push eax
sub esp, 0x5c
mov eax, dword [0x10062da0]
xor eax, esp
mov dword [esp + 0x54], eax
push esi
push edi
mov eax, dword [0x10062da0]
xor eax, esp
push eax
lea eax, [esp + 0x68]
mov dword fs:[0], eax
push str.InitDiskInfo_enter
push 0
push 0x15a
push str.CEdpDiskControl::InitDiskInfo
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
add esp, 0x10
jmp 0x10016416
call 0x1001c030
cmp dword [0x1006a084], 0
mov byte [esp + 0x1b], al
je 0x10016430
test al, al
jne 0x10016b8f
mov edi, dword [ebx + 0x1184]
mov dword [esp + 0x20], edi
call fcn.10025867
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x10016454
push 0x80004005
call fcn.10002d80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
push edi
lea ecx, [esp + 0x18]
push str.InitDiskInfo_disk_Number__d_r_n
push ecx
mov dword [esp + 0x7c], 0
call fcn.100027b0
mov eax, dword [esp + 0x20]
mov esi, 1
add esp, 0xc
cmp dword [eax - 4], esi
jle 0x1001649e
mov edx, dword [eax - 0xc]
push edx
lea ecx, [esp + 0x18]
call fcn.10002a10
mov eax, dword [esp + 0x14]
push eax
push 0
push 0x16b
push str.CEdpDiskControl::InitDiskInfo
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
add esp, 0x10
mov ecx, edi
call fcn.1000d0c0
call fcn.10025867
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x100164d9
push 0x80004005
call fcn.10002d80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x10], eax
push edi
lea ecx, [esp + 0x14]
push str.InitDiskInfo_disk_Number__d_r_n
push ecx
mov byte [esp + 0x7c], 1
call fcn.100027b0
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp dword [eax - 4], esi
jle 0x10016517
mov edx, dword [eax - 0xc]
push edx
lea ecx, [esp + 0x14]
call fcn.10002a10
mov eax, dword [esp + 0x10]
push eax
push 0
push 0x170
push str.CEdpDiskControl::InitDiskInfo
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
push edi
call fcn.1000cf10
mov esi, eax
add esp, 0x14
mov dword [esp + 0x1c], esi
cmp esi, 0xffffffff
jne 0x100165b8
mov edx, dword [0x1006c5e8]
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10016551
sub eax, esi
push eax
push edx
lea ecx, [ebx + 4]
call fcn.10001fc0
mov byte [esp + 0x70], 0
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10016589
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x70], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100165b1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x10016b91
push ebx
mov ecx, esi
mov byte [ebx + 0x1172], 0
mov byte [ebx + 0x1173], 0
mov byte [ebx + 0x1174], 0
call fcn.10016ea0
test al, al
jne 0x100166dd
mov dword [esp + 0x5c], 0xf
mov dword [esp + 0x58], 0
mov byte [esp + 0x48], al
lea ecx, [esp + 0x44]
push ecx
mov ecx, edi
mov byte [esp + 0x74], 2
call fcn.1000ebf0
add esp, 4
test al, al
jne 0x1001665c
push str.InitDiskInfo_GetBackDevicePath_fail
push 4
push 0x186
push str.CEdpDiskControl::InitDiskInfo
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0x5c], 0x10
jb 0x10016642
mov edx, dword [esp + 0x48]
push edx
call fcn.10024afb
add esp, 4
mov dword [esp + 0x5c], 0xf
mov dword [esp + 0x58], 0
mov byte [esp + 0x48], 0
jmp 0x10016564
lea ecx, [esp + 0x44]
call fcn.1000cf70
test al, al
jne 0x100166b0
push str.InitDiskInfo_UpdateUniqueID_fail
push 4
push 0x18c
push str.CEdpDiskControl::InitDiskInfo
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x44]
call fcn.100025e0
lea ecx, [esp + 0x10]
call fcn.10002d60
lea ecx, [esp + 0x14]
call fcn.10002d60
xor al, al
jmp 0x10016b91
push ebx
mov ecx, esi
call fcn.10016ea0
test al, al
jne 0x100166ca
push str.InitDiskInfo_Re_UpdateLabelInfo_fail
push 4
push 0x193
jmp 0x10016675
lea ecx, [esp + 0x44]
mov byte [esp + 0x70], 1
call fcn.100025e0
jmp 0x100168d8
mov dword [esp + 0x40], 0xf
mov dword [esp + 0x3c], 0
mov byte [esp + 0x2c], 0
lea ecx, [esp + 0x28]
push ecx
mov ecx, edi
mov byte [esp + 0x74], 3
call fcn.1000ebf0
add esp, 4
test al, al
mov eax, 0x10069f30
lea edx, [eax + 1]
jne 0x100167c0
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10016716
sub eax, edx
push eax
push 0x10069f30
lea ecx, [esp + 0x30]
call fcn.10001fc0
push str.WriteToUsb11:
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
cmp dword [esp + 0x40], 0x10
mov eax, dword [esp + 0x2c]
jae 0x10016748
lea eax, [esp + 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0xffffffffffffffff
push 0
lea edx, [esp + 0x4c]
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], 0
push edx
mov byte [ecx + 4], 0
call fcn.10002450
push esi
mov ecx, edi
call fcn.10015b00
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
test al, al
je 0x100167a4
push str.InitDiskInfo_WriteToUsb11_ok
push 0
push 0x1a4
push str.CEdpDiskControl::InitDiskInfo
call fcn.10010760
jmp 0x100168a7
push str.InitDiskInfo_WriteToUsb11_failed
push 4
push 0x1a8
push str.CEdpDiskControl::InitDiskInfo
call fcn.10010760
jmp 0x100168a7
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x100167c0
sub eax, edx
je 0x10016870
mov ecx, 0x10069f30
lea edi, [esp + 0x28]
call fcn.1000a970
test al, al
jne 0x10016870
push 0x10069f30
mov ecx, edi
call fcn.10001f90
mov esi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push str.WriteToUsb11:
call esi
cmp dword [esp + 0x40], 0x10
mov eax, dword [esp + 0x2c]
jae 0x1001680d
lea eax, [esp + 0x2c]
push eax
call esi
sub esp, 0x1c
lea eax, [esp + 0x44]
mov ecx, esp
mov dword [esp + 0x40], esp
push eax
call fcn.10002530
mov ecx, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x40]
call fcn.10015b00
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
test al, al
je 0x10016855
push str.InitDiskInfo_WriteToUsb11_ok
push 0
push 0x1b5
push str.CEdpDiskControl::InitDiskInfo
call fcn.10010760
add esp, 0x10
jmp 0x10016876
push str.InitDiskInfo_WriteToUsb11_failed
push 4
push 0x1b9
push str.CEdpDiskControl::InitDiskInfo
call fcn.10010760
add esp, 0x10
jmp 0x10016876
mov esi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
cmp dword [esp + 0x40], 0x10
mov eax, dword [esp + 0x2c]
jae 0x10016885
lea eax, [esp + 0x2c]
push eax
call esi
push str.InitDiskInfo_GetBackDevicePath_Ok
push 0
push 0x1bd
push str.CEdpDiskControl::InitDiskInfo
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
mov esi, dword [esp + 0x2c]
add esp, 0x10
mov byte [esp + 0x70], 1
cmp dword [esp + 0x40], 0x10
jb 0x100168c3
mov edx, dword [esp + 0x2c]
push edx
call fcn.10024afb
add esp, 4
mov dword [esp + 0x40], 0xf
mov dword [esp + 0x3c], 0
mov byte [esp + 0x2c], 0
mov ecx, esi
mov esi, ebx
call fcn.10016e10
cmp byte [ebx + 0x1b4a], 0
je 0x10016903
cmp dword [ebx + 0x20d], 4
jne 0x1001699f
mov byte [ebx + 0x1174], 1
jmp 0x1001699f
push str.InitDiskInfo_Get_Partions_Info_begin
push 0
push 0x1cd
push str.CEdpDiskControl::InitDiskInfo
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
add esp, 0x10
lea ecx, [ebx + 0xed]
mov esi, 3
mov edi, 1
mov eax, dword [ecx]
cmp eax, edi
jne 0x10016940
mov byte [ebx + 0x1172], 1
jmp 0x10016963
cmp eax, 2
jne 0x10016957
mov byte [ebx + 0x1173], 1
cmp dword [ecx + 8], edi
sete al
mov byte [ebx + 0x20], al
jmp 0x10016963
cmp eax, 4
jne 0x10016963
mov byte [ebx + 0x1174], 1
add ecx, 0x60
sub esi, edi
jne 0x10016931
movzx ecx, byte [ebx + 0x1174]
movzx edx, byte [ebx + 0x1173]
movzx eax, byte [ebx + 0x1172]
push ecx
push edx
push eax
push str.InitDiskInfo_m_bHasBootPart_d__m_bHasSharePart_d__m_bHasEncryptPart_d
push esi
push 0x1e4
push str.CEdpDiskControl::InitDiskInfo
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
add esp, 0x1c
mov eax, 0x104
lea edi, [ebx + 0x1940]
lea ecx, [eax + 1]
mov edx, edi
call fcn.10011710
cmp byte [ebx + 0x1b4a], 0
jne 0x10016a45
cmp dword [ebx], 0x202
jl 0x10016a21
lea ecx, [ebx + 0x989]
push ecx
push 0x104
push edi
call fcn.100329ad
lea eax, [ebx + 0xded]
add esp, 0xc
cmp byte [eax], 0
je 0x100169f4
push eax
mov ecx, 0x1006c594
call fcn.10002c60
cmp byte [ebx + 0xeed], 0
lea eax, [ebx + 0xeed]
je 0x10016a0e
push eax
mov ecx, 0x1006c598
call fcn.10002c60
lea edx, [ebx + 0x889]
push edx
mov ecx, 0x1006c448
call fcn.10002c60
jmp 0x10016a45
mov esi, dword [esp + 0x1c]
call fcn.1000e180
test eax, eax
je 0x10016a45
mov eax, dword [0x1006c5ec]
test eax, eax
jne 0x10016a3e
call fcn.1001d830
jmp 0x10016a45
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
cmp byte [esp + 0x1b], 0
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
je 0x10016ae3
push str.InitDiskInfo_CheckIsCalledByEdpEdisk_return_true__module_called_by_EdpEdisk
push 0
push 0x1fd
push str.CEdpDiskControl::InitDiskInfo
call fcn.10010760
add esp, 0x10
cmp byte [ebx + 0x1171], 0
jne 0x10016afc
cmp byte [ebx + 0x1172], 0
jne 0x10016abb
mov eax, dword [0x1006c5f0]
push eax
lea ecx, [ebx + 4]
call fcn.10001f90
mov ecx, dword [esp + 0x1c]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov byte [esp + 0x70], 0
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x1001657d
cmp byte [ebx + 0x1173], 0
jne 0x10016afc
mov ecx, dword [0x1006c5f4]
push ecx
lea ecx, [ebx + 4]
call fcn.10001f90
mov edx, dword [esp + 0x1c]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x10016697
push str.InitDiskInfo_CheckIsCalledByEdpEdisk_return_false__module_not_called_by_EdpEdisk
push 0
push 0x212
push str.CEdpDiskControl::InitDiskInfo
call fcn.10010760
add esp, 0x10
mov eax, dword [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x10016b17
push str.InitDiskInfo_Leave
push 0
push 0x22e
push str.CEdpDiskControl::InitDiskInfo
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
mov byte [esp + 0x80], 0
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 0x10
mov dword [0x1006a084], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10016b67
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x70], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10016b8f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov al, 1
mov ecx, dword [esp + 0x68]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [esp + 0x54]
xor ecx, esp
call fcn.10032551
mov esp, ebp
pop ebp
ret