Function at 0x10016ff0
Capabilities:
Encode data using xor
Get disk information
Print debug messages
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x1004e75d
mov eax, dword fs:[0]
push eax
sub esp, 0x6b0
mov eax, dword [0x10062da0]
xor eax, esp
mov dword [esp + 0x6a8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x10062da0]
xor eax, esp
push eax
lea eax, [esp + 0x6c4]
mov dword fs:[0], eax
mov ebx, ecx
jmp 0x1001703f
xor edi, edi
push 0x20c
lea eax, [esp + 0xf4]
push edi
push eax
mov byte [esp + 0x22], 1
mov dword [esp + 0xf8], edi
call fcn.10037cf0
xor eax, eax
add esp, 0xc
mov byte [esp + 0xcc], 0
mov dword [esp + 0xcd], eax
mov dword [esp + 0xd1], eax
mov dword [esp + 0xd5], eax
mov dword [esp + 0xd9], eax
mov dword [esp + 0xdd], eax
mov dword [esp + 0xe1], eax
mov dword [esp + 0xe5], eax
mov word [esp + 0xe9], ax
mov byte [esp + 0xeb], al
mov byte [esp + 0xac], al
mov dword [esp + 0xad], eax
mov dword [esp + 0xb1], eax
mov dword [esp + 0xb5], eax
mov dword [esp + 0xb9], eax
mov dword [esp + 0xbd], eax
mov dword [esp + 0xc1], eax
mov dword [esp + 0xc5], eax
mov word [esp + 0xc9], ax
mov byte [esp + 0xcb], al
mov byte [esp + 0x38c], al
mov dword [esp + 0x38d], eax
mov dword [esp + 0x391], eax
mov dword [esp + 0x395], eax
mov dword [esp + 0x399], eax
mov word [esp + 0x39d], ax
mov byte [esp + 0x39f], al
call fcn.10025867
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x10017140
push 0x80004005
call fcn.10002d80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebp, [eax + 0x10]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x6cc], edi
push edi
mov esi, 0xf
push 0x1005571a
lea ecx, [esp + 0x7c]
mov dword [esp + 0x94], esi
mov dword [esp + 0x90], edi
mov byte [esp + 0x80], 0
call fcn.10001fc0
mov byte [esp + 0x6cc], 1
push edi
push 0x1005571a
lea ecx, [esp + 0x98]
mov dword [esp + 0xb0], esi
mov dword [esp + 0xac], edi
mov byte [esp + 0x9c], 0
call fcn.10001fc0
mov byte [esp + 0x6cc], 2
cmp byte [ebx + 0x1171], 0
jne 0x100172ea
cmp byte [ebx + 0x1173], 0
je 0x100172dd
cmp byte [ebx + 0x20], 0
jne 0x100172dd
call fcn.10025867
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x100171f7
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 + 0x28], eax
push 0x1006c594
lea ecx, [esp + 0x30]
push str.Outside_Area_
push ecx
mov byte [esp + 0x6d8], 3
call fcn.1001c770
add esp, 0xc
push str.There_are_unencrypted__r_n
push eax
lea edx, [esp + 0x38]
push edx
mov byte [esp + 0x6d8], 4
call fcn.10009a40
add esp, 0xc
push eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0x6d0], 5
call fcn.1000bb20
mov byte [esp + 0x6cc], 4
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1001727b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x6cc], 3
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100172a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x28]
cmp esi, edi
jne 0x100172b2
call fcn.1001d830
jmp 0x100172b9
push esi
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea eax, [esi - 0x10]
mov byte [esp + 0x6cc], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100172dd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [ebx + 0x1171], 0
je 0x10017409
push str.CEdpDiskControl::UserLogin_11
push edi
push 0x2de
push str.CEdpDiskControl::UserLogin
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
mov eax, dword [esp + 0x6e8]
add esp, 0x10
cmp eax, 2
jne 0x10017398
mov eax, dword [ebx + 0x117c]
cmp eax, 2
je 0x10017417
cmp eax, 1
jne 0x10017337
mov dword [esp + 0xf4], edi
jmp 0x10017422
push str.CEdpDiskControl::UserLogin_22
push edi
push 0x2eb
push str.CEdpDiskControl::UserLogin
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
mov ecx, dword [0x1006c5f8]
add esp, 0x10
push ecx
lea ecx, [ebx + 4]
call fcn.10001f90
lea ecx, [esp + 0x90]
call fcn.100025e0
lea ecx, [esp + 0x74]
call fcn.100025e0
lea eax, [ebp - 0x10]
mov dword [esp + 0x6cc], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x100182b0
cmp eax, 4
jne 0x10017422
mov eax, dword [ebx + 0x1180]
cmp eax, 2
je 0x10017417
cmp eax, 1
jne 0x100173ba
mov dword [esp + 0xf4], edi
jmp 0x10017422
push str.CEdpDiskControl::UserLogin_33
push edi
push 0x2fc
push str.CEdpDiskControl::UserLogin
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
mov ecx, dword [0x1006c5f8]
add esp, 0x10
push ecx
lea ecx, [ebx + 4]
call fcn.10001f90
lea ecx, [esp + 0x90]
call fcn.100025e0
lea ecx, [esp + 0x74]
call fcn.100025e0
lea ecx, [esp + 0x20]
call fcn.10002d60
jmp 0x100182bc
cmp dword [esp + 0x6d8], 2
jne 0x100181f7
mov dword [esp + 0xf4], 1
mov esi, ebx
call fcn.10019e60
test al, al
jne 0x1001749b
mov edx, dword [0x1006c5fc]
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10017438
sub eax, esi
push eax
push edx
lea ecx, [ebx + 4]
call fcn.10001fc0
mov esi, 0x10
cmp dword [esp + 0xa8], esi
jb 0x10017469
mov edx, dword [esp + 0x94]
push edx
call fcn.10024afb
add esp, 4
mov ebx, 0xf
mov dword [esp + 0xa8], ebx
mov dword [esp + 0xa4], edi
mov byte [esp + 0x94], 0
cmp dword [esp + 0x8c], esi
jb 0x10018282
mov eax, dword [esp + 0x78]
push eax
jmp 0x1001827a
call fcn.1001f600
mov ebp, dword [esp + 0x6d4]
mov eax, ebp
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x100174b0
sub eax, edx
mov edx, eax
mov esi, ebp
call fcn.1001f690
mov ecx, dword [esp + 0x6d8]
mov dword [esp + 0x24], eax
xor edi, edi
lea eax, [ebx + 0xed]
cmp ecx, dword [eax]
je 0x100174e4
inc edi
add eax, 0x60
cmp edi, 3
jl 0x100174d5
jmp 0x100174e9
cmp edi, 3
jl 0x10017518
mov edx, dword [0x1006c600]
mov eax, edx
mov byte [esp + 0x16], 0
lea esi, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10017500
sub eax, esi
push eax
push edx
lea ecx, [ebx + 4]
call fcn.10001fc0
jmp 0x10018125
mov eax, dword [ebx + 0x1184]
push eax
mov byte [esp + 0x1b], 0
call fcn.1000cf10
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
je 0x10017581
call fcn.1000efe0
test eax, eax
jne 0x10017541
mov byte [esp + 0x17], 1
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp byte [esp + 0x17], 0
je 0x10017581
push str.EDPEDISK.EXE:UDisk_Write_protected_and_can_only_read_only_use__n
push 0
push 0x332
push str.CEdpDiskControl::UserLogin
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
mov byte [0x10068cd8], 1
mov dword [esp + 0x104], 0
call fcn.10010760
add esp, 0x10
jmp 0x10017588
mov byte [0x10068cd8], 0
xor eax, eax
mov dword [esp + 0x3a1], eax
mov dword [esp + 0x3a5], eax
lea ecx, [edi + edi*2]
mov dword [esp + 0x3a9], eax
mov dword [esp + 0x3ad], eax
mov word [esp + 0x3b1], ax
mov byte [esp + 0x3b3], al
shl ecx, 5
lea eax, [ecx + ebx]
mov dword [esp + 0x1c], eax
push 0x10
add eax, 0x119
push eax
lea edx, [esp + 0xd4]
push 0x11
mov byte [esp + 0x3ac], 0
push edx
mov dword [esp + 0x3b0], 0x30303030
mov dword [esp + 0x3b4], 0x61616161
call fcn.10032c83
push 0x14
push ebp
lea eax, [esp + 0x3a4]
push 0x15
push eax
call fcn.10032c83
add esp, 0x20
cmp dword [ebx], 0x206
jne 0x10017658
lea esi, [esp + 0x3a0]
mov eax, ebp
lea ecx, [ecx]
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x10017640
test cl, cl
je 0x1001763c
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x10017640
add eax, 2
add esi, 2
test cl, cl
jne 0x10017620
xor eax, eax
jmp 0x10017645
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10017658
lea ecx, [esp + 0x38c]
push ecx
mov ecx, ebx
call fcn.1001ba50
mov eax, dword [esp + 0x6dc]
test eax, eax
jne 0x10017800
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
cmp edx, dword [eax + 0x111]
je 0x10017727
mov esi, dword [0x1006c5d4]
mov eax, esi
mov byte [esp + 0x16], 0
lea edi, [eax + 1]
jmp 0x10017690
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10017690
sub eax, edi
push eax
lea edi, [ebx + 4]
push esi
mov ecx, edi
call fcn.10001fc0
mov eax, dword [ebx + 0x1184]
push eax
lea ecx, [esp + 0x4c0]
push 0x10057ef8
push ecx
call fcn.100117d0
add esp, 0xc
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
lea edx, [esp + 0x4d4]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x10017701
mov eax, dword [esp + 0x6d8]
push eax
push esi
mov ecx, ebx
call fcn.1001a650
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x10018125
mov edx, dword [0x1006c604]
mov eax, edx
lea esi, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10017710
sub eax, esi
push eax
push edx
mov ecx, edi
call fcn.10001fc0
jmp 0x10018125
cmp byte [0x10068cd8], 0
jne 0x10017747
mov ecx, dword [esp + 0x6d8]
push ecx
mov ecx, ebx
call fcn.1001a910
test al, al
je 0x10018125
lea eax, [esp + 0x38c]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10017751
mov esi, dword [esp + 0x1c]
sub eax, edx
lea edx, [esp + 0xcc]
push edx
movzx edx, byte [esi + 0x139]
lea ecx, [esp + 0xb0]
push ecx
push edx
push edi
push eax
lea eax, [esp + 0x3a0]
push eax
mov ecx, ebx
call fcn.1001b190
call fcn.1001f600
cmp dword [ebx], 0x206
mov edx, 8
jne 0x1001779e
mov edx, 0x10
xor eax, eax
xor ecx, ecx
test edx, edx
jbe 0x100177cc
jmp 0x100177b0
movzx edi, byte [esp + ecx + 0xac]
movzx ebp, al
xor edi, ebp
shr eax, 8
xor eax, dword [edi*4 + 0x100676c0]
inc ecx
cmp ecx, edx
jb 0x100177b0
cmp eax, dword [esi + 0x115]
je 0x10017a5c
mov edx, dword [0x1006c608]
mov eax, edx
mov byte [esp + 0x16], 0
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x100177e8
sub eax, esi
push eax
push edx
lea ecx, [ebx + 4]
call fcn.10001fc0
jmp 0x10018125
cmp eax, 2
jne 0x10017900
mov ebp, dword [esp + 0x1c]
xor eax, eax
mov dword [esp + 0x70], eax
lea ecx, [esp + 0xcc]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x6c], eax
lea edx, [esp + 0xac]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x6c], edx
mov dl, byte [ebp + 0x139]
lea ecx, [ebx + 0x349]
mov dword [esp + 0x68], ecx
sub esp, 0x20
mov dword [esp + 0x74], edi
lea eax, [esp + 0x3ac]
mov edi, esp
mov dword [esp + 0x80], eax
mov byte [esp + 0x7c], dl
mov ecx, 8
lea esi, [esp + 0x74]
mov dword [esp + 0x78], 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
call fcn.1001b6a0
call fcn.1001f600
cmp dword [ebx], 0x206
mov edx, 8
jne 0x1001789d
mov edx, 0x10
xor eax, eax
xor ecx, ecx
test edx, edx
jbe 0x100178cc
jmp 0x100178b0
movzx esi, byte [esp + ecx + 0xac]
movzx edi, al
xor esi, edi
shr eax, 8
xor eax, dword [esi*4 + 0x100676c0]
inc ecx
cmp ecx, edx
jb 0x100178b0
cmp eax, dword [ebp + 0x115]
je 0x10017a5c
mov edx, dword [0x1006c608]
mov eax, edx
mov byte [esp + 0x16], 0
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x100178e8
sub eax, esi
push eax
push edx
lea ecx, [ebx + 4]
call fcn.10001fc0
jmp 0x10018125
cmp eax, 1
jne 0x10017a5c
xor eax, eax
lea ecx, [esp + 0xcc]
mov dword [esp + 0x50], eax
mov dword [esp + 0x50], ecx
lea edx, [esp + 0xac]
lea ecx, [esp + 0x38c]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x4c], edx
mov dword [esp + 0x40], eax
lea edx, [ebx + 0x349]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x48], eax
mov dword [esp + 0x48], edx
mov dl, byte [ecx + 0x139]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x38], 1
mov dword [esp + 0x34], edi
mov byte [esp + 0x3c], dl
mov dword [esp + 0x18], eax
lea ebp, [ebx + 0x1b4b]
cmp dword [esp + 0x18], 0
jle 0x100179ad
mov esi, ebp
mov eax, 0x10059940
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x100179a4
test cl, cl
je 0x100179a0
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x100179a4
add eax, 2
add esi, 2
test cl, cl
jne 0x10017984
xor eax, eax
jmp 0x100179a9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x10017a18
sub esp, 0x20
mov edi, esp
mov ecx, 8
lea esi, [esp + 0x54]
mov dword [esp + 0x64], ebp
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
call fcn.1001b6a0
call fcn.1001f600
cmp dword [ebx], 0x206
mov edx, 8
jne 0x100179df
mov edx, 0x10
xor eax, eax
xor ecx, ecx
test edx, edx
jbe 0x10017a0c
jmp 0x100179f0
movzx esi, byte [esp + ecx + 0xac]
movzx edi, al
xor esi, edi
shr eax, 8
xor eax, dword [esi*4 + 0x100676c0]
inc ecx
cmp ecx, edx
jb 0x100179f0
mov ecx, dword [esp + 0x1c]
cmp eax, dword [ecx + 0x115]
je 0x10017a2d
mov eax, dword [esp + 0x18]
inc eax
add ebp, 0x30
cmp eax, 0x21
mov dword [esp + 0x18], eax
jl 0x10017976
cmp dword [esp + 0x18], 0x21
jne 0x10017a5c
mov edx, dword [0x1006c608]
mov eax, edx
mov byte [esp + 0x16], 0
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10017a44
sub eax, esi
push eax
push edx
lea ecx, [ebx + 4]
call fcn.10001fc0
jmp 0x10018125
mov eax, dword [esp + 0x1c]
mov edx, dword [ebx]
mov ecx, dword [eax + 0x109]
mov dword [esp + 0xec], edx
mov edx, dword [eax + 0x10d]
mov dword [esp + 0xfc], ecx
mov ecx, dword [eax + 0x101]
mov dword [esp + 0x100], edx
mov edx, dword [eax + 0xf9]
xor esi, esi
mov edi, 1
cmp dword [eax + 0xf5], edi
mov dword [esp + 0x10c], ecx
mov ecx, dword [eax + 0xfd]
mov dword [esp + 0x104], edx
sete dl
mov dword [esp + 0x108], ecx
mov cl, byte [eax + 0x139]
mov byte [esp + 0xf8], dl
mov edx, dword [eax + 0x115]
push 0x10
lea eax, [esp + 0xb0]
push eax
mov byte [esp + 0x138], cl
lea ecx, [esp + 0x118]
push 0x11
push ecx
mov dword [esp + 0x100], esi
mov byte [esp + 0x260], 0
mov dword [esp + 0x144], edx
call fcn.10032c83
mov eax, dword [esp + 0x118]
mov ecx, dword [esp + 0x114]
lea edx, [esp + 0x120]
push edx
mov edx, dword [esp + 0x114]
push eax
mov eax, dword [esp + 0x114]
push ecx
push edx
push eax
lea ecx, [esp + 0x44]
push str.EDPEDISK_Login_eofpParam.PartitionSize_I64x__eofpParam.StartSector.QuadPart_I64x__eofpParam.FileKey__I64x
push ecx
call fcn.100027b0
mov ebp, dword [esp + 0x4c]
add esp, 0x2c
cmp dword [ebp - 4], edi
jle 0x10017b57
mov edx, dword [ebp - 0xc]
push edx
lea ecx, [esp + 0x24]
call fcn.10002a10
mov ebp, dword [esp + 0x20]
push ebp
push esi
push 0x3fb
push str.CEdpDiskControl::UserLogin
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
xor eax, eax
push 0x80
mov dword [esp + 0x26c], eax
mov dword [esp + 0x270], eax
mov dword [esp + 0x274], eax
mov dword [esp + 0x278], eax
mov dword [esp + 0x27c], eax
mov dword [esp + 0x280], eax
mov dword [esp + 0x284], eax
mov dword [esp + 0x288], eax
lea eax, [esp + 0x28c]
push esi
push eax
mov dword [esp + 0x270], esi
call fcn.10037cf0
mov ecx, dword [ebx + 0x1184]
add esp, 0x1c
push ecx
push str.DeviceHarddisk_uPartition0
lea edx, [esp + 0x150]
push 0x104
push edx
call fcn.10032b06
xor eax, eax
add esp, 0x10
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], eax
mov byte [esp + 0x17], al
cmp byte [ebx + 0x1b48], al
je 0x10017ccf
cmp dword [esp + 0xf4], esi
jne 0x10017ccf
cmp byte [0x10068cd8], al
je 0x10017cc3
call fcn.10025867
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x10017c62
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 + 0x24], eax
mov byte [esp + 0x6cc], 6
mov ecx, dword [0x1006c598]
mov edx, dword [0x1006c594]
mov eax, dword [0x1006c60c]
push ecx
push edx
push eax
lea ecx, [esp + 0x30]
push ecx
call fcn.100027b0
mov byte [esp + 0x6dc], 2
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
add esp, 0x10
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10017cc3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0xf4], edi
mov byte [esp + 0x17], 1
mov edi, dword [esp + 0x6d8]
lea edx, [esp + 0x38c]
lea ecx, [esp + 0xec]
mov dword [esp + 0x24c], edi
call fcn.1001c1e0
test eax, eax
jne 0x10017d1b
mov edx, dword [0x1006c610]
mov byte [esp + 0x16], al
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10017d03
sub eax, esi
push eax
push edx
lea ecx, [ebx + 4]
call fcn.10001fc0
jmp 0x10018125
lea ecx, [esp + 0xec]
push ecx
call dword [0x1006a068]
mov byte [esp + 0x18], al
test al, al
jne 0x10017dd0
call dword [0x1006a07c]
mov ecx, eax
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x10017d40
sub ecx, esi
push ecx
push eax
lea ecx, [ebx + 4]
call fcn.10001fc0
mov eax, 0x20
lea ecx, [esp + 0xac]
xor edi, edi
dec eax
mov byte [ecx], 0
inc ecx
cmp eax, edi
jne 0x10017d61
mov ebx, 0x10
cmp dword [esp + 0xa8], ebx
jb 0x10017d88
mov edx, dword [esp + 0x94]
push edx
call fcn.10024afb
add esp, 4
mov esi, 0xf
mov dword [esp + 0xa8], esi
mov dword [esp + 0xa4], edi
mov byte [esp + 0x94], 0
cmp dword [esp + 0x8c], ebx
jb 0x10017db9
mov eax, dword [esp + 0x78]
push eax
call fcn.10024afb
add esp, 4
mov dword [esp + 0x8c], esi
mov dword [esp + 0x6cc], 0xffffffff
jmp 0x10018294
cmp byte [esp + 0x17], 0
mov esi, dword [esp + 0x18]
je 0x10017de3
push esi
mov ecx, ebx
call fcn.1001a250
push esi
mov ecx, ebx
call fcn.1001a340
push esi
mov ecx, ebx
call fcn.1001aae0
cmp byte [ebx + 0x1171], 0
jne 0x10017eb5
cmp byte [ebx + 0x1175], 0
je 0x10017ec4
mov eax, dword [ebx + 0x1184]
dec dword [ebx + 0x1083]
push eax
call fcn.1000cf10
mov esi, eax
add esp, 4
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
cmp esi, 0xffffffff
je 0x10017e7b
push str.WriteTempUseInfo_Start
push 0
push 0x448
push str.CEdpDiskControl::UserLogin
call fcn.10010760
add esp, 0x10
lea edx, [ebx + 0x106f]
mov ecx, esi
call fcn.1000db50
push str.WriteTempUseInfo_End
push 0
push 0x44a
push str.CEdpDiskControl::UserLogin
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x10017ec4
push str.WriteTempUseInfo__Error_OpenNtPhyicalDisk_failed
push 0
push 0x44f
push str.CEdpDiskControl::UserLogin
call fcn.10010760
mov edx, dword [0x1006c604]
mov eax, edx
add esp, 0x10
lea esi, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10017ea0
sub eax, esi
push eax
push edx
lea ecx, [ebx + 4]
call fcn.10001fc0
jmp 0x10017ec4
mov edx, dword [esp + 0x6d4]
push edi
mov ecx, ebx
call fcn.100182f0
mov esi, dword [esp + 0x1c]
cmp dword [esi + 0xed], 4
jne 0x10017f1c
mov cl, byte [esp + 0x18]
mov byte [0x1006a1a6], cl
cmp byte [ebx + 0x1170], 0
je 0x10017f5f
mov edx, dword [esp + 0x6d4]
push edx
push 0x14
mov edi, 0x64
add dword [0x100688de], edi
push 0x10068b06
call fcn.100329ad
add esp, 0xc
cmp byte [ebx + 0x1172], 0
je 0x10017f59
cmp byte [ebx + 0x1173], 0
jmp 0x10017f57
mov al, byte [esp + 0x18]
mov byte [0x1006a1a5], al
cmp byte [ebx + 0x1170], 0
je 0x10017f5f
mov ecx, dword [esp + 0x6d4]
push ecx
push 0x14
mov edi, 0x64
add dword [0x100688de], edi
push 0x10068af2
call fcn.100329ad
add esp, 0xc
cmp byte [ebx + 0x1174], 0
jne 0x10017f5f
add dword [0x100688de], edi
push 0x103
lea edx, [esp + 0x3b9]
push 0
push edx
mov byte [esp + 0x3c0], 0
call fcn.10037cf0
xor eax, eax
add esp, 0xc
mov dword [esp + 0x384], eax
mov word [esp + 0x388], ax
mov al, byte [esp + 0x18]
push ebx
mov dword [esp + 0x384], 0x5c3a41
lea ebx, [esp + 0x300]
mov byte [esp + 0x384], al
call fcn.10016ce0
test al, al
je 0x1001803e
lea eax, [esp + 0x304]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10017fc4
sub eax, edx
je 0x10017ffb
lea eax, [esp + 0x304]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10017fe0
sub eax, edx
push eax
lea ecx, [esp + 0x308]
push ecx
lea ecx, [esp + 0x7c]
call fcn.10001fc0
lea eax, [esp + 0x314]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10018005
sub eax, edx
je 0x1001803e
lea eax, [esp + 0x314]
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10018020
sub eax, edx
push eax
lea edx, [esp + 0x318]
push edx
lea ecx, [esp + 0x98]
call fcn.10001fc0
push 0
push 0
push 0
push 0
push 0
push 0x104
lea eax, [esp + 0x3cc]
push eax
lea ecx, [esp + 0x39c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
je 0x10018125
mov eax, dword [esi + 0xed]
cmp eax, 2
jne 0x100180c3
cmp dword [esp + 0x88], 0
jbe 0x10018098
cmp dword [esp + 0x8c], 0x10
mov eax, dword [esp + 0x78]
jae 0x10018092
lea eax, [esp + 0x78]
push eax
jmp 0x10018117
mov eax, dword [0x1006c594]
push eax
lea ecx, [esp + 0x3b8]
push ecx
call fcn.10035f9a
add esp, 8
test eax, eax
je 0x10018125
mov edx, dword [0x1006c594]
push edx
lea eax, [esp + 0x384]
push eax
jmp 0x1001811f
cmp eax, 4
jne 0x10018125
cmp dword [esp + 0xa4], 0
jbe 0x100180f5
cmp dword [esp + 0xa8], 0x10
mov eax, dword [esp + 0x94]
jae 0x100180ea
lea eax, [esp + 0x94]
push eax
lea ecx, [esp + 0x384]
push ecx
jmp 0x1001811f
mov edx, dword [0x1006c598]
push edx
lea eax, [esp + 0x3b8]
push eax
call fcn.10035f9a
add esp, 8
test eax, eax
je 0x10018125
mov ecx, dword [0x1006c598]
push ecx
lea edx, [esp + 0x384]
push edx
call dword [sym.imp.KERNEL32.dll_SetVolumeLabelA]
mov eax, 0x20
lea ecx, [esp + 0xac]
xor esi, esi
dec eax
mov byte [ecx], 0
inc ecx
cmp eax, esi
jne 0x10018133
mov eax, 0x14
lea ecx, [esp + 0x38c]
dec eax
mov byte [ecx], 0
inc ecx
cmp eax, esi
jne 0x10018148
jmp 0x10018161
mov ebx, 0x10
cmp dword [esp + 0xa8], ebx
jb 0x1001817f
mov eax, dword [esp + 0x94]
push eax
call fcn.10024afb
add esp, 4
mov edi, 0xf
mov dword [esp + 0xa8], edi
mov dword [esp + 0xa4], esi
mov byte [esp + 0x94], 0
cmp dword [esp + 0x8c], ebx
jb 0x100181b0
mov ecx, dword [esp + 0x78]
push ecx
call fcn.10024afb
add esp, 4
mov dword [esp + 0x6cc], 0xffffffff
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov dword [esp + 0x8c], edi
mov dword [esp + 0x88], esi
mov byte [esp + 0x78], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x100181ee
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov al, byte [esp + 0x16]
jmp 0x100182be
push str.CEdpDiskControl::UserLogin_44
push edi
push 0x30a
push str.CEdpDiskControl::UserLogin
mov ecx, str..ClassEdpDiskControlEdpDiskControl.cpp
call fcn.10010760
mov edx, dword [0x1006c5f8]
mov eax, edx
add esp, 0x10
lea esi, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10018220
sub eax, esi
push eax
push edx
lea ecx, [ebx + 4]
call fcn.10001fc0
mov esi, 0x10
cmp dword [esp + 0xa8], esi
jb 0x10018251
mov ecx, dword [esp + 0x94]
push ecx
call fcn.10024afb
add esp, 4
mov ebx, 0xf
mov dword [esp + 0xa8], ebx
mov dword [esp + 0xa4], edi
mov byte [esp + 0x94], 0
cmp dword [esp + 0x8c], esi
jb 0x10018282
mov edx, dword [esp + 0x78]
push edx
call fcn.10024afb
add esp, 4
mov dword [esp + 0x6cc], 0xffffffff
mov dword [esp + 0x8c], ebx
lea eax, [ebp - 0x10]
mov dword [esp + 0x88], edi
mov byte [esp + 0x78], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100182bc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
mov ecx, dword [esp + 0x6c4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x6a8]
xor ecx, esp
call fcn.10032551
add esp, 0x6bc
ret 0xc