Function at 0x4028f0
Capabilities:
Create directory
Get common file path
Set current directory
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x288
mov eax, dword [0x450008]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
push edi
mov dword [ebp - 0x278], edx
mov esi, ecx
mov dword [ebp - 0x25c], esi
mov eax, dword [ebp + 8]
mov dword [ebp - 0x264], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x258], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x270], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x288], eax
mov eax, dword [ebp + 0x1c]
mov ebx, dword [ebp + 0x14]
mov dword [ebp - 0x27c], eax
mov al, byte [ebp + 0x24]
mov byte [ebp - 0x235], al
mov byte [ebp - 0x284], al
mov eax, dword [ebp + 0x28]
mov dword [ebp - 0x274], eax
lea eax, [ebp - 0x21c]
push eax
push 0x104
mov dword [ebp - 0x268], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov ecx, dword [ebp - 0x270]
mov edi, dword [ecx]
mov eax, edi
and eax, dword [ecx + 4]
cmp eax, 0xffffffff
je 0x4029e5
mov eax, dword [ecx + 8]
and eax, dword [ecx + 0xc]
cmp eax, 0xffffffff
je 0x4029e5
mov ecx, dword [ebp - 0x264]
mov ecx, dword [edi + ecx]
add ecx, esi
call fcn.004022f0
mov esi, eax
push 0
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push esi
call fcn.0041b826
mov eax, dword [ebp - 0x264]
add esp, 4
mov ecx, dword [edi + eax]
mov edi, dword [ebp - 0x25c]
add ecx, edi
call fcn.004022f0
mov esi, eax
push esi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push esi
call fcn.0041b826
mov ecx, dword [ebp - 0x270]
add esp, 4
jmp 0x4029e7
mov edi, esi
mov esi, dword [ecx + 0x18]
mov edx, dword [ebp - 0x264]
add esi, edx
cmp dword [ecx + 0x14], 0
mov dword [ebp - 0x24c], esi
mov dword [ebp - 0x280], 0
jb 0x402a10
ja 0x402a36
cmp dword [ecx + 0x10], 0
ja 0x402a36
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0041b61b
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x264]
mov eax, dword [esi + 8]
and eax, 0x10
or eax, 0
je 0x402a83
push dword [ebp - 0x274]
mov eax, dword [esi + 0x28]
mov ecx, edi
push dword [ebp - 0x284]
add eax, dword [ebp - 0x278]
push dword [ebp + 0x20]
push dword [ebp - 0x27c]
push dword [ebp - 0x288]
push ebx
push eax
push dword [ebp - 0x258]
push edx
mov edx, dword [ebp - 0x278]
call fcn.004028f0
add esp, 0x24
jmp 0x4032f5
push 0x1000000
call fcn.00422762
add esp, 4
mov dword [ebp - 0x260], eax
test eax, eax
je 0x403336
mov ecx, dword [esi]
add ecx, edi
call fcn.004022f0
mov edi, eax
push 0x449f1c
push edi
call fcn.0042514d
add esp, 8
mov dword [ebp - 0x26c], eax
cmp byte [ebp - 0x235], 0
jne 0x402b14
push dword [ebp - 0x274]
mov eax, dword [ebp - 0x270]
push dword [ebp - 0x25c]
mov edx, dword [ebp - 0x27c]
push dword [ebp - 0x278]
push dword [ebp - 0x264]
push esi
push eax
mov eax, dword [ebp - 0x258]
push dword [ebp + 0x20]
mov ecx, dword [eax + 0x28]
call fcn.004024f0
add esp, 0x1c
lea ecx, [ebp - 0x10]
mov edx, eax
push ecx
mov ecx, dword [ebp - 0x274]
call fcn.00402630
add esp, 4
push edi
call fcn.0041b826
mov eax, dword [esi + 0x30]
add esp, 4
or eax, dword [esi + 0x34]
je 0x40321f
push ebx
call fcn.00425801
mov ecx, eax
mov edi, edx
mov eax, dword [ebp - 0x258]
add esp, 4
mov eax, dword [eax + 8]
add eax, dword [esi + 0x28]
cdq
cmp ecx, eax
jne 0x402b4b
cmp edi, edx
je 0x402b6a
mov eax, dword [ebp - 0x258]
push 0
mov ecx, dword [eax + 8]
add ecx, dword [esi + 0x28]
mov eax, dword [eax + 0xc]
adc eax, dword [esi + 0x2c]
push eax
push ecx
push ebx
call fcn.00425e6e
add esp, 0x10
mov ecx, dword [esi + 0x38]
mov eax, ecx
and eax, dword [esi + 0x3c]
cmp eax, 0xffffffff
je 0x402e99
mov edx, dword [esi + 0x40]
mov eax, edx
and eax, dword [esi + 0x44]
cmp eax, 0xffffffff
je 0x402db1
lea eax, [edx + ecx]
add eax, dword [esi + 0x30]
push eax
call fcn.00422762
mov ecx, dword [esi + 0x34]
xor edx, edx
add esp, 4
mov dword [ebp - 0x240], ecx
cmp byte [ebp - 0x235], dl
lea ecx, [ebp - 0x10]
mov edi, eax
mov eax, dword [esi + 0x30]
cmovne ecx, edx
mov dword [ebp - 0x250], eax
mov edx, dword [esi + 0x44]
mov dword [ebp - 0x248], ecx
cmp dword [ebp - 0x248], 0
mov ecx, dword [esi + 0x40]
mov dword [ebp - 0x23c], ecx
mov dword [ebp - 0x244], edx
je 0x402c47
and eax, dword [ebp - 0x240]
cmp eax, 0xffffffff
jne 0x402c0a
push ebx
call fcn.00425801
mov ecx, dword [ebp - 0x23c]
add esp, 4
mov dword [ebp - 0x240], edx
mov edx, dword [ebp - 0x244]
mov dword [ebp - 0x250], eax
push edx
mov eax, edi
mov dword [ebp - 0x24c], ebx
push ecx
mov edx, ebx
mov ecx, eax
call fcn.00402470
push dword [ebp - 0x240]
mov edx, dword [ebp - 0x248]
mov ecx, edi
push dword [ebp - 0x250]
push dword [ebp - 0x244]
push dword [ebp - 0x23c]
call fcn.00402800
add esp, 0x18
jmp 0x402c55
push edx
push ecx
mov edx, ebx
mov ecx, edi
call fcn.00402470
add esp, 8
mov edx, dword [esi + 0x40]
mov ecx, edi
add edx, edi
call fcn.00404de0
mov eax, dword [ebp - 0x258]
mov al, byte [eax + 0x30]
cmp al, 0xff
je 0x402d92
movzx edx, al
mov eax, edx
shl eax, 0xb
cmp dword [esi + 0x3c], 0
jb 0x402d92
ja 0x402c8f
cmp dword [esi + 0x38], eax
jbe 0x402d92
mov ecx, dword [esi + 0x40]
shl edx, 0xa
push edx
lea eax, [ecx + edx]
sub ecx, edx
add ecx, dword [esi + 0x38]
add eax, edi
push eax
add ecx, edi
push ecx
call fcn.0041f730
mov eax, dword [esi + 0x44]
add esp, 0xc
mov ebx, dword [esi + 0x38]
mov edx, dword [esi + 0x40]
mov dword [ebp - 0x23c], eax
mov eax, dword [ebp - 0x258]
movzx ecx, byte [eax + 0x30]
mov eax, ecx
shl eax, 0xb
sub ebx, eax
mov eax, dword [esi + 0x3c]
mov dword [ebp - 0x240], ebx
mov ebx, dword [ebp - 0x268]
sbb eax, 0
shl ecx, 0xa
add ecx, edx
mov dword [ebp - 0x244], eax
add ecx, edi
cmp dword [ebp - 0x248], 0
mov dword [ebp - 0x250], ecx
je 0x402d81
add edx, dword [esi + 0x30]
mov eax, dword [ebp - 0x23c]
adc eax, dword [esi + 0x34]
mov dword [ebp - 0x23c], eax
mov eax, edx
and eax, dword [ebp - 0x23c]
mov dword [ebp - 0x24c], edx
cmp eax, 0xffffffff
jne 0x402d3e
push ebx
call fcn.00425801
mov ecx, dword [ebp - 0x250]
add esp, 4
mov dword [ebp - 0x24c], eax
mov dword [ebp - 0x23c], edx
mov edx, dword [ebp - 0x244]
mov eax, dword [ebp - 0x240]
push edx
push eax
mov edx, ebx
call fcn.00402470
push dword [ebp - 0x23c]
mov edx, dword [ebp - 0x248]
push dword [ebp - 0x24c]
mov ecx, dword [ebp - 0x250]
push dword [ebp - 0x244]
push dword [ebp - 0x240]
call fcn.00402800
add esp, 0x18
jmp 0x402d92
push eax
push dword [ebp - 0x240]
mov edx, ebx
call fcn.00402470
add esp, 8
mov eax, dword [esi + 0x40]
mov edx, dword [esi + 0x38]
add edx, eax
add edx, edi
lea ecx, [eax + edi]
call fcn.00403350
mov ecx, dword [esi + 0x38]
add ecx, edi
add ecx, dword [esi + 0x40]
jmp 0x4030b7
mov eax, dword [esi + 0x30]
add eax, ecx
push eax
call fcn.00422762
mov ecx, dword [esi + 0x34]
xor edx, edx
add esp, 4
mov dword [ebp - 0x244], ecx
cmp byte [ebp - 0x235], dl
lea ecx, [ebp - 0x10]
mov edi, eax
mov eax, dword [esi + 0x30]
cmovne ecx, edx
mov dword [ebp - 0x24c], eax
mov edx, dword [esi + 0x3c]
mov dword [ebp - 0x248], ecx
cmp dword [ebp - 0x248], 0
mov ecx, dword [esi + 0x38]
mov dword [ebp - 0x240], ecx
mov dword [ebp - 0x250], edx
je 0x402e77
and eax, dword [ebp - 0x244]
cmp eax, 0xffffffff
jne 0x402e2e
push ebx
call fcn.00425801
mov ecx, dword [ebp - 0x240]
add esp, 4
mov dword [ebp - 0x244], edx
mov edx, dword [ebp - 0x250]
mov dword [ebp - 0x24c], eax
push edx
mov eax, edi
mov edx, ebx
push ecx
mov ecx, eax
call fcn.00402470
push dword [ebp - 0x244]
mov edx, dword [ebp - 0x248]
mov ecx, edi
push dword [ebp - 0x24c]
push dword [ebp - 0x250]
push dword [ebp - 0x240]
call fcn.00402800
mov edx, dword [esi + 0x38]
add esp, 0x18
add edx, edi
mov ecx, edi
call fcn.00403350
mov ecx, dword [esi + 0x38]
jmp 0x4030b5
push edx
push ecx
mov edx, ebx
mov ecx, edi
call fcn.00402470
mov edx, dword [esi + 0x38]
add esp, 8
add edx, edi
mov ecx, edi
call fcn.00403350
mov ecx, dword [esi + 0x38]
jmp 0x4030b5
mov ecx, dword [esi + 0x40]
mov eax, ecx
and eax, dword [esi + 0x44]
cmp eax, 0xffffffff
mov eax, dword [esi + 0x30]
je 0x4030d6
add eax, ecx
push eax
call fcn.00422762
mov ecx, dword [esi + 0x34]
xor edx, edx
add esp, 4
mov dword [ebp - 0x244], ecx
cmp byte [ebp - 0x235], dl
lea ecx, [ebp - 0x10]
mov edi, eax
mov eax, dword [esi + 0x30]
cmovne ecx, edx
mov dword [ebp - 0x250], eax
mov edx, dword [esi + 0x44]
mov dword [ebp - 0x240], ecx
cmp dword [ebp - 0x240], 0
mov ecx, dword [esi + 0x40]
mov dword [ebp - 0x23c], ecx
mov dword [ebp - 0x248], edx
je 0x402f64
and eax, dword [ebp - 0x244]
cmp eax, 0xffffffff
jne 0x402f27
push ebx
call fcn.00425801
mov ecx, dword [ebp - 0x23c]
add esp, 4
mov dword [ebp - 0x244], edx
mov edx, dword [ebp - 0x248]
mov dword [ebp - 0x250], eax
push edx
mov eax, edi
mov dword [ebp - 0x24c], ebx
push ecx
mov edx, ebx
mov ecx, eax
call fcn.00402470
push dword [ebp - 0x244]
mov edx, dword [ebp - 0x240]
mov ecx, edi
push dword [ebp - 0x250]
push dword [ebp - 0x248]
push dword [ebp - 0x23c]
call fcn.00402800
add esp, 0x18
jmp 0x402f72
push edx
push ecx
mov edx, ebx
mov ecx, edi
call fcn.00402470
add esp, 8
mov edx, dword [esi + 0x40]
mov ecx, edi
add edx, edi
call fcn.00404de0
mov eax, dword [ebp - 0x258]
mov al, byte [eax + 0x30]
cmp al, 0xff
je 0x4030b2
movzx edx, al
mov eax, edx
shl eax, 0xb
cmp dword [esi + 0x34], 0
jb 0x4030b2
ja 0x402fac
cmp dword [esi + 0x30], eax
jbe 0x4030b2
mov ecx, dword [esi + 0x40]
shl edx, 0xa
push edx
lea eax, [ecx + edx]
sub ecx, edx
add ecx, dword [esi + 0x30]
add eax, edi
push eax
add ecx, edi
push ecx
call fcn.0041f730
mov eax, dword [esi + 0x30]
add esp, 0xc
mov edx, dword [esi + 0x34]
mov dword [ebp - 0x23c], eax
add eax, dword [esi + 0x40]
mov dword [ebp - 0x248], edx
adc edx, dword [esi + 0x44]
mov dword [ebp - 0x250], eax
mov eax, dword [ebp - 0x258]
mov dword [ebp - 0x244], edx
movzx edx, byte [eax + 0x30]
mov eax, edx
shl eax, 0xb
sub dword [ebp - 0x23c], eax
mov eax, dword [ebp - 0x248]
sbb eax, 0
shl edx, 0xa
add edx, dword [esi + 0x40]
add edx, edi
mov dword [ebp - 0x248], eax
cmp dword [ebp - 0x240], 0
mov dword [ebp - 0x24c], edx
je 0x40309b
mov eax, dword [ebp - 0x250]
and eax, dword [ebp - 0x244]
cmp eax, 0xffffffff
jne 0x403056
push ebx
call fcn.00425801
mov ecx, dword [ebp - 0x24c]
add esp, 4
mov dword [ebp - 0x250], eax
mov dword [ebp - 0x244], edx
jmp 0x403058
mov ecx, edx
mov edx, dword [ebp - 0x248]
mov eax, dword [ebp - 0x23c]
push edx
push eax
mov edx, ebx
call fcn.00402470
push dword [ebp - 0x244]
mov edx, dword [ebp - 0x240]
push dword [ebp - 0x250]
mov ecx, dword [ebp - 0x24c]
push dword [ebp - 0x248]
push dword [ebp - 0x23c]
call fcn.00402800
add esp, 0x18
jmp 0x4030b2
mov ecx, dword [ebp - 0x24c]
mov edx, ebx
push eax
push dword [ebp - 0x23c]
call fcn.00402470
add esp, 8
mov ecx, dword [esi + 0x40]
add ecx, edi
push dword [esi + 0x34]
mov edx, dword [ebp - 0x26c]
push dword [esi + 0x30]
call fcn.004023f0
push edi
call fcn.00422747
add esp, 0xc
jmp 0x40321f
mov ecx, dword [esi + 0x34]
xorps xmm0, xmm0
movlpd qword [ebp - 0x254], xmm0
test ecx, ecx
jb 0x40321f
ja 0x4030f6
test eax, eax
je 0x40321f
xor edi, edi
lea edx, [ebp - 0x10]
cmp byte [ebp - 0x235], 0
cmovne edx, edi
mov dword [ebp - 0x248], edx
mov edx, dword [ebp - 0x250]
mov dword [ebp - 0x240], edx
mov edx, dword [ebp - 0x254]
mov dword [ebp - 0x23c], edx
mov edi, eax
mov ebx, ecx
sub edi, edx
sbb ebx, dword [ebp - 0x240]
jne 0x403139
cmp edi, 0x1000000
jbe 0x403140
mov edi, 0x1000000
xor ebx, ebx
add eax, edx
mov dword [ebp - 0x244], eax
adc ecx, dword [ebp - 0x240]
cmp dword [ebp - 0x248], 0
mov dword [ebp - 0x250], ecx
je 0x4031bf
and eax, ecx
cmp eax, 0xffffffff
jne 0x40317e
push dword [ebp - 0x268]
call fcn.00425801
add esp, 4
mov dword [ebp - 0x244], eax
mov dword [ebp - 0x250], edx
mov ecx, dword [ebp - 0x260]
mov edx, ebx
mov esi, dword [ebp - 0x24c]
mov eax, edi
push edx
mov edx, dword [ebp - 0x268]
push eax
call fcn.00402470
push dword [ebp - 0x250]
mov edx, dword [ebp - 0x248]
push dword [ebp - 0x244]
mov ecx, dword [ebp - 0x260]
push ebx
push edi
call fcn.00402800
add esp, 0x18
jmp 0x4031d5
mov edx, dword [ebp - 0x268]
mov ecx, dword [ebp - 0x260]
push ebx
push edi
call fcn.00402470
add esp, 8
mov edx, dword [ebp - 0x26c]
mov ecx, dword [ebp - 0x260]
push ebx
push edi
call fcn.004023f0
mov edx, dword [ebp - 0x23c]
add esp, 8
mov ecx, dword [esi + 0x34]
add edx, edi
mov edi, dword [ebp - 0x240]
mov eax, dword [esi + 0x30]
adc edi, ebx
mov dword [ebp - 0x23c], edx
mov dword [ebp - 0x240], edi
cmp edi, ecx
jb 0x403123
ja 0x40321f
cmp edx, eax
jb 0x403123
push dword [ebp - 0x26c]
call fcn.00422b16
add esp, 4
push dword [ebp - 0x260]
call fcn.00422747
mov ecx, dword [esi]
add esp, 4
add ecx, dword [ebp - 0x25c]
call fcn.004022f0
push 0
push 0x80
push 3
push 0
push 0
mov edi, eax
push 0x40000000
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
push edi
mov ebx, eax
call fcn.0041b826
mov eax, dword [esi + 0x1c]
add esp, 4
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
mov dword [ebp - 0x228], eax
mov eax, dword [esi + 0x24]
mov dword [ebp - 0x220], eax
lea eax, [ebp - 0x224]
push eax
lea eax, [ebp - 0x22c]
mov dword [ebp - 0x230], ecx
mov ecx, dword [esi + 0x18]
push eax
lea eax, [ebp - 0x234]
mov dword [ebp - 0x22c], ecx
mov ecx, dword [esi + 0x20]
push eax
push ebx
mov dword [ebp - 0x234], edx
mov dword [ebp - 0x224], ecx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esi]
add ecx, dword [ebp - 0x25c]
call fcn.004022f0
push dword [esi + 8]
mov edi, eax
push edi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push edi
call fcn.0041b826
mov ebx, dword [ebp - 0x268]
add esp, 4
mov edi, dword [ebp - 0x25c]
mov ecx, dword [ebp - 0x270]
add esi, 0x48
mov edx, dword [ebp - 0x280]
xor eax, eax
inc edx
mov dword [ebp - 0x24c], esi
mov dword [ebp - 0x280], edx
cmp eax, dword [ecx + 0x14]
jb 0x402a30
ja 0x402a10
cmp edx, dword [ecx + 0x10]
mov edx, dword [ebp - 0x264]
jb 0x402a36
jmp 0x402a10
mov ecx, dword [ebp - 8]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0041b61b
mov esp, ebp
pop ebp
ret