Function at 0x401e80
Capabilities:
Create directory
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x46c
mov eax, dword [0x56c050]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
xorps xmm0, xmm0
mov dword [ebp - 0x46c], edx
push edi
mov ebx, ecx
mov dword [ebp - 0x1c], 0
push 0
mov dword [ebp - 0x468], ebx
movups xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 8], 0
movups xmmword [ebp - 0x18], xmm0
call fcn.0040a32f
push eax
call fcn.0040a084
movups xmm0, xmmword [str.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]
mov eax, dword [0x5686c4]
add esp, 8
mov dword [ebp - 0x34], eax
mov ax, word [0x5686c8]
movups xmmword [ebp - 0x64], xmm0
mov word [ebp - 0x30], ax
movups xmm0, xmmword [0x5686a4]
movups xmmword [ebp - 0x54], xmm0
movups xmm0, xmmword [0x5686b4]
movups xmmword [ebp - 0x44], xmm0
call fcn.0040a063
mov ecx, 3
xor edx, edx
div ecx
lea esi, [ecx - 3]
mov edi, edx
add edi, ecx
je 0x401f3b
lea ebx, [ecx + 0x31]
nop word [eax + eax]
call fcn.0040a063
cdq
idiv ebx
mov al, byte [ebp + edx - 0x64]
mov byte [ebp + esi - 0x2c], al
inc esi
cmp esi, edi
jb 0x401f20
mov ebx, dword [ebp - 0x468]
push 0xa
mov edx, 6
lea ecx, [ebp - 0x18]
call fcn.00401dd0
add esp, 4
call fcn.0040a063
cdq
mov ecx, 3
idiv ecx
push 0x104
push ebx
mov esi, edx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test esi, esi
jne 0x402010
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401f75
sub ecx, edx
cmp byte [ecx + ebx - 1], 0x5c
je 0x401f9b
lea edi, [ebx - 1]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x401f88
mov ax, word [0x5686cc]
mov word [edi], ax
lea edx, [ebp - 0x18]
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x401fa0
sub edx, esi
lea edi, [ebx - 1]
nop dword [eax]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x401fb0
mov ecx, edx
lea eax, [ebp - 0x264]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push 0x200
and ecx, 3
push 0
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.00407a60
mov ecx, ebx
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401fe1
push 0x100
sub ecx, edx
lea eax, [ebp - 0x264]
push eax
lea eax, [ecx + 1]
push eax
push ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea eax, [ebp - 0x264]
jmp 0x40222b
cmp esi, 1
jne 0x402100
mov ecx, ebx
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x402020
sub ecx, edx
cmp byte [ecx + ebx - 1], 0x5c
je 0x402046
lea edi, [ebx - 1]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x402033
mov ax, word [0x5686cc]
mov word [edi], ax
lea ecx, [ebx - 1]
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x402050
mov eax, dword [str.SysWOW64]
lea edi, [ebx - 1]
mov dword [ecx], eax
mov eax, dword [0x5686d4]
mov dword [ecx + 4], eax
mov al, byte [0x5686d8]
mov byte [ecx + 8], al
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x402074
mov ax, word [0x5686cc]
lea edx, [ebp - 0x18]
mov word [edi], ax
mov esi, edx
nop dword [eax]
mov al, byte [edx]
inc edx
test al, al
jne 0x402090
sub edx, esi
lea edi, [ebx - 1]
nop dword [eax]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4020a0
mov ecx, edx
lea eax, [ebp - 0x264]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push 0x200
and ecx, 3
push 0
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.00407a60
mov ecx, ebx
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4020d1
push 0x100
sub ecx, edx
lea eax, [ebp - 0x264]
push eax
lea eax, [ecx + 1]
push eax
push ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea eax, [ebp - 0x264]
jmp 0x40222b
lea edx, [ebx + 3]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x402108
sub ecx, esi
push ecx
push 0
push edx
call fcn.00407a60
add esp, 0xc
lea ecx, [ebx - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x402120
mov eax, dword [str.ProgramData]
mov dword [ecx], eax
mov eax, dword [0x5686e0]
mov dword [ecx + 4], eax
mov eax, dword [0x5686e4]
push 0
push ebx
mov dword [ecx + 8], eax
call fcn.00410df0
add esp, 8
test eax, eax
je 0x4021a3
push 0x200
lea eax, [ebp - 0x264]
push 0
push eax
call fcn.00407a60
mov ecx, ebx
add esp, 0xc
lea edx, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x402170
push 0x100
sub ecx, edx
lea eax, [ebp - 0x264]
push eax
lea eax, [ecx + 1]
push eax
push ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
lea eax, [ebp - 0x264]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea edi, [ebx - 1]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x4021a6
mov ax, word [0x5686cc]
lea edx, [ebp - 0x18]
mov word [edi], ax
mov esi, edx
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x4021c0
sub edx, esi
lea edi, [ebx - 1]
nop dword [eax]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4021d0
mov ecx, edx
lea eax, [ebp - 0x464]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push 0x200
and ecx, 3
push 0
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.00407a60
mov ecx, ebx
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x402201
push 0x100
sub ecx, edx
lea eax, [ebp - 0x464]
push eax
lea eax, [ecx + 1]
push eax
push ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea eax, [ebp - 0x464]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea edi, [ebx - 1]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x402237
mov ax, word [0x5686cc]
lea edx, [ebp - 0x2c]
mov word [edi], ax
mov esi, edx
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x402250
sub edx, esi
lea edi, [ebx - 1]
nop dword [eax]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x402260
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [ebp - 0x46c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, edx
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x402280
sub edx, esi
dec ebx
nop word [eax + eax]
mov al, byte [ebx + 1]
inc ebx
test al, al
jne 0x402290
mov ecx, edx
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040605c
mov esp, ebp
pop ebp
ret