Function at 0x415d70
Capabilities:
Create directory

Disassembly:
push 0xffffffffffffffff
push 0x45848b
mov eax, dword fs:[0]
push eax
sub esp, 0xec
mov eax, dword [0x46e3d8]
xor eax, esp
mov dword [esp + 0xe8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x46e3d8]
xor eax, esp
push eax
lea eax, [esp + 0x100]
mov dword fs:[0], eax
mov eax, dword [esp + 0x110]
mov ebp, dword [esp + 0x114]
lea ecx, [esp + 0xa8]
push ecx
push ebp
mov ecx, 0x45e6c4
mov dword [esp + 0x20], eax
call fcn.00412d30
lea eax, [esp + 0xa8]
mov dword [esp + 0x108], 0
call fcn.0043bc80
lea edx, [esp + 0xe0]
push edx
push ebp
mov ecx, str.source
call fcn.00412d30
lea eax, [esp + 0x8c]
push eax
push ebp
mov ecx, str.destination
mov byte [esp + 0x110], 1
call fcn.00412d30
lea ecx, [esp + 0xc4]
push ecx
push ebp
mov ecx, 0x45e700
mov byte [esp + 0x110], 2
call fcn.00412d30
lea eax, [esp + 0xc4]
mov byte [esp + 0x108], 3
call fcn.0043bc80
mov eax, dword [esp + 0xbc]
push str.copy
mov edi, 4
lea ecx, [esp + 0xac]
call fcn.004052d0
test eax, eax
lea esi, [edi + 4]
je 0x415e8b
mov eax, dword [esp + 0xbc]
push str.copyonly
mov edi, esi
lea ecx, [esp + 0xac]
call fcn.004052d0
test eax, eax
mov byte [esp + 0x16], 0
jne 0x415e90
mov byte [esp + 0x16], 1
mov eax, dword [esp + 0xbc]
push str.deleteoninstall
mov edi, 0xf
lea ecx, [esp + 0xac]
call fcn.004052d0
test eax, eax
mov eax, dword [esp + 0xbc]
push str.copy
mov edi, 4
lea ecx, [esp + 0xac]
sete byte [esp + 0x23]
call fcn.004052d0
test eax, eax
je 0x415efb
mov eax, dword [esp + 0xbc]
push str.deleteonuninstall
mov edi, 0x11
lea ecx, [esp + 0xac]
call fcn.004052d0
test eax, eax
mov byte [esp + 0x17], 0
jne 0x415f00
mov byte [esp + 0x17], 1
mov eax, dword [esp + 0xbc]
push str.create
mov edi, 6
lea ecx, [esp + 0xac]
call fcn.004052d0
test eax, eax
mov eax, dword [ebp + 4]
push eax
push str.Folder
sete bl
push str.__s____d_
push 0x46fa40
xor eax, eax
call fcn.00431730
add dword [0x46fa60], 1
push 0
call fcn.00436e10
add esp, 0x14
cmp byte [esp + 0x16], 0
je 0x416155
mov eax, dword [esp + 0xd8]
push str.ifnewer
mov edi, 7
lea ecx, [esp + 0xc8]
call fcn.004052d0
test eax, eax
jne 0x415f7e
lea ebx, [edi - 6]
jmp 0x415fa7
mov eax, dword [esp + 0xd8]
push str.ifNotexists
mov edi, 0xb
lea ecx, [esp + 0xc8]
call fcn.004052d0
mov ebx, eax
neg ebx
sbb ebx, ebx
and ebx, 0xfffffffe
add ebx, 2
cmp dword [esp + 0xf8], esi
mov eax, dword [esp + 0xe4]
jae 0x415fbe
lea eax, [esp + 0xe4]
push eax
push str.Source___s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov eax, dword [esp + 0x9c]
add esp, 0xc
cmp dword [esp + 0xa4], esi
jae 0x415fea
lea eax, [esp + 0x90]
push eax
push str.Destination___s
push 0x46fa40
xor eax, eax
call fcn.00431730
add esp, 0xc
lea edx, [esp + 0x3c]
push edx
push ebp
mov ecx, 0x45e578
call fcn.00412d30
mov esi, eax
lea eax, [esp + 0x20]
push eax
push ebp
mov ecx, 0x45e564
mov byte [esp + 0x110], 4
call fcn.00412d30
mov ecx, 8
mov byte [esp + 0x108], 5
cmp dword [esi + 0x18], ecx
jb 0x416044
mov edx, dword [esi + 4]
mov dword [esp + 0x6c], edx
jmp 0x41604b
add esi, 4
mov dword [esp + 0x6c], esi
cmp dword [eax + 0x18], ecx
jb 0x416055
mov esi, dword [eax + 4]
jmp 0x416058
lea esi, [eax + 4]
mov eax, dword [esp + 0xbc]
push str.copy
mov edi, 4
lea ecx, [esp + 0xac]
call fcn.004052d0
mov edx, dword [esp + 0x90]
test eax, eax
mov eax, 8
sete cl
cmp dword [esp + 0xa4], eax
jae 0x416096
lea edx, [esp + 0x90]
cmp dword [esp + 0xf8], eax
mov eax, dword [esp + 0xe4]
jae 0x4160ad
lea eax, [esp + 0xe4]
mov edi, dword [esp + 0x6c]
push edi
push esi
movzx ecx, cl
push ecx
mov ecx, dword [esp + 0x24]
push 1
push ebx
push edx
push eax
call fcn.0041d840
mov edi, 8
cmp dword [esp + 0x38], edi
mov esi, eax
jb 0x4160df
mov edx, dword [esp + 0x24]
push edx
call fcn.0043e965
add esp, 4
xor ebx, ebx
mov byte [esp + 0x108], 3
cmp dword [esp + 0x54], edi
mov dword [esp + 0x38], 7
mov dword [esp + 0x34], ebx
mov word [esp + 0x24], bx
jb 0x41610d
mov eax, dword [esp + 0x40]
push eax
call fcn.0043e965
add esp, 4
cmp esi, ebx
je 0x41634f
mov ecx, dword [esp + 0x18]
mov al, byte [ecx + 0x3d]
mov dl, al
neg dl
sbb edx, edx
not edx
and edx, esi
test al, al
mov dword [ecx + 0x38], edx
jne 0x41634f
call fcn.00402220
test eax, eax
jne 0x41634f
cmp esi, 2
setne al
add eax, 0x39
push eax
call fcn.00438190
add esp, 4
jmp 0x41634f
cmp byte [esp + 0x1f], 0
je 0x41624f
lea ecx, [esp + 0x3c]
push ecx
push ebp
mov ecx, 0x45ea1c
call fcn.00412d30
mov ecx, eax
mov byte [esp + 0x108], 6
mov eax, dword [ecx + 0x14]
push 0x45ddc8
mov edi, 3
call fcn.004052d0
test eax, eax
sete bl
mov byte [esp + 0x108], 3
cmp dword [esp + 0x54], esi
jb 0x4161ac
mov edx, dword [esp + 0x40]
push edx
call fcn.0043e965
add esp, 4
movzx eax, bl
mov dword [esp + 0x5c], eax
xor eax, eax
cmp dword [esp + 0xa4], esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x58], vtable.CSafeDeleteTree.0
mov dword [esp + 0x68], 1
jae 0x4161e4
lea eax, [esp + 0x90]
push eax
push str.Recursively_deleting_folder__s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov edi, dword [esp + 0x9c]
add esp, 0xc
cmp dword [esp + 0xa4], esi
jae 0x416210
lea edi, [esp + 0x90]
push 0
push 0x45ea84
push edi
lea ecx, [esp + 0x64]
call fcn.00427090
test eax, eax
jne 0x416234
mov edx, dword [esp + 0x58]
push eax
mov eax, dword [edx + 4]
push edi
lea ecx, [esp + 0x60]
call eax
cmp dword [esp + 0x64], 0
je 0x41634f
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x34], 1
jmp 0x41634f
test bl, bl
je 0x416302
cmp dword [esp + 0xa4], esi
mov eax, dword [esp + 0x90]
jae 0x41626e
lea eax, [esp + 0x90]
push eax
push str.Creating_folder__s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov eax, dword [esp + 0x9c]
add esp, 0xc
cmp dword [esp + 0xa4], esi
jae 0x41629a
lea eax, [esp + 0x90]
push eax
push str.Destination___s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov eax, dword [esp + 0x9c]
add esp, 0xc
cmp dword [esp + 0xa4], esi
jae 0x4162c6
lea eax, [esp + 0x90]
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
je 0x41634f
mov esi, dword [esp + 0x18]
mov cl, byte [esi + 0x3d]
mov dl, cl
neg dl
sbb edx, edx
not edx
and edx, eax
test cl, cl
mov dword [esi + 0x38], edx
jne 0x41634f
call fcn.00402220
test eax, eax
jne 0x41634f
push 0x3a
call fcn.00438190
add esp, 4
jmp 0x41634f
mov eax, dword [esp + 0xbc]
push str.deleteonuninstall
mov edi, 0x11
lea ecx, [esp + 0xac]
call fcn.004052d0
test eax, eax
jne 0x41634f
cmp dword [esp + 0xa4], esi
mov eax, dword [esp + 0x90]
jae 0x41633a
lea eax, [esp + 0x90]
push eax
push str.Marking_folder__s_for_delete_on_uninstall
push 0x46fa40
xor eax, eax
call fcn.00431730
add esp, 0xc
push 1
call fcn.00436e10
mov eax, dword [esp + 0x1c]
add esp, 4
cmp byte [eax + 0x3c], 0
jne 0x41677a
cmp byte [esp + 0x17], 0
je 0x41677a
xor eax, eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov byte [esp + 0x108], 7
push 5
push 0x45e9a8
lea esi, [esp + 0x28]
mov dword [esp + 0x40], 7
mov dword [esp + 0x3c], eax
mov word [esp + 0x2c], ax
call fcn.00404170
mov byte [esp + 0x108], 8
cmp dword [esp + 0xa4], 8
mov ebx, dword [esp + 0x90]
jae 0x4163c9
lea ebx, [esp + 0x90]
lea ecx, [esp + 0x20]
push ecx
lea esi, [esp + 0x40]
call fcn.00410ff0
add esp, 4
push eax
lea esi, [esp + 0x5c]
mov byte [esp + 0x10c], 9
call fcn.0040da30
mov edi, 8
cmp dword [esp + 0x54], edi
jb 0x416404
mov edx, dword [esp + 0x40]
push edx
call fcn.0043e965
add esp, 4
mov ebx, 7
xor esi, esi
mov byte [esp + 0x108], bl
cmp dword [esp + 0x38], edi
mov dword [esp + 0x54], ebx
mov dword [esp + 0x50], esi
mov word [esp + 0x40], si
jb 0x416432
mov eax, dword [esp + 0x24]
push eax
call fcn.0043e965
add esp, 4
push 5
mov dword [esp + 0x38], esi
mov word [esp + 0x28], si
push str.mode
lea esi, [esp + 0x28]
mov dword [esp + 0x40], ebx
call fcn.00404170
mov byte [esp + 0x108], 0xa
cmp dword [esp + 0xdc], edi
mov ebx, dword [esp + 0xc8]
jae 0x41646e
lea ebx, [esp + 0xc8]
lea ecx, [esp + 0x20]
push ecx
lea esi, [esp + 0x40]
call fcn.00410ff0
add esp, 4
push eax
lea esi, [esp + 0x5c]
mov byte [esp + 0x10c], 0xb
call fcn.0040da30
mov esi, 8
cmp dword [esp + 0x54], esi
jb 0x4164a9
mov edx, dword [esp + 0x40]
push edx
call fcn.0043e965
add esp, 4
xor ebx, ebx
mov byte [esp + 0x108], 7
cmp dword [esp + 0x38], esi
mov dword [esp + 0x54], 7
mov dword [esp + 0x50], ebx
mov word [esp + 0x40], bx
jb 0x4164d7
mov eax, dword [esp + 0x24]
push eax
call fcn.0043e965
add esp, 4
lea ecx, [esp + 0x70]
push ecx
push ebp
mov ecx, 0x45e564
call fcn.00412d30
mov edi, eax
mov byte [esp + 0x108], 0xc
push 0xa
push str.usequence
lea esi, [esp + 0x28]
mov dword [esp + 0x40], 7
mov dword [esp + 0x3c], ebx
mov word [esp + 0x2c], bx
call fcn.00404170
push edi
mov edx, esi
push edx
lea edi, [esp + 0x44]
mov byte [esp + 0x110], 0xd
call fcn.00424ee0
add esp, 8
push eax
lea esi, [esp + 0x5c]
mov byte [esp + 0x10c], 0xe
call fcn.0040da30
cmp dword [esp + 0x54], 8
jb 0x416550
mov eax, dword [esp + 0x40]
push eax
call fcn.0043e965
add esp, 4
mov edi, 8
cmp dword [esp + 0x38], edi
mov esi, 7
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], ebx
mov word [esp + 0x40], bx
jb 0x41657a
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0043e965
add esp, 4
mov byte [esp + 0x108], 7
cmp dword [esp + 0x88], edi
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], ebx
mov word [esp + 0x24], bx
jb 0x4165a5
mov edx, dword [esp + 0x74]
push edx
call fcn.0043e965
add esp, 4
lea eax, [esp + 0x70]
push eax
push ebp
mov ecx, 0x45ea1c
call fcn.00412d30
mov edi, eax
mov byte [esp + 0x108], 0xf
push 0x14
push str.delete_if_not_empty
lea esi, [esp + 0x28]
mov dword [esp + 0x40], 7
mov dword [esp + 0x3c], ebx
mov word [esp + 0x2c], bx
call fcn.00404170
push edi
mov ecx, esi
push ecx
lea edi, [esp + 0x44]
mov byte [esp + 0x110], 0x10
call fcn.00424ee0
add esp, 8
push eax
lea esi, [esp + 0x5c]
mov byte [esp + 0x10c], 0x11
call fcn.0040da30
cmp dword [esp + 0x54], 8
jb 0x41661e
mov edx, dword [esp + 0x40]
push edx
call fcn.0043e965
add esp, 4
mov edi, 8
cmp dword [esp + 0x38], edi
mov esi, 7
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], ebx
mov word [esp + 0x40], bx
jb 0x416648
mov eax, dword [esp + 0x24]
push eax
call fcn.0043e965
add esp, 4
mov byte [esp + 0x108], 7
cmp dword [esp + 0x88], edi
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], ebx
mov word [esp + 0x24], bx
jb 0x416673
mov ecx, dword [esp + 0x74]
push ecx
call fcn.0043e965
add esp, 4
lea edx, [esp + 0x70]
push edx
push ebp
mov ecx, 0x45e578
call fcn.00412d30
mov edi, eax
mov byte [esp + 0x108], 0x12
push 6
push str.group
lea esi, [esp + 0x28]
mov dword [esp + 0x40], 7
mov dword [esp + 0x3c], ebx
mov word [esp + 0x2c], bx
call fcn.00404170
push edi
mov eax, esi
push eax
lea edi, [esp + 0x44]
mov byte [esp + 0x110], 0x13
call fcn.00424ee0
add esp, 8
push eax
lea esi, [esp + 0x5c]
mov byte [esp + 0x10c], 0x14
call fcn.0040da30
cmp dword [esp + 0x54], 8
jb 0x4166ec
mov ecx, dword [esp + 0x40]
push ecx
call fcn.0043e965
add esp, 4
mov edi, 8
cmp dword [esp + 0x38], edi
mov esi, 7
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], ebx
mov word [esp + 0x40], bx
jb 0x416716
mov edx, dword [esp + 0x24]
push edx
call fcn.0043e965
add esp, 4
mov byte [esp + 0x108], 7
cmp dword [esp + 0x88], edi
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], ebx
mov word [esp + 0x24], bx
jb 0x416741
mov eax, dword [esp + 0x74]
push eax
call fcn.0043e965
add esp, 4
mov ecx, dword [esp + 0x18]
push str.Folder
push ecx
lea ecx, [esp + 0x60]
call fcn.0041e2a0
mov eax, dword [esp + 0x5c]
cmp eax, ebx
je 0x41677a
mov edx, dword [esp + 0x6c]
mov edi, dword [esp + 0x60]
push edx
call fcn.00411dd0
mov eax, dword [esp + 0x60]
add esp, 4
push eax
call fcn.0043e965
add esp, 4
sub dword [0x46fa60], 1
mov ecx, dword [esp + 0x18]
xor esi, esi
cmp dword [ecx + 0x38], esi
mov edi, 8
sete bl
cmp dword [esp + 0xdc], edi
jb 0x4167ab
mov edx, dword [esp + 0xc8]
push edx
call fcn.0043e965
add esp, 4
cmp dword [esp + 0xa4], edi
mov ebp, 7
mov dword [esp + 0xdc], ebp
mov dword [esp + 0xd8], esi
mov word [esp + 0xc8], si
jb 0x4167df
mov eax, dword [esp + 0x90]
push eax
call fcn.0043e965
add esp, 4
cmp dword [esp + 0xf8], edi
mov dword [esp + 0xa4], ebp
mov dword [esp + 0xa0], esi
mov word [esp + 0x90], si
jb 0x41680e
mov ecx, dword [esp + 0xe4]
push ecx
call fcn.0043e965
add esp, 4
cmp dword [esp + 0xc0], edi
mov dword [esp + 0xf8], ebp
mov dword [esp + 0xf4], esi
mov word [esp + 0xe4], si
jb 0x41683d
mov edx, dword [esp + 0xac]
push edx
call fcn.0043e965
add esp, 4
mov al, bl
mov ecx, dword [esp + 0x100]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xe8]
xor ecx, esp
call fcn.0043d02a
add esp, 0xf8
ret 8