Function at 0x422f50
Capabilities:
Create directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b5bfe
mov eax, dword fs:[0]
push eax
sub esp, 0x12c
mov eax, dword [0x6319d0]
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
mov eax, dword [ecx + 0xc]
test byte [eax + 0xcdc], 0x80
mov dword [ebp - 0x134], ecx
je 0x4232ef
call fcn.0046d4f0
test eax, eax
je 0x423014
push 0
push str.CUninstall_::_SaveFileForRestore_n
push 0x652490
call fcn.00599ee3
mov ecx, dword [str.ENTRY:]
mov edx, dword [0x5ccf7c]
mov eax, 0x652490
mov dword [0x652390], ecx
add esp, 0xc
mov dword [0x652394], edx
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x422fd0
mov edi, 0x652390
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x422fe1
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d500
push 0x652390
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.004a8620
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x42302e
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x118], eax
mov dword [ebp - 4], 0
call fcn.004a8620
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x423061
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x11c], edi
mov byte [ebp - 4], 1
call fcn.004a8620
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x423091
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x124], eax
mov byte [ebp - 4], 2
call fcn.004a8620
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4230c1
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x120], eax
push 1
lea ecx, [ebp - 0x114]
push ecx
push 0x104
mov byte [ebp - 4], 3
call fcn.0049cd20
add esp, 0xc
push str.PREV
lea ecx, [ebp - 0x130]
call fcn.00403380
mov esi, eax
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebp - 0x12c]
mov byte [ebp - 4], 4
call fcn.00403380
push esi
push eax
lea eax, [ebp - 0x128]
mov bl, 5
push eax
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0xc
push eax
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 6
call fcn.00402af0
mov eax, dword [ebp - 0x128]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423160
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x12c]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423186
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x130]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4231ac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x124]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov edx, dword [ebp - 0x134]
mov eax, dword [edx + 0x3b0c]
test eax, eax
jne 0x423316
call fcn.0046d4f0
test eax, eax
je 0x423254
push 0
push str.CUninstall_::_SaveFileForRestore_n
push 0x652290
call fcn.00599ee3
mov ecx, dword [str.EXIT:]
mov edx, dword [0x5ccefc]
mov eax, 0x652290
mov dword [0x652190], ecx
add esp, 0xc
mov dword [0x652194], edx
mov ecx, eax
jmp 0x423210
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x423210
mov edi, 0x652190
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x423221
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x652190
rep movsb byte es:[edi], byte [esi]
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d510
mov eax, dword [ebp - 0x120]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42327a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x124]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4232a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x11c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4232c6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x118]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4232ef
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
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.00599ed4
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x128]
test eax, eax
je 0x423588
mov ecx, dword [eax]
mov dword [ebp - 0x128], ecx
mov ecx, dword [eax + 8]
lea eax, [ecx - 0x10]
lea esi, [edi - 0x10]
cmp eax, esi
je 0x42337e
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x42336e
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x42336e
push eax
call fcn.004022e0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x423363
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [ebp - 0x11c], ebx
jmp 0x42337e
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x11c]
call fcn.004026b0
mov eax, dword [ebp - 0x11c]
mov esi, dword [ebp - 0x118]
add eax, 0xfffffff0
add esi, 0xfffffff0
cmp eax, esi
je 0x4233e5
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4233cf
mov ecx, dword [eax]
cmp ecx, dword [esi]
jne 0x4233cf
push eax
call fcn.004022e0
add esp, 4
mov ebx, eax
or edx, 0xffffffff
lock xadd dword [edi], edx
dec edx
test edx, edx
jg 0x4233c4
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
add ebx, 0x10
mov dword [ebp - 0x118], ebx
jmp 0x4233e5
mov eax, dword [ebp - 0x11c]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x118]
call fcn.004026b0
mov esi, dword [ebp - 0x118]
push 0x5c
push esi
call fcn.0059aa24
add esp, 8
test eax, eax
jne 0x4233ff
or eax, 0xffffffff
jmp 0x423401
sub eax, esi
inc eax
push eax
push 0
lea ecx, [ebp - 0x118]
call fcn.00407710
push 0x5cd28c
lea ecx, [ebp - 0x138]
call fcn.00403380
push eax
lea eax, [ebp - 0x124]
push eax
lea ecx, [ebp - 0x12c]
push ecx
mov byte [ebp - 4], 7
call fcn.00402910
lea edx, [ebp - 0x118]
push edx
push eax
lea eax, [ebp - 0x130]
push eax
mov byte [ebp - 4], 8
call fcn.00402910
add esp, 0x18
mov ecx, dword [eax]
mov esi, dword [ebp - 0x120]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov byte [ebp - 4], 9
cmp eax, esi
je 0x4234b4
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4234a4
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4234a4
push eax
call fcn.004022e0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x423499
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [ebp - 0x120], ebx
jmp 0x4234b4
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x120]
call fcn.004026b0
mov eax, dword [ebp - 0x130]
add eax, 0xfffffff0
mov byte [ebp - 4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4234da
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x12c]
add eax, 0xfffffff0
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423500
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x138]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423526
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [ebp - 0x120]
mov edi, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x134]
push 0
push esi
push edi
add ecx, 9
call fcn.00431ec0
test eax, eax
jne 0x423576
call fcn.0046d4f0
test eax, eax
je 0x423576
push esi
push edi
push str.FAILED_CopyAFile_:_Source___s__Destination___s_n
push 0x652090
call fcn.00599ee3
add esp, 0x10
push 0x652090
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
cmp dword [ebp - 0x128], 0
jne 0x423310
jmp 0x4231cf
call fcn.004a6edd
int3