Function at 0x10002450
Capabilities:
Get disk information
Get file system object information
Inspect section memory permissions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3bc
mov eax, dword [0x1002bea0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xorps xmm0, xmm0
push 8
xor esi, esi
mov dword [ebp - 0x3ac], 0
xor ebx, ebx
mov byte [ebp - 0x37d], 0
push esi
mov dword [ebp - 0x3b0], ebx
movups xmmword [ebp - 0x3a8], xmm0
movups xmmword [ebp - 0x398], xmm0
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov ecx, dword [edi]
test ecx, ecx
je 0x100024ae
cmp word [ecx], bx
sete byte [ebp - 0x384]
mov eax, dword [edi + 4]
mov dword [ebp - 0x390], 0xffffffff
mov dword [ebp - 0x38c], 0xffffffff
mov dword [ebp - 0x378], 0x10
sub eax, 1
je 0x10002ba1
sub eax, 1
je 0x100028b0
push 0x8000
push 0x104
lea eax, [ebp - 0x20c]
push eax
push 0
push 0
lea eax, [ebp - 0x3ac]
push eax
push ecx
push dword [0x1002d794]
mov ecx, edi
call fcn.10003dd0
mov ecx, dword [ebp - 0x3ac]
mov dword [edi + 4], eax
test ecx, ecx
je 0x1000390c
test eax, 0x10000000
je 0x100025c5
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 2
je 0x1000254c
cmp eax, 5
je 0x1000254c
cmp eax, 4
je 0x1000254c
test dword [edi + 4], 0x4000
je 0x100025bf
cmp byte [edi + 0x31], bl
je 0x10002560
cmp byte [edi + 0x32], bl
jne 0x100025bf
mov esi, 1
jmp 0x100038f6
mov eax, 0x66666667
xor esi, esi
imul dword [0x1002dfac]
mov eax, 0x32
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
test eax, eax
jle 0x100025bf
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
nop dword [eax + eax]
cmp byte [edi + 0x30], 0
jne 0x10003063
push 0xa
call ebx
mov eax, 0x66666667
inc esi
imul dword [0x1002dfac]
mov eax, 0x32
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
cmp esi, eax
jl 0x10002590
mov ecx, dword [ebp - 0x3ac]
test dword [edi + 4], 0x20000000
je 0x10002eb1
push ecx
push dword [0x1002d794]
call fcn.10004190
mov ecx, dword [0x1002d990]
add esp, 8
cmp dword [0x1002e308], 0
mov ebx, eax
lea eax, [ebp - 0x3b0]
mov dword [ebp - 0x37c], ebx
mov edx, 0x60
push eax
mov esi, dword [ebx]
mov eax, 0x10060
cmovne edx, eax
neg ecx
sbb ecx, ecx
and ecx, 0x80
or edx, ecx
push edx
push 0
push ebx
call dword [esi + 0x10]
mov ecx, dword [ebp - 0x3b0]
test ecx, ecx
je 0x10002890
mov eax, dword [ecx]
lea edx, [ebp - 0x3bc]
push edx
lea edx, [ebp - 0x3b4]
push edx
push 1
push ecx
call dword [eax + 0xc]
test eax, eax
jne 0x1000287a
nop dword [eax + eax]
push 1
push 0x104
lea eax, [ebp - 0x20c]
mov ecx, edi
push eax
push 0x104
lea eax, [ebp - 0x108]
push eax
push 0
push dword [ebp - 0x3b4]
push ebx
call fcn.10003dd0
push dword [ebp - 0x384]
mov esi, eax
mov ecx, edi
push esi
lea eax, [ebp - 0x20c]
mov dword [ebp - 0x374], esi
push eax
lea eax, [ebp - 0x108]
mov dword [ebp - 0x3a0], esi
push eax
call fcn.10003bb0
test al, al
je 0x1000283b
cmp byte [edi + 0x31], 0
push dword [ebp - 0x3b4]
jne 0x1000289b
push dword [ebp - 0x3ac]
call fcn.1000ebe0
add esp, 8
mov dword [ebp - 0x3a4], eax
mov byte [ebp - 0x39c], 0
test esi, 0x20010000
je 0x100026e6
mov byte [ebp - 0x39c], 0xff
lea eax, [ebp - 0x108]
push 0x40
push eax
call fcn.10004470
lea ecx, [ebp - 0x108]
add esp, 8
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10002700
mov ebx, dword [edi + 0x18]
sub ecx, edx
lea edx, [ecx + 1]
mov dword [ebp - 0x370], edx
test edx, edx
jle 0x1000278f
mov ecx, dword [edi + 0x20]
test ecx, ecx
mov eax, ecx
mov ecx, 0x10
cmove eax, ecx
lea ecx, [ebx + edx]
cmp ecx, eax
jle 0x10002736
nop
add eax, eax
cmp ecx, eax
jg 0x10002730
cmp eax, dword [edi + 0x20]
je 0x1000274e
push eax
lea ecx, [edi + 0x18]
call fcn.10002280
test al, al
je 0x1000278f
mov edx, dword [ebp - 0x370]
mov ecx, dword [edi + 0x18]
cmp ecx, ebx
jle 0x10002769
mov eax, dword [edi + 0x1c]
sub ecx, ebx
add eax, ebx
push ecx
push eax
add eax, edx
push eax
call fcn.10011b80
add esp, 0xc
push dword [ebp - 0x370]
lea eax, [ebp - 0x108]
push eax
mov eax, dword [edi + 0x1c]
add eax, ebx
push eax
call fcn.10011600
mov eax, dword [ebp - 0x370]
add esp, 0xc
add dword [edi + 0x18], eax
jmp 0x10002792
or ebx, 0xffffffff
lea eax, [ebp - 0x398]
mov dword [ebp - 0x3a8], ebx
push eax
mov eax, dword [ebp - 0x374]
mov ecx, edi
shr eax, 0x1d
and al, 1
movzx eax, al
push eax
push dword [ebp - 0x3a4]
call fcn.10004110
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov esi, dword [edi + 0xc]
test edx, edx
mov ecx, edx
cmove ecx, eax
lea eax, [esi + 1]
cmp eax, ecx
jle 0x100027da
add ecx, ecx
cmp esi, ecx
jge 0x100027d4
cmp ecx, edx
je 0x100027eb
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
je 0x10002835
mov ecx, dword [edi + 0xc]
mov edx, esi
shl edx, 5
mov dword [ebp - 0x374], edx
cmp ecx, esi
jle 0x1000281b
mov eax, dword [edi + 0x10]
sub ecx, esi
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x374]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
mov ebx, dword [ebp - 0x37c]
mov eax, dword [0x1002d790]
push dword [ebp - 0x3b4]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
cmp byte [edi + 0x30], 0
jne 0x100038f4
mov eax, dword [ebp - 0x3b0]
lea edx, [ebp - 0x3bc]
push edx
lea edx, [ebp - 0x3b4]
push edx
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0xc]
test eax, eax
je 0x10002650
mov eax, dword [ebp - 0x3b0]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov dword [ebp - 0x3b0], 0
mov eax, dword [ebx]
push ebx
call dword [eax + 8]
jmp 0x10002eb1
mov eax, dword [0x1002d790]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov esi, 1
jmp 0x100038f6
cmp byte [edi + 0x31], bl
je 0x100028bf
mov esi, 1
jmp 0x1000390c
xor ecx, ecx
mov dword [ebp - 0x37c], ecx
cmp dword [0x1002e1e8], ecx
jle 0x10002b16
nop dword [eax]
nop word [eax + eax]
mov eax, dword [ecx*4 + 0x1002e678]
test eax, eax
je 0x10002b0e
cmp eax, 0xffffffff
jne 0x10002914
xorps xmm0, xmm0
movups xmmword [ebp - 0x3a8], xmm0
mov dword [ebp - 0x3a8], 0xfffffffe
movups xmmword [ebp - 0x398], xmm0
jmp 0x10002a7b
push 0x8000
push 0
push 0
push 0x104
lea ecx, [ebp - 0x108]
push ecx
push 0
push eax
push dword [0x1002d794]
mov ecx, edi
call fcn.10003dd0
mov esi, eax
lea eax, [ebp - 0x108]
push 0x40
push eax
mov dword [ebp - 0x374], esi
mov dword [ebp - 0x3a0], esi
call fcn.10004470
add esp, 8
cmp dword [0x1002d830], 0
jle 0x10002976
cmp dword [0x1002e1bc], 0
je 0x10002976
test esi, 0x20000000
je 0x10002af5
mov eax, dword [ebp - 0x37c]
push dword [eax*4 + 0x1002e678]
call fcn.1000ec60
add esp, 4
mov dword [ebp - 0x3a4], eax
mov byte [ebp - 0x39c], 0
test esi, 0x20010000
je 0x100029a7
mov byte [ebp - 0x39c], 0xff
lea ecx, [ebp - 0x108]
mov byte [ebp - 0x39b], 1
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100029b7
mov esi, dword [edi + 0x18]
sub ecx, edx
lea edx, [ecx + 1]
mov dword [ebp - 0x370], edx
test edx, edx
jle 0x10002a4f
mov ecx, dword [edi + 0x20]
test ecx, ecx
mov eax, ecx
mov ecx, 0x10
cmove eax, ecx
lea ecx, [esi + edx]
cmp ecx, eax
jle 0x100029f6
nop word [eax + eax]
add eax, eax
cmp ecx, eax
jg 0x100029f0
cmp eax, dword [edi + 0x20]
je 0x10002a0e
push eax
lea ecx, [edi + 0x18]
call fcn.10002280
test al, al
je 0x10002a4f
mov edx, dword [ebp - 0x370]
mov ecx, dword [edi + 0x18]
cmp ecx, esi
jle 0x10002a29
mov eax, dword [edi + 0x1c]
sub ecx, esi
add eax, esi
push ecx
push eax
add eax, edx
push eax
call fcn.10011b80
add esp, 0xc
push dword [ebp - 0x370]
lea eax, [ebp - 0x108]
push eax
mov eax, dword [edi + 0x1c]
add eax, esi
push eax
call fcn.10011600
mov eax, dword [ebp - 0x370]
add esp, 0xc
add dword [edi + 0x18], eax
jmp 0x10002a52
or esi, 0xffffffff
lea eax, [ebp - 0x398]
mov dword [ebp - 0x3a8], esi
push eax
mov eax, dword [ebp - 0x374]
mov ecx, edi
shr eax, 0x1d
and al, 1
movzx eax, al
push eax
push dword [ebp - 0x3a4]
call fcn.10004110
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov ebx, dword [edi + 0xc]
test edx, edx
mov ecx, edx
cmove ecx, eax
lea eax, [ebx + 1]
cmp eax, ecx
jle 0x10002a9a
add ecx, ecx
cmp ebx, ecx
jge 0x10002a94
cmp ecx, edx
je 0x10002aab
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
je 0x10002af5
mov ecx, dword [edi + 0xc]
mov edx, ebx
shl edx, 5
mov dword [ebp - 0x374], edx
cmp ecx, ebx
jle 0x10002adb
mov eax, dword [edi + 0x10]
sub ecx, ebx
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x374]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
mov ecx, dword [ebp - 0x37c]
inc ecx
mov dword [ebp - 0x37c], ecx
cmp ecx, dword [0x1002e1e8]
jl 0x100028e0
test ecx, ecx
jne 0x10002eb1
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov ebx, dword [edi + 0xc]
test edx, edx
mov ecx, edx
xorps xmm0, xmm0
cmove ecx, eax
movups xmmword [ebp - 0x3a8], xmm0
lea eax, [ebx + 1]
mov dword [ebp - 0x3a8], 0xffffffff
movups xmmword [ebp - 0x398], xmm0
cmp eax, ecx
jle 0x10002b56
nop word [eax + eax]
add ecx, ecx
cmp ebx, ecx
jge 0x10002b50
cmp ecx, edx
je 0x10002b6b
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
je 0x10002eb1
mov ecx, dword [edi + 0xc]
mov edx, ebx
shl edx, 5
mov dword [ebp - 0x374], edx
cmp ecx, ebx
jle 0x10002e97
mov eax, dword [edi + 0x10]
sub ecx, ebx
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x374]
jmp 0x10002e94
cmp byte [edi + 0x31], bl
je 0x10002bb0
mov esi, 1
jmp 0x1000390c
xor ecx, ecx
mov dword [ebp - 0x370], ecx
cmp dword [0x1002e1c8], ecx
jle 0x10002e1a
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [ecx*4 + 0x1002e570]
test eax, eax
je 0x10002e12
push 0x8000
push 0
push 0
push 0x104
lea ecx, [ebp - 0x108]
push ecx
push 0
push eax
push dword [0x1002d794]
mov ecx, edi
call fcn.10003dd0
mov ebx, eax
lea eax, [ebp - 0x108]
push 0x40
push eax
mov dword [ebp - 0x374], ebx
mov dword [ebp - 0x3a0], ebx
call fcn.10004470
add esp, 8
cmp dword [0x1002d830], 0
jle 0x10002c41
cmp dword [0x1002e1bc], 0
je 0x10002c41
test ebx, 0x20000000
je 0x10002df9
mov eax, dword [ebp - 0x370]
push dword [eax*4 + 0x1002e570]
call fcn.1000ec60
add esp, 4
mov dword [ebp - 0x3a4], eax
mov byte [ebp - 0x39c], 0
test ebx, 0x20010000
je 0x10002c72
mov byte [ebp - 0x39c], 0xff
lea ecx, [ebp - 0x108]
mov byte [ebp - 0x39b], 1
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10002c82
mov esi, dword [edi + 0x18]
sub ecx, edx
lea edx, [ecx + 1]
mov dword [ebp - 0x37c], edx
test edx, edx
jle 0x10002d14
mov ecx, dword [edi + 0x20]
test ecx, ecx
mov eax, ecx
mov ecx, 0x10
cmove eax, ecx
lea ecx, [esi + edx]
cmp ecx, eax
jle 0x10002cbb
add eax, eax
cmp ecx, eax
jg 0x10002cb5
cmp eax, dword [edi + 0x20]
je 0x10002cd3
push eax
lea ecx, [edi + 0x18]
call fcn.10002280
test al, al
je 0x10002d14
mov edx, dword [ebp - 0x37c]
mov ecx, dword [edi + 0x18]
cmp ecx, esi
jle 0x10002cee
mov eax, dword [edi + 0x1c]
sub ecx, esi
add eax, esi
push ecx
push eax
add eax, edx
push eax
call fcn.10011b80
add esp, 0xc
push dword [ebp - 0x37c]
lea eax, [ebp - 0x108]
push eax
mov eax, dword [edi + 0x1c]
add eax, esi
push eax
call fcn.10011600
mov eax, dword [ebp - 0x37c]
add esp, 0xc
add dword [edi + 0x18], eax
jmp 0x10002d17
or esi, 0xffffffff
mov ebx, dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
lea eax, [ebp - 0x36c]
push 0x4009
push 0x160
push eax
push 0
mov dword [ebp - 0x3a8], esi
mov esi, dword [ebp - 0x3a4]
push esi
call ebx
mov ecx, dword [ebp - 0x368]
mov dword [0x1002d804], eax
mov eax, dword [ebp - 0x374]
shr eax, 0x1d
mov dword [ebp - 0x398], ecx
test al, 1
je 0x10002d79
push 0x400b
push 0x160
lea eax, [ebp - 0x36c]
push eax
push 0
push esi
call ebx
mov ecx, dword [ebp - 0x368]
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov ebx, dword [edi + 0xc]
test edx, edx
mov dword [ebp - 0x394], ecx
mov ecx, edx
cmove ecx, eax
lea eax, [ebx + 1]
cmp eax, ecx
jle 0x10002d9e
add ecx, ecx
cmp ebx, ecx
jge 0x10002d98
cmp ecx, edx
je 0x10002daf
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
je 0x10002df9
mov ecx, dword [edi + 0xc]
mov edx, ebx
shl edx, 5
mov dword [ebp - 0x374], edx
cmp ecx, ebx
jle 0x10002ddf
mov eax, dword [edi + 0x10]
sub ecx, ebx
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x374]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
mov ecx, dword [ebp - 0x370]
inc ecx
mov dword [ebp - 0x370], ecx
cmp ecx, dword [0x1002e1c8]
jl 0x10002bd0
test ecx, ecx
jne 0x10002eb1
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov ebx, dword [edi + 0xc]
test edx, edx
mov ecx, edx
xorps xmm0, xmm0
cmove ecx, eax
movups xmmword [ebp - 0x3a8], xmm0
lea eax, [ebx + 1]
mov dword [ebp - 0x3a8], 0xffffffff
movups xmmword [ebp - 0x398], xmm0
cmp eax, ecx
jle 0x10002e56
nop
add ecx, ecx
cmp ebx, ecx
jge 0x10002e50
cmp ecx, edx
je 0x10002e67
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
je 0x10002eb1
mov ecx, dword [edi + 0xc]
mov edx, ebx
shl edx, 5
mov dword [ebp - 0x374], edx
cmp ecx, ebx
jle 0x10002e97
mov eax, dword [edi + 0x10]
sub ecx, ebx
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x374]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
xor ebx, ebx
cmp byte [edi + 0x30], bl
jne 0x100038f4
cmp byte [edi + 0x31], bl
jne 0x10002fc5
mov eax, dword [edi + 4]
cmp eax, 1
jne 0x10002ed5
cmp dword [0x1002e1cc], ebx
jmp 0x10002ed8
cmp eax, 2
mov byte [ebp - 0x385], 1
jne 0x10002ee7
mov byte [ebp - 0x385], bl
mov esi, dword [edi + 0xc]
lea ecx, [edi + 0x24]
mov eax, esi
cdq
idiv dword [0x1002d800]
add eax, 2
lea eax, [esi + eax*2]
push eax
call fcn.10001270
xor ecx, ecx
mov dword [edi + 0x24], esi
test esi, esi
jle 0x10002f1b
nop dword [eax + eax]
mov eax, dword [edi + 0x28]
mov dword [eax + ecx*4], ecx
inc ecx
cmp ecx, esi
jl 0x10002f10
cmp byte [ebp - 0x385], bl
je 0x10002fba
cmp esi, dword [0x1002d800]
jle 0x10002f3f
mov eax, dword [edi + 4]
cmp eax, 1
je 0x10002f3f
or eax, 0x40000000
mov dword [edi + 4], eax
test dword [edi + 4], 0x40000000
je 0x10002fad
mov ecx, dword [edi + 0x24]
mov eax, ecx
cdq
sub eax, edx
mov esi, eax
sar esi, 1
js 0x10002f76
cmp byte [edi + 0x30], bl
jne 0x10002fba
push dword [ebp - 0x384]
mov eax, dword [edi + 0x24]
mov ecx, edi
dec eax
push eax
push esi
call fcn.100041d0
sub esi, 1
jns 0x10002f56
mov ecx, dword [edi + 0x24]
lea esi, [ecx - 1]
cmp esi, 1
jl 0x10002fba
nop
cmp byte [edi + 0x30], bl
jne 0x10002fba
mov ecx, dword [edi + 0x28]
push dword [ebp - 0x384]
mov eax, dword [ecx + esi*4]
mov edx, dword [ecx]
mov dword [ecx], eax
mov ecx, edi
mov eax, dword [edi + 0x28]
mov dword [eax + esi*4], edx
dec esi
push esi
push 0
call fcn.100041d0
cmp esi, 1
jge 0x10002f80
jmp 0x10002fba
lea eax, [esi - 1]
mov ecx, edi
push eax
push 0
call fcn.10003a90
xor ebx, ebx
cmp byte [edi + 0x30], bl
jne 0x100038f4
cmp byte [ebp - 0x384], 0
jne 0x1000337e
cmp byte [edi + 0x33], 0
jne 0x10002fe5
test dword [edi + 4], 0x10000
je 0x1000337e
push dword [ebp - 0x3ac]
call fcn.1000ec60
mov ebx, eax
push ebx
mov dword [ebp - 0x374], ebx
call fcn.1000ecc0
add esp, 8
test ebx, ebx
je 0x1000337e
push 0x8000
push 0
push 0
push 0x104
lea eax, [ebp - 0x108]
mov ecx, edi
push eax
push 0
push ebx
push dword [0x1002d794]
call fcn.10003dd0
cmp word [ebx], 0
mov dword [ebp - 0x3b8], eax
sete cl
movzx ecx, cl
push ecx
push eax
lea eax, [ebp - 0x20c]
mov ecx, edi
push eax
lea eax, [ebp - 0x108]
push eax
call fcn.10003bb0
test al, al
je 0x10003372
cmp byte [edi + 0x31], 0
je 0x1000306f
mov esi, 1
xor ebx, ebx
jmp 0x100038f6
cmp dword [edi + 0xc], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x398], xmm0
mov dword [ebp - 0x390], 0xffffffff
movups xmmword [ebp - 0x3a8], xmm0
mov dword [ebp - 0x38c], 0xffffffff
jne 0x1000312b
mov ecx, dword [edi + 0x14]
mov edx, 0x10
test ecx, ecx
mov dword [ebp - 0x3a8], 0xffffffff
mov eax, ecx
cmove eax, edx
cmp eax, 1
jge 0x100030c7
nop dword [eax]
add eax, eax
cmp eax, 1
jl 0x100030c0
cmp eax, ecx
je 0x100030dd
push eax
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
jne 0x100030dd
or eax, 0xffffffff
jmp 0x10003111
mov ecx, dword [edi + 0xc]
test ecx, ecx
jle 0x100030f8
mov eax, dword [edi + 0x10]
shl ecx, 5
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
push dword [edi + 0x10]
call fcn.10011600
inc dword [edi + 0xc]
add esp, 0xc
xor eax, eax
push 1
push dword [edi + 0x24]
lea ecx, [edi + 0x24]
mov dword [ebp - 0x370], eax
lea eax, [ebp - 0x370]
push eax
call fcn.10004270
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov ebx, dword [edi + 0xc]
test edx, edx
mov ecx, edx
mov dword [ebp - 0x3a8], 0xfffffffe
cmove ecx, eax
lea eax, [ebx + 1]
cmp eax, ecx
jle 0x10003156
nop
add ecx, ecx
cmp ebx, ecx
jge 0x10003150
cmp ecx, edx
je 0x1000316c
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
jne 0x1000316c
or ebx, 0xffffffff
jmp 0x100031b6
mov ecx, dword [edi + 0xc]
mov edx, ebx
shl edx, 5
mov dword [ebp - 0x37c], edx
cmp ecx, ebx
jle 0x1000319c
mov eax, dword [edi + 0x10]
sub ecx, ebx
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x37c]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
push 1
push dword [edi + 0x24]
lea ecx, [ebp - 0x370]
mov dword [ebp - 0x370], ebx
push ecx
lea ecx, [edi + 0x24]
call fcn.10004270
mov eax, dword [ebp - 0x374]
lea ecx, [ebp - 0x108]
mov dword [ebp - 0x3a4], eax
lea edx, [ecx + 1]
mov eax, dword [ebp - 0x3b8]
mov byte [ebp - 0x37d], 1
mov word [ebp - 0x39c], 0x101
mov dword [ebp - 0x3a0], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10003201
sub ecx, edx
lea edx, [ecx + 1]
mov ecx, dword [edi + 0x18]
mov dword [ebp - 0x37c], edx
mov dword [ebp - 0x384], ecx
test edx, edx
jle 0x100032a5
mov eax, dword [edi + 0x20]
test eax, eax
cmove eax, dword [ebp - 0x378]
add edx, ecx
cmp edx, eax
jle 0x1000323c
add eax, eax
cmp edx, eax
jg 0x10003236
cmp eax, dword [edi + 0x20]
je 0x10003254
push eax
lea ecx, [edi + 0x18]
call fcn.10002280
test al, al
je 0x100032a5
mov ecx, dword [ebp - 0x384]
mov edx, dword [edi + 0x18]
cmp edx, ecx
jle 0x10003279
mov eax, dword [edi + 0x1c]
sub edx, ecx
add eax, ecx
push edx
push eax
add eax, dword [ebp - 0x37c]
push eax
call fcn.10011b80
mov ecx, dword [ebp - 0x384]
add esp, 0xc
push dword [ebp - 0x37c]
lea eax, [ebp - 0x108]
push eax
mov eax, dword [edi + 0x1c]
add eax, ecx
push eax
call fcn.10011600
mov eax, dword [ebp - 0x37c]
add esp, 0xc
add dword [edi + 0x18], eax
mov eax, dword [ebp - 0x384]
jmp 0x100032a8
or eax, 0xffffffff
mov dword [ebp - 0x3a8], eax
mov ecx, edi
lea eax, [ebp - 0x398]
push eax
mov eax, dword [ebp - 0x3b8]
shr eax, 0x1d
and al, 1
movzx eax, al
push eax
push dword [ebp - 0x374]
call fcn.10004110
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov ebx, dword [edi + 0xc]
test edx, edx
mov ecx, edx
cmove ecx, eax
lea eax, [ebx + 1]
cmp eax, ecx
jle 0x100032f6
nop word [eax + eax]
add ecx, ecx
cmp ebx, ecx
jge 0x100032f0
cmp ecx, edx
je 0x1000330c
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
jne 0x1000330c
or ebx, 0xffffffff
jmp 0x10003356
mov ecx, dword [edi + 0xc]
mov edx, ebx
shl edx, 5
mov dword [ebp - 0x378], edx
cmp ecx, ebx
jle 0x1000333c
mov eax, dword [edi + 0x10]
sub ecx, ebx
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x378]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
push 1
push dword [edi + 0x24]
lea ecx, [edi + 0x24]
mov dword [ebp - 0x370], ebx
lea eax, [ebp - 0x370]
push eax
call fcn.10004270
jmp 0x1000337e
mov eax, dword [0x1002d790]
push ebx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
cmp dword [0x1002e1c4], 0
je 0x10003520
cmp byte [edi + 0x34], 0
je 0x10003520
cmp byte [ebp - 0x37d], 0
jne 0x10003456
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov esi, dword [edi + 0xc]
test edx, edx
mov ecx, edx
xorps xmm0, xmm0
cmove ecx, eax
movups xmmword [ebp - 0x3a8], xmm0
lea eax, [esi + 1]
mov dword [ebp - 0x3a8], 0xfffffffe
movups xmmword [ebp - 0x398], xmm0
cmp eax, ecx
jle 0x100033dc
add ecx, ecx
cmp esi, ecx
jge 0x100033d6
cmp ecx, edx
je 0x100033f2
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
jne 0x100033f2
or esi, 0xffffffff
jmp 0x1000343c
mov ecx, dword [edi + 0xc]
mov edx, esi
shl edx, 5
mov dword [ebp - 0x378], edx
cmp ecx, esi
jle 0x10003422
mov eax, dword [edi + 0x10]
sub ecx, esi
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x378]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
push 1
push dword [edi + 0x24]
lea ecx, [edi + 0x24]
mov dword [ebp - 0x370], esi
lea eax, [ebp - 0x370]
push eax
call fcn.10004270
push dword [0x1002e570]
mov word [ebp - 0x39c], 1
call fcn.1000ec60
mov edx, dword [edi + 0x14]
add esp, 4
mov esi, dword [edi + 0xc]
test edx, edx
mov dword [ebp - 0x3a4], eax
mov ecx, edx
mov eax, 0x10
mov dword [ebp - 0x3a0], 1
cmove ecx, eax
mov dword [ebp - 0x3a8], 0xfffffffd
lea eax, [esi + 1]
cmp eax, ecx
jle 0x100034a6
add ecx, ecx
cmp esi, ecx
jge 0x100034a0
cmp ecx, edx
je 0x100034bc
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
jne 0x100034bc
or esi, 0xffffffff
jmp 0x10003506
mov ecx, dword [edi + 0xc]
mov edx, esi
shl edx, 5
mov dword [ebp - 0x378], edx
cmp ecx, esi
jle 0x100034ec
mov eax, dword [edi + 0x10]
sub ecx, esi
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x378]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
push 1
push dword [edi + 0x24]
lea ecx, [edi + 0x24]
mov dword [ebp - 0x370], esi
lea eax, [ebp - 0x370]
push eax
call fcn.10004270
cmp dword [0x1002e1e4], 0
je 0x100036c2
cmp byte [edi + 0x35], 0
je 0x100036c2
cmp byte [ebp - 0x37d], 0
jne 0x100035f8
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov esi, dword [edi + 0xc]
test edx, edx
mov ecx, edx
xorps xmm0, xmm0
cmove ecx, eax
movups xmmword [ebp - 0x3a8], xmm0
lea eax, [esi + 1]
mov dword [ebp - 0x3a8], 0xfffffffe
movups xmmword [ebp - 0x398], xmm0
cmp eax, ecx
jle 0x1000357e
add ecx, ecx
cmp esi, ecx
jge 0x10003578
cmp ecx, edx
je 0x10003594
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
jne 0x10003594
or esi, 0xffffffff
jmp 0x100035de
mov ecx, dword [edi + 0xc]
mov edx, esi
shl edx, 5
mov dword [ebp - 0x378], edx
cmp ecx, esi
jle 0x100035c4
mov eax, dword [edi + 0x10]
sub ecx, esi
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x378]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
push 1
push dword [edi + 0x24]
lea ecx, [edi + 0x24]
mov dword [ebp - 0x370], esi
lea eax, [ebp - 0x370]
push eax
call fcn.10004270
push dword [0x1002e678]
mov word [ebp - 0x39c], 1
call fcn.1000ec60
mov edx, dword [edi + 0x14]
add esp, 4
mov esi, dword [edi + 0xc]
test edx, edx
mov dword [ebp - 0x3a4], eax
mov ecx, edx
mov eax, 0x10
mov dword [ebp - 0x3a0], 2
cmove ecx, eax
mov dword [ebp - 0x3a8], 0xfffffffc
lea eax, [esi + 1]
cmp eax, ecx
jle 0x10003648
add ecx, ecx
cmp esi, ecx
jge 0x10003642
cmp ecx, edx
je 0x1000365e
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
jne 0x1000365e
or esi, 0xffffffff
jmp 0x100036a8
mov ecx, dword [edi + 0xc]
mov edx, esi
shl edx, 5
mov dword [ebp - 0x378], edx
cmp ecx, esi
jle 0x1000368e
mov eax, dword [edi + 0x10]
sub ecx, esi
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x378]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
push 1
push dword [edi + 0x24]
lea ecx, [edi + 0x24]
mov dword [ebp - 0x370], esi
lea eax, [ebp - 0x370]
push eax
call fcn.10004270
cmp dword [0x1002d99c], 0
jne 0x100038de
mov eax, dword [edi + 0xc]
cmp eax, dword [0x1002d800]
jl 0x100038de
xor esi, esi
lea eax, [edi + 0x24]
mov dword [ebp - 0x384], esi
cmp dword [eax], esi
jle 0x100038de
cmp byte [edi + 0x30], 0
jne 0x100038f2
test esi, esi
je 0x100038cf
mov ecx, dword [0x1002d800]
mov eax, esi
cdq
idiv ecx
lea eax, [ecx - 2]
cmp edx, eax
jne 0x100038cc
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov esi, dword [edi + 0xc]
test edx, edx
mov ecx, edx
xorps xmm0, xmm0
cmove ecx, eax
movups xmmword [ebp - 0x3a8], xmm0
lea eax, [esi + 1]
mov dword [ebp - 0x3a8], 0xfffffffe
movups xmmword [ebp - 0x398], xmm0
cmp eax, ecx
jle 0x10003756
nop dword [eax]
add ecx, ecx
cmp esi, ecx
jge 0x10003750
cmp ecx, edx
je 0x1000376c
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
jne 0x1000376c
or esi, 0xffffffff
jmp 0x100037b6
mov ecx, dword [edi + 0xc]
mov edx, esi
shl edx, 5
mov dword [ebp - 0x378], edx
cmp ecx, esi
jle 0x1000379c
mov eax, dword [edi + 0x10]
sub ecx, esi
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x378]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
push 1
mov dword [ebp - 0x370], esi
lea eax, [ebp - 0x370]
mov esi, dword [ebp - 0x384]
lea ecx, [edi + 0x24]
push esi
push eax
call fcn.10004270
push dword [edi]
inc esi
mov dword [ebp - 0x3a8], 0xfffffffb
mov dword [ebp - 0x384], esi
call fcn.1000ec60
mov edx, dword [edi + 4]
add esp, 4
mov ecx, dword [ebp - 0x384]
mov esi, eax
mov dword [ebp - 0x3a0], edx
lea eax, [ebp - 0x398]
shr edx, 0x1d
inc ecx
push eax
and dl, 1
mov word [ebp - 0x39a], cx
movzx eax, dl
mov ecx, edi
push eax
push esi
mov dword [ebp - 0x3a4], esi
mov byte [ebp - 0x39c], 1
call fcn.10004110
mov edx, dword [edi + 0x14]
mov eax, 0x10
mov esi, dword [edi + 0xc]
test edx, edx
mov ecx, edx
cmove ecx, eax
lea eax, [esi + 1]
cmp eax, ecx
jle 0x1000384d
add ecx, ecx
cmp esi, ecx
jge 0x10003847
cmp ecx, edx
je 0x10003863
push ecx
lea ecx, [edi + 0xc]
call fcn.10002320
test al, al
jne 0x10003863
or esi, 0xffffffff
jmp 0x100038ad
mov ecx, dword [edi + 0xc]
mov edx, esi
shl edx, 5
mov dword [ebp - 0x378], edx
cmp ecx, esi
jle 0x10003893
mov eax, dword [edi + 0x10]
sub ecx, esi
shl ecx, 5
add eax, edx
push ecx
push eax
add eax, 0x20
push eax
call fcn.10011b80
mov edx, dword [ebp - 0x378]
add esp, 0xc
push 0x20
lea eax, [ebp - 0x3a8]
push eax
mov eax, dword [edi + 0x10]
add eax, edx
push eax
call fcn.10011600
add esp, 0xc
inc dword [edi + 0xc]
push 1
mov dword [ebp - 0x370], esi
lea eax, [ebp - 0x370]
mov esi, dword [ebp - 0x384]
lea ecx, [edi + 0x24]
push esi
push eax
call fcn.10004270
inc esi
lea eax, [edi + 0x24]
inc esi
mov dword [ebp - 0x384], esi
cmp esi, dword [eax]
jl 0x100036f1
xor eax, eax
cmp dword [edi + 0xc], eax
setg al
xor ebx, ebx
mov dword [ebp - 0x378], eax
mov esi, eax
jmp 0x100038f6
xor ebx, ebx
xor esi, esi
mov edx, dword [ebp - 0x3ac]
test edx, edx
je 0x1000390c
mov eax, dword [0x1002d790]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov ecx, dword [ebp - 0x3b0]
test ecx, ecx
je 0x1000391c
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
test ebx, ebx
je 0x10003926
mov ecx, dword [ebx]
push ebx
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
dec dword [edi + 8]
mov eax, esi
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1001025d
mov esp, ebp
pop ebp
ret 4