Function at 0x522090
Capabilities:
Create directory
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5ad450
mov eax, dword fs:[0]
push eax
sub esp, 0x68
mov eax, dword [0x608554]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push ecx
push str.CBaseSeqPrinterDriver::CopyNullDriverToInstTemp
lea ecx, [ebp - 0x48]
call fcn.0040a480
mov dword [ebp - 4], 0
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x522110
test byte [ecx + 0x1c], 1
je 0x522110
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5df0b4
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x14
call fcn.00401840
add esp, 0xc
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x52257d
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x58], edi
mov byte [ebp - 4], 1
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x522587
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x50], eax
mov byte [ebp - 4], 2
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x522591
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x54], esi
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 3
call fcn.0055b16f
mov byte [ebp - 4], 4
mov ebx, 1
mov eax, dword [0x6184f0]
mov edx, ebx
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x50]
mov ecx, dword [eax - 8]
sub edx, dword [eax - 4]
sub ecx, 0x400
or ecx, edx
jge 0x5221ab
push 0x400
lea ecx, [ebp - 0x50]
call fcn.00403b50
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x4c]
push eax
push str.NullDriverInfPath
call fcn.004f65f0
mov eax, dword [ebp - 0x50]
push dword [eax - 8]
push eax
call fcn.00574de9
mov ecx, eax
add esp, 8
test ecx, ecx
js 0x52259b
mov eax, dword [ebp - 0x50]
cmp ecx, dword [eax - 8]
jg 0x52259b
mov dword [eax - 0xc], ecx
xor edx, edx
mov word [eax + ecx*2], dx
mov ecx, ebx
mov eax, dword [0x6184f0]
sub ecx, dword [esi - 4]
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x4c], eax
mov eax, dword [esi - 8]
sub eax, 0x400
or eax, ecx
jge 0x522213
push 0x400
lea ecx, [ebp - 0x54]
call fcn.00403b50
mov esi, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x4c]
push esi
push str.TEMPPATH
call fcn.004f65f0
push dword [esi - 8]
push esi
call fcn.00574de9
add esp, 8
test eax, eax
js 0x52259b
cmp eax, dword [esi - 8]
jg 0x52259b
mov dword [esi - 0xc], eax
xor ecx, ecx
mov word [esi + eax*2], cx
mov ecx, ebx
mov eax, dword [0x6184f0]
sub ecx, dword [edi - 4]
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x4c], eax
mov eax, dword [edi - 8]
sub eax, 0x400
or eax, ecx
jge 0x522273
push 0x400
lea ecx, [ebp - 0x58]
call fcn.00403b50
mov edi, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x4c]
push edi
push str.SOURCEDIR
call fcn.004f65f0
push dword [edi - 8]
push edi
call fcn.00574de9
add esp, 8
test eax, eax
js 0x52259b
cmp eax, dword [edi - 8]
jg 0x52259b
xor ecx, ecx
mov dword [edi - 0xc], eax
mov word [edi + eax*2], cx
lea ecx, [ebp - 0x5c]
call fcn.0046a2f0
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x50]
mov ebx, dword [eax - 0xc]
test ebx, ebx
je 0x5224a8
mov edx, dword [edi - 0xc]
mov dword [ebp - 0x60], edx
test edx, edx
je 0x5224a8
cmp dword [esi - 0xc], 0
je 0x5224a8
lea ecx, [edx - 1]
test ecx, ecx
js 0x52259b
cmp ecx, edx
jg 0x52259b
movzx ecx, word [edi + ecx*2]
mov dword [ebp - 0x4c], 0x5c
cmp word [ebp - 0x4c], cx
je 0x522347
lea ebx, [edx + 1]
test ebx, ebx
js 0x52259b
mov ecx, dword [edi - 8]
mov edx, 1
sub edx, dword [edi - 4]
sub ecx, ebx
or ecx, edx
jge 0x522328
push ebx
lea ecx, [ebp - 0x58]
call fcn.00403b50
mov edi, dword [ebp - 0x58]
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x60]
mov edx, dword [ebp - 0x4c]
mov word [edi + ecx*2], dx
cmp ebx, dword [edi - 8]
jg 0x52259b
mov dword [edi - 0xc], ebx
xor ecx, ecx
mov word [edi + ebx*2], cx
mov ebx, dword [eax - 0xc]
push ebx
push eax
lea ecx, [ebp - 0x58]
call fcn.00405fe0
mov ebx, dword [esi - 0xc]
lea eax, [ebx - 1]
test eax, eax
js 0x52259b
cmp eax, ebx
jg 0x52259b
movzx eax, word [esi + eax*2]
cmp word [ebp - 0x4c], ax
je 0x5223b2
lea edi, [ebx + 1]
test edi, edi
js 0x5225a5
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, edi
or eax, ecx
jge 0x522399
push edi
lea ecx, [ebp - 0x54]
call fcn.00403b50
mov esi, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov word [esi + ebx*2], ax
cmp edi, dword [esi - 8]
jg 0x52259b
xor eax, eax
mov dword [esi - 0xc], edi
mov word [esi + edi*2], ax
mov eax, dword [ebp - 0x50]
lea ecx, [ebp - 0x54]
push dword [eax - 0xc]
push eax
call fcn.00405fe0
mov edi, dword [ebp - 0x58]
lea eax, [ebp - 0x74]
push 0
push eax
push edi
lea ecx, [ebp - 0x5c]
call fcn.0046bb90
cmp dword [ebp - 0x6c], 0
mov esi, dword [ebp - 0x54]
je 0x5224a8
push 0
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x522441
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x52243a
test byte [ecx + 0x1c], 4
je 0x52243a
cmp dword [0x608f68], 8
mov ebx, 0x608f54
cmovae ebx, dword [0x608f54]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov eax, dword [0x608f30]
mov edx, 0x5df0b4
push esi
push ebx
mov ecx, 0x15
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.004300c0
add esp, 0x14
mov ebx, 0x80010009
jmp 0x5224ad
push 0
push esi
push edi
lea ecx, [ebp - 0x5c]
call fcn.0046e250
cmp eax, 1
je 0x522459
mov ebx, 0x8001000c
jmp 0x5224ad
push 0xffffffffffffffff
push 0
lea ecx, [ebp - 0x74]
call fcn.0055b63e
push 0
lea eax, [ebp - 0x74]
push eax
push esi
lea ecx, [ebp - 0x5c]
call fcn.0046bb90
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x522452
xor ebx, ebx
nop dword [eax]
cmp ebx, eax
jge 0x5224a4
test ebx, ebx
js 0x5225af
mov eax, dword [ebp - 0x70]
push 0x20
push dword [eax + ebx*4]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
inc ebx
test eax, eax
je 0x5224a4
mov eax, dword [ebp - 0x6c]
jmp 0x522480
xor ebx, ebx
jmp 0x5224ad
mov ebx, 0x80010026
mov byte [ebp - 0x44], 1
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x5224f2
test byte [ecx + 0x1c], 1
je 0x5224f2
cmp dword [0x608f68], 8
mov eax, 0x608f54
push ebx
cmovae eax, dword [0x608f54]
mov edx, 0x5df0b4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x16
call fcn.004018a0
add esp, 0x10
lea ecx, [ebp - 0x5c]
call fcn.0046a3c0
lea ecx, [ebp - 0x74]
call fcn.0055b186
lea edx, [esi - 0x10]
mov byte [ebp - 4], 2
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x522520
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov eax, esi
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x52253e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], esi
dec esi
test esi, esi
jg 0x522557
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
lea ecx, [ebp - 0x48]
call fcn.0040a570
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0056d977
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.004013a0
push 0x80004005
call fcn.004013a0
push 0x80004005
call fcn.004013a0
push 0x80070057
call fcn.004013a0
push 0x80070057
call fcn.004013a0
call fcn.005511b9
int3