Function at 0x401960
Capabilities:
Create directory
Delete file
Query environment variable

Disassembly:
push 0xffffffffffffffff
push 0x405fdb
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x998
mov eax, dword [esp + 0x9a8]
push ebx
xor ebx, ebx
push ebp
push esi
cmp eax, ebx
push edi
mov dword [esp + 0x18], ecx
je 0x401bfc
cmp dword [esp + 0x9bc], ebx
je 0x401bfc
mov ecx, 0xff
xor eax, eax
lea edi, [esp + 0x1d]
mov byte [esp + 0x1c], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x1c]
push 0x104
push eax
push str._ProgramFiles_
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsA]
test eax, eax
je 0x401bfc
mov ecx, dword [str.Sinfor]
mov edx, dword [0x40826c]
mov dword [esp + 0x41c], ecx
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x424]
mov dword [esp + 0x420], edx
mov edx, dword [str.ClientComponent]
rep stosd dword es:[edi], eax
mov eax, dword [str.SSL]
mov cl, byte [0x408250]
mov dword [esp + 0x520], eax
mov byte [esp + 0x524], cl
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x525]
mov dword [esp + 0x728], ebx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, dword [0x40825c]
lea ebp, [esp + 0x41c]
stosb byte es:[edi], al
mov eax, dword [0x408258]
mov dword [esp + 0x624], edx
mov edx, dword [0x408260]
mov dword [esp + 0x628], eax
mov al, byte [0x408264]
mov dword [esp + 0x62c], ecx
mov byte [esp + 0x634], al
mov ecx, 0x3c
xor eax, eax
lea edi, [esp + 0x635]
mov dword [esp + 0x630], edx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x4f
xor eax, eax
lea edi, [esp + 0x72c]
rep stosd dword es:[edi], eax
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
inc ebx
add ebp, 0x104
lea edx, [esp + 0x1c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x728]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x401af5
lea edx, [esp + 0x1c]
push 0
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
je 0x401b0e
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp ebx, 3
jge 0x401b25
jmp 0x401a98
lea ecx, [esp + 0x1c]
push ecx
push str.CreateDirectory__sfailed_
call fcn.004016e0
add esp, 8
jmp 0x401bfc
lea edi, [esp + 0x1c]
or ecx, 0xffffffff
xor eax, eax
mov ebx, dword [sym.imp.MSVCRT.dll_sprintf]
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, 1
lea ebp, [esp + ecx + 0x1c]
mov ecx, 0x4f
xor eax, eax
lea edi, [esp + 0x86c]
mov dword [esp + 0x868], 0
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x9bc]
mov eax, esi
push edi
push eax
push str._d__s
push ebp
inc esi
call ebx
add esp, 0x10
lea edx, [esp + 0x868]
lea eax, [esp + 0x1c]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x401b95
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
jmp 0x401b42
push edi
push ebp
call dword [sym.imp.MSVCRT.dll_strstr]
add esp, 8
test eax, eax
je 0x401ba7
mov byte [eax], 0
lea ecx, [esp + 0x10]
call fcn.004011f0
mov edx, dword [esp + 0x9b8]
lea ecx, [esp + 0x1c]
push ecx
push edx
lea ecx, [esp + 0x18]
mov dword [esp + 0x9b8], 0
call fcn.00401230
test eax, eax
push edi
jne 0x401c19
lea eax, [esp + 0x20]
push eax
push str.Decompress_to___s_s__failed_
call fcn.004016e0
add esp, 0xc
mov dword [esp + 0x9b0], 0xffffffff
lea ecx, [esp + 0x10]
call fcn.00401220
xor eax, eax
mov ecx, dword [esp + 0x9a8]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x9a4
ret 8
lea ecx, [esp + 0x20]
push ecx
push str.Decompress_to___s_s_
call fcn.004016e0
or ebx, 0xffffffff
xor eax, eax
mov ecx, ebx
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x1c]
mov esi, edi
mov ebp, ecx
mov edi, edx
mov ecx, ebx
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x1c]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x1c]
call fcn.004018d0
test eax, eax
jne 0x401c85
lea ecx, [esp + 0x1c]
push ecx
push str.RegisterDll:_s
call fcn.004016e0
add esp, 8
mov dword [esp + 0x9b0], ebx
jmp 0x401bf3
lea ecx, [esp + 0x10]
mov dword [esp + 0x9b0], ebx
call fcn.00401220
mov eax, 1
jmp 0x401bfe