Function at 0x402920
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 0x402a15
mov eax, dword [ecx + 8]
and eax, dword [ecx + 0xc]
cmp eax, 0xffffffff
je 0x402a15
mov ecx, dword [ebp - 0x264]
mov ecx, dword [edi + ecx]
add ecx, esi
call fcn.00402220
mov esi, eax
push 0
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push esi
call fcn.0041bce6
mov eax, dword [ebp - 0x264]
add esp, 4
mov ecx, dword [edi + eax]
mov edi, dword [ebp - 0x25c]
add ecx, edi
call fcn.00402220
mov esi, eax
push esi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push esi
call fcn.0041bce6
mov ecx, dword [ebp - 0x270]
add esp, 4
jmp 0x402a17
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 0x402a40
ja 0x402a66
cmp dword [ecx + 0x10], 0
ja 0x402a66
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.0041badb
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x264]
mov eax, dword [esi + 8]
and eax, 0x10
or eax, 0
je 0x402ab3
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.00402920
add esp, 0x24
jmp 0x403325
push 0x1000000
call fcn.00422c22
add esp, 4
mov dword [ebp - 0x260], eax
test eax, eax
je 0x403366
mov ecx, dword [esi]
add ecx, edi
call fcn.00402220
mov edi, eax
push 0x449f1c
push edi
call fcn.0042560d
add esp, 8
mov dword [ebp - 0x26c], eax
cmp byte [ebp - 0x235], 0
jne 0x402b44
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.00402420
add esp, 0x1c
lea ecx, [ebp - 0x10]
mov edx, eax
push ecx
mov ecx, dword [ebp - 0x274]
call fcn.00402500
add esp, 4
push edi
call fcn.0041bce6
mov eax, dword [esi + 0x30]
add esp, 4
or eax, dword [esi + 0x34]
je 0x40324f
push ebx
call fcn.00425cc1
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 0x402b7b
cmp edi, edx
je 0x402b9a
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.0042632e
add esp, 0x10
mov ecx, dword [esi + 0x38]
mov eax, ecx
and eax, dword [esi + 0x3c]
cmp eax, 0xffffffff
je 0x402ec9
mov edx, dword [esi + 0x40]
mov eax, edx
and eax, dword [esi + 0x44]
cmp eax, 0xffffffff
je 0x402de1
lea eax, [edx + ecx]
add eax, dword [esi + 0x30]
push eax
call fcn.00422c22
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 0x402c77
and eax, dword [ebp - 0x240]
cmp eax, 0xffffffff
jne 0x402c3a
push ebx
call fcn.00425cc1
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.004023a0
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.00402830
add esp, 0x18
jmp 0x402c85
push edx
push ecx
mov edx, ebx
mov ecx, edi
call fcn.004023a0
add esp, 8
mov edx, dword [esi + 0x40]
mov ecx, edi
add edx, edi
call fcn.00405140
mov eax, dword [ebp - 0x258]
mov al, byte [eax + 0x30]
cmp al, 0xff
je 0x402dc2
movzx edx, al
mov eax, edx
shl eax, 0xb
cmp dword [esi + 0x3c], 0
jb 0x402dc2
ja 0x402cbf
cmp dword [esi + 0x38], eax
jbe 0x402dc2
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.0041fbf0
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 0x402db1
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 0x402d6e
push ebx
call fcn.00425cc1
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.004023a0
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.00402830
add esp, 0x18
jmp 0x402dc2
push eax
push dword [ebp - 0x240]
mov edx, ebx
call fcn.004023a0
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.00403380
mov ecx, dword [esi + 0x38]
add ecx, edi
add ecx, dword [esi + 0x40]
jmp 0x4030e7
mov eax, dword [esi + 0x30]
add eax, ecx
push eax
call fcn.00422c22
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 0x402ea7
and eax, dword [ebp - 0x244]
cmp eax, 0xffffffff
jne 0x402e5e
push ebx
call fcn.00425cc1
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.004023a0
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.00402830
mov edx, dword [esi + 0x38]
add esp, 0x18
add edx, edi
mov ecx, edi
call fcn.00403380
mov ecx, dword [esi + 0x38]
jmp 0x4030e5
push edx
push ecx
mov edx, ebx
mov ecx, edi
call fcn.004023a0
mov edx, dword [esi + 0x38]
add esp, 8
add edx, edi
mov ecx, edi
call fcn.00403380
mov ecx, dword [esi + 0x38]
jmp 0x4030e5
mov ecx, dword [esi + 0x40]
mov eax, ecx
and eax, dword [esi + 0x44]
cmp eax, 0xffffffff
mov eax, dword [esi + 0x30]
je 0x403106
add eax, ecx
push eax
call fcn.00422c22
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 0x402f94
and eax, dword [ebp - 0x244]
cmp eax, 0xffffffff
jne 0x402f57
push ebx
call fcn.00425cc1
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.004023a0
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.00402830
add esp, 0x18
jmp 0x402fa2
push edx
push ecx
mov edx, ebx
mov ecx, edi
call fcn.004023a0
add esp, 8
mov edx, dword [esi + 0x40]
mov ecx, edi
add edx, edi
call fcn.00405140
mov eax, dword [ebp - 0x258]
mov al, byte [eax + 0x30]
cmp al, 0xff
je 0x4030e2
movzx edx, al
mov eax, edx
shl eax, 0xb
cmp dword [esi + 0x34], 0
jb 0x4030e2
ja 0x402fdc
cmp dword [esi + 0x30], eax
jbe 0x4030e2
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.0041fbf0
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 0x4030cb
mov eax, dword [ebp - 0x250]
and eax, dword [ebp - 0x244]
cmp eax, 0xffffffff
jne 0x403086
push ebx
call fcn.00425cc1
mov ecx, dword [ebp - 0x24c]
add esp, 4
mov dword [ebp - 0x250], eax
mov dword [ebp - 0x244], edx
jmp 0x403088
mov ecx, edx
mov edx, dword [ebp - 0x248]
mov eax, dword [ebp - 0x23c]
push edx
push eax
mov edx, ebx
call fcn.004023a0
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.00402830
add esp, 0x18
jmp 0x4030e2
mov ecx, dword [ebp - 0x24c]
mov edx, ebx
push eax
push dword [ebp - 0x23c]
call fcn.004023a0
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.00402320
push edi
call fcn.00422c07
add esp, 0xc
jmp 0x40324f
mov ecx, dword [esi + 0x34]
xorps xmm0, xmm0
movlpd qword [ebp - 0x254], xmm0
test ecx, ecx
jb 0x40324f
ja 0x403126
test eax, eax
je 0x40324f
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 0x403169
cmp edi, 0x1000000
jbe 0x403170
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 0x4031ef
and eax, ecx
cmp eax, 0xffffffff
jne 0x4031ae
push dword [ebp - 0x268]
call fcn.00425cc1
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.004023a0
push dword [ebp - 0x250]
mov edx, dword [ebp - 0x248]
push dword [ebp - 0x244]
mov ecx, dword [ebp - 0x260]
push ebx
push edi
call fcn.00402830
add esp, 0x18
jmp 0x403205
mov edx, dword [ebp - 0x268]
mov ecx, dword [ebp - 0x260]
push ebx
push edi
call fcn.004023a0
add esp, 8
mov edx, dword [ebp - 0x26c]
mov ecx, dword [ebp - 0x260]
push ebx
push edi
call fcn.00402320
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 0x403153
ja 0x40324f
cmp edx, eax
jb 0x403153
push dword [ebp - 0x26c]
call fcn.00422fd6
add esp, 4
push dword [ebp - 0x260]
call fcn.00422c07
mov ecx, dword [esi]
add esp, 4
add ecx, dword [ebp - 0x25c]
call fcn.00402220
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.0041bce6
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.00402220
push dword [esi + 8]
mov edi, eax
push edi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push edi
call fcn.0041bce6
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 0x402a60
ja 0x402a40
cmp edx, dword [ecx + 0x10]
mov edx, dword [ebp - 0x264]
jb 0x402a66
jmp 0x402a40
mov ecx, dword [ebp - 8]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0041badb
mov esp, ebp
pop ebp
ret