Function at 0x415780
Capabilities:
Create directory

Disassembly:
push 0xffffffffffffffff
push 0x4525cb
mov eax, dword fs:[0]
push eax
sub esp, 0xec
mov eax, dword [0x4663e0]
xor eax, esp
mov dword [esp + 0xe8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4663e0]
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, 0x458624
mov dword [esp + 0x20], eax
call fcn.00412330
lea eax, [esp + 0xa8]
mov dword [esp + 0x108], 0
call fcn.00436480
lea edx, [esp + 0xe0]
push edx
push ebp
mov ecx, str.source
call fcn.00412330
lea eax, [esp + 0x8c]
push eax
push ebp
mov ecx, str.destination
mov byte [esp + 0x110], 1
call fcn.00412330
lea ecx, [esp + 0xc4]
push ecx
push ebp
mov ecx, 0x458660
mov byte [esp + 0x110], 2
call fcn.00412330
lea eax, [esp + 0xc4]
mov byte [esp + 0x108], 3
call fcn.00436480
mov eax, dword [esp + 0xbc]
push str.copy
mov edi, 4
lea ecx, [esp + 0xac]
call fcn.004052b0
test eax, eax
mov esi, 8
je 0x41589d
mov eax, dword [esp + 0xbc]
push str.copyonly
mov edi, esi
lea ecx, [esp + 0xac]
call fcn.004052b0
test eax, eax
mov byte [esp + 0x16], 0
jne 0x4158a2
mov byte [esp + 0x16], 1
mov eax, dword [esp + 0xbc]
push str.deleteoninstall
mov edi, 0xf
lea ecx, [esp + 0xac]
call fcn.004052b0
test eax, eax
mov eax, dword [esp + 0xbc]
push str.copy
mov edi, 4
lea ecx, [esp + 0xac]
sete byte [esp + 0x23]
call fcn.004052b0
test eax, eax
je 0x41590d
mov eax, dword [esp + 0xbc]
push str.deleteonuninstall
mov edi, 0x11
lea ecx, [esp + 0xac]
call fcn.004052b0
test eax, eax
mov byte [esp + 0x17], 0
jne 0x415912
mov byte [esp + 0x17], 1
mov eax, dword [esp + 0xbc]
push str.create
mov edi, 6
lea ecx, [esp + 0xac]
call fcn.004052b0
test eax, eax
mov eax, dword [ebp + 4]
push eax
push str.Folder
sete bl
push str.__s____d_
push 0x4676a0
xor eax, eax
call fcn.0042cad0
add dword [0x4676c0], 1
push 0
call fcn.00432010
add esp, 0x14
cmp byte [esp + 0x16], 0
je 0x415b69
mov eax, dword [esp + 0xd8]
push str.ifnewer
mov edi, 7
lea ecx, [esp + 0xc8]
call fcn.004052b0
test eax, eax
jne 0x415992
mov ebx, 1
jmp 0x4159bb
mov eax, dword [esp + 0xd8]
push str.ifNotexists
mov edi, 0xb
lea ecx, [esp + 0xc8]
call fcn.004052b0
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 0x4159d2
lea eax, [esp + 0xe4]
push eax
push str.Source___s
push 0x4676a0
xor eax, eax
call fcn.0042cad0
mov eax, dword [esp + 0x9c]
add esp, 0xc
cmp dword [esp + 0xa4], esi
jae 0x4159fe
lea eax, [esp + 0x90]
push eax
push str.Destination___s
push 0x4676a0
xor eax, eax
call fcn.0042cad0
add esp, 0xc
lea edx, [esp + 0x3c]
push edx
push ebp
mov ecx, 0x4584d8
call fcn.00412330
mov esi, eax
lea eax, [esp + 0x20]
push eax
push ebp
mov ecx, 0x4584c4
mov byte [esp + 0x110], 4
call fcn.00412330
mov ecx, 8
mov byte [esp + 0x108], 5
cmp dword [esi + 0x18], ecx
jb 0x415a58
mov edx, dword [esi + 4]
mov dword [esp + 0x6c], edx
jmp 0x415a5f
add esi, 4
mov dword [esp + 0x6c], esi
cmp dword [eax + 0x18], ecx
jb 0x415a69
mov esi, dword [eax + 4]
jmp 0x415a6c
lea esi, [eax + 4]
mov eax, dword [esp + 0xbc]
push str.copy
mov edi, 4
lea ecx, [esp + 0xac]
call fcn.004052b0
mov edx, dword [esp + 0x90]
test eax, eax
mov eax, 8
sete cl
cmp dword [esp + 0xa4], eax
jae 0x415aaa
lea edx, [esp + 0x90]
cmp dword [esp + 0xf8], eax
mov eax, dword [esp + 0xe4]
jae 0x415ac1
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.0041cfe0
mov edi, 8
cmp dword [esp + 0x38], edi
mov esi, eax
jb 0x415af3
mov edx, dword [esp + 0x24]
push edx
call fcn.00439059
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 0x415b21
mov eax, dword [esp + 0x40]
push eax
call fcn.00439059
add esp, 4
cmp esi, ebx
je 0x415d63
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 0x415d63
call fcn.004021b0
test eax, eax
jne 0x415d63
cmp esi, 2
setne al
add eax, 0x39
push eax
call fcn.00432a50
add esp, 4
jmp 0x415d63
cmp byte [esp + 0x1f], 0
je 0x415c63
lea ecx, [esp + 0x3c]
push ecx
push ebp
mov ecx, 0x45897c
call fcn.00412330
mov ecx, eax
mov byte [esp + 0x108], 6
mov eax, dword [ecx + 0x14]
push 0x457d28
mov edi, 3
call fcn.004052b0
test eax, eax
sete bl
mov byte [esp + 0x108], 3
cmp dword [esp + 0x54], esi
jb 0x415bc0
mov edx, dword [esp + 0x40]
push edx
call fcn.00439059
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 0x415bf8
lea eax, [esp + 0x90]
push eax
push str.Recursively_deleting_folder__s
push 0x4676a0
xor eax, eax
call fcn.0042cad0
mov edi, dword [esp + 0x9c]
add esp, 0xc
cmp dword [esp + 0xa4], esi
jae 0x415c24
lea edi, [esp + 0x90]
push 0
push 0x4589e4
push edi
lea ecx, [esp + 0x64]
call fcn.00426790
test eax, eax
jne 0x415c48
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 0x415d63
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x34], 1
jmp 0x415d63
test bl, bl
je 0x415d16
cmp dword [esp + 0xa4], esi
mov eax, dword [esp + 0x90]
jae 0x415c82
lea eax, [esp + 0x90]
push eax
push str.Creating_folder__s
push 0x4676a0
xor eax, eax
call fcn.0042cad0
mov eax, dword [esp + 0x9c]
add esp, 0xc
cmp dword [esp + 0xa4], esi
jae 0x415cae
lea eax, [esp + 0x90]
push eax
push str.Destination___s
push 0x4676a0
xor eax, eax
call fcn.0042cad0
mov eax, dword [esp + 0x9c]
add esp, 0xc
cmp dword [esp + 0xa4], esi
jae 0x415cda
lea eax, [esp + 0x90]
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
je 0x415d63
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 0x415d63
call fcn.004021b0
test eax, eax
jne 0x415d63
push 0x3a
call fcn.00432a50
add esp, 4
jmp 0x415d63
mov eax, dword [esp + 0xbc]
push str.deleteonuninstall
mov edi, 0x11
lea ecx, [esp + 0xac]
call fcn.004052b0
test eax, eax
jne 0x415d63
cmp dword [esp + 0xa4], esi
mov eax, dword [esp + 0x90]
jae 0x415d4e
lea eax, [esp + 0x90]
push eax
push str.Marking_folder__s_for_delete_on_uninstall
push 0x4676a0
xor eax, eax
call fcn.0042cad0
add esp, 0xc
push 1
call fcn.00432010
mov eax, dword [esp + 0x1c]
add esp, 4
cmp byte [eax + 0x3c], 0
jne 0x41618e
cmp byte [esp + 0x17], 0
je 0x41618e
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 0x458908
lea esi, [esp + 0x28]
mov dword [esp + 0x40], 7
mov dword [esp + 0x3c], eax
mov word [esp + 0x2c], ax
call fcn.00404160
mov byte [esp + 0x108], 8
cmp dword [esp + 0xa4], 8
mov ebx, dword [esp + 0x90]
jae 0x415ddd
lea ebx, [esp + 0x90]
lea ecx, [esp + 0x20]
push ecx
lea esi, [esp + 0x40]
call fcn.004105f0
add esp, 4
push eax
lea esi, [esp + 0x5c]
mov byte [esp + 0x10c], 9
call fcn.0040d140
mov edi, 8
cmp dword [esp + 0x54], edi
jb 0x415e18
mov edx, dword [esp + 0x40]
push edx
call fcn.00439059
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 0x415e46
mov eax, dword [esp + 0x24]
push eax
call fcn.00439059
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.00404160
mov byte [esp + 0x108], 0xa
cmp dword [esp + 0xdc], edi
mov ebx, dword [esp + 0xc8]
jae 0x415e82
lea ebx, [esp + 0xc8]
lea ecx, [esp + 0x20]
push ecx
lea esi, [esp + 0x40]
call fcn.004105f0
add esp, 4
push eax
lea esi, [esp + 0x5c]
mov byte [esp + 0x10c], 0xb
call fcn.0040d140
mov esi, 8
cmp dword [esp + 0x54], esi
jb 0x415ebd
mov edx, dword [esp + 0x40]
push edx
call fcn.00439059
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 0x415eeb
mov eax, dword [esp + 0x24]
push eax
call fcn.00439059
add esp, 4
lea ecx, [esp + 0x70]
push ecx
push ebp
mov ecx, 0x4584c4
call fcn.00412330
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.00404160
push edi
mov edx, esi
push edx
lea edi, [esp + 0x44]
mov byte [esp + 0x110], 0xd
call fcn.004246d0
add esp, 8
push eax
lea esi, [esp + 0x5c]
mov byte [esp + 0x10c], 0xe
call fcn.0040d140
cmp dword [esp + 0x54], 8
jb 0x415f64
mov eax, dword [esp + 0x40]
push eax
call fcn.00439059
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 0x415f8e
mov ecx, dword [esp + 0x24]
push ecx
call fcn.00439059
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 0x415fb9
mov edx, dword [esp + 0x74]
push edx
call fcn.00439059
add esp, 4
lea eax, [esp + 0x70]
push eax
push ebp
mov ecx, 0x45897c
call fcn.00412330
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.00404160
push edi
mov ecx, esi
push ecx
lea edi, [esp + 0x44]
mov byte [esp + 0x110], 0x10
call fcn.004246d0
add esp, 8
push eax
lea esi, [esp + 0x5c]
mov byte [esp + 0x10c], 0x11
call fcn.0040d140
cmp dword [esp + 0x54], 8
jb 0x416032
mov edx, dword [esp + 0x40]
push edx
call fcn.00439059
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 0x41605c
mov eax, dword [esp + 0x24]
push eax
call fcn.00439059
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 0x416087
mov ecx, dword [esp + 0x74]
push ecx
call fcn.00439059
add esp, 4
lea edx, [esp + 0x70]
push edx
push ebp
mov ecx, 0x4584d8
call fcn.00412330
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.00404160
push edi
mov eax, esi
push eax
lea edi, [esp + 0x44]
mov byte [esp + 0x110], 0x13
call fcn.004246d0
add esp, 8
push eax
lea esi, [esp + 0x5c]
mov byte [esp + 0x10c], 0x14
call fcn.0040d140
cmp dword [esp + 0x54], 8
jb 0x416100
mov ecx, dword [esp + 0x40]
push ecx
call fcn.00439059
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 0x41612a
mov edx, dword [esp + 0x24]
push edx
call fcn.00439059
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 0x416155
mov eax, dword [esp + 0x74]
push eax
call fcn.00439059
add esp, 4
mov ecx, dword [esp + 0x18]
push str.Folder
push ecx
lea ecx, [esp + 0x60]
call fcn.0041da40
mov eax, dword [esp + 0x5c]
cmp eax, ebx
je 0x41618e
mov edx, dword [esp + 0x6c]
mov edi, dword [esp + 0x60]
push edx
call fcn.00411400
mov eax, dword [esp + 0x60]
add esp, 4
push eax
call fcn.00439059
add esp, 4
sub dword [0x4676c0], 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 0x4161bf
mov edx, dword [esp + 0xc8]
push edx
call fcn.00439059
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 0x4161f3
mov eax, dword [esp + 0x90]
push eax
call fcn.00439059
add esp, 4
cmp dword [esp + 0xf8], edi
mov dword [esp + 0xa4], ebp
mov dword [esp + 0xa0], esi
mov word [esp + 0x90], si
jb 0x416222
mov ecx, dword [esp + 0xe4]
push ecx
call fcn.00439059
add esp, 4
cmp dword [esp + 0xc0], edi
mov dword [esp + 0xf8], ebp
mov dword [esp + 0xf4], esi
mov word [esp + 0xe4], si
jb 0x416251
mov edx, dword [esp + 0xac]
push edx
call fcn.00439059
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.0043782a
add esp, 0xf8
ret 8