Function at 0x4105d0
Capabilities:
Copy file
Create directory
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x620
mov eax, dword [0x4395ec]
xor eax, esp
mov dword [esp + 0x61c], eax
push esi
push edi
xor eax, eax
push 0x206
push eax
mov word [esp + 0x420], ax
lea eax, [esp + 0x422]
push eax
call fcn.0041a0a0
add esp, 0xc
xor eax, eax
mov word [esp + 8], ax
push 0x206
push eax
lea eax, [esp + 0x12]
push eax
call fcn.0041a0a0
add esp, 0xc
xor eax, eax
mov word [esp + 0x210], ax
push 0x206
push eax
lea eax, [esp + 0x21a]
push eax
call fcn.0041a0a0
add esp, 0xc
lea eax, [esp + 0x418]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
cmp dword [0x43a7ac], 0
je 0x4107c9
lea ecx, [esp + 0x418]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x410672
sub ecx, edx
sar ecx, 1
js 0x4106a2
jmp 0x410690
cmp word [esp + ecx*2 + 0x418], 0x5c
je 0x410761
dec ecx
jns 0x410690
lea eax, [esp + 0x418]
push eax
call fcn.00416faa
add esp, 4
xor ecx, ecx
jmp 0x4106c0
movzx eax, word [ecx + str.C:ProgramDataMicrosoftDRM]
lea ecx, [ecx + 2]
mov word [esp + ecx + 6], ax
test ax, ax
jne 0x4106c0
lea eax, [esp + 8]
push eax
call fcn.00416faa
add esp, 4
lea eax, [esp + 8]
push eax
lea eax, [esp + 0x41c]
push eax
call fcn.00416b9b
add esp, 8
test eax, eax
jne 0x4109b3
lea eax, [esp + 8]
push eax
lea ecx, [esp + 0x41c]
call fcn.00410f00
test eax, eax
jne 0x410978
lea eax, [esp + 0x210]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea ecx, [esp + 0x210]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x410734
sub ecx, edx
lea eax, [esp + 0x210]
sar ecx, 1
push eax
lea eax, [esp + 0xc]
cmp word [esp + ecx*2 + 0x212], 0x5c
jne 0x41077e
push 0x43546c
jmp 0x410783
add ecx, ecx
cmp ecx, 0x208
jae 0x4109c9
xor eax, eax
mov word [esp + ecx + 0x418], ax
jmp 0x4106a2
push str._s_tmp
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [esp + 8]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea eax, [esp + 8]
push eax
lea ecx, [esp + 0x41c]
call fcn.00410f00
mov esi, eax
xor edx, edx
nop
movzx ecx, word [esp + edx + 8]
lea edx, [edx + 2]
mov word [edx + 0x43b2da], cx
test cx, cx
jne 0x4107b0
jmp 0x410974
lea eax, [esp + 0x418]
push eax
call fcn.00416faa
add esp, 4
xor ecx, ecx
jmp 0x4107e0
movzx eax, word [ecx + str.C:ProgramDataMicrosoftDRM]
lea ecx, [ecx + 2]
mov word [esp + ecx + 6], ax
test ax, ax
jne 0x4107e0
lea edi, [esp + 8]
add edi, 0xfffffffe
jmp 0x410800
mov ax, word [edi + 2]
lea edi, [edi + 2]
test ax, ax
jne 0x410800
mov eax, dword [0x434f7c]
lea ecx, [esp + 8]
mov dword [edi], eax
add ecx, 0xfffffffe
lea ebx, [ebx]
mov ax, word [ecx + 2]
lea ecx, [ecx + 2]
test ax, ax
jne 0x410820
mov eax, dword [str.stool.exe]
mov dword [ecx], eax
mov eax, dword [0x43548c]
mov dword [ecx + 4], eax
mov eax, dword [0x435490]
mov dword [ecx + 8], eax
mov eax, dword [0x435494]
mov dword [ecx + 0xc], eax
mov eax, dword [0x435498]
mov dword [ecx + 0x10], eax
lea eax, [esp + 8]
push eax
call fcn.00416faa
add esp, 4
lea ecx, [esp + 8]
lea eax, [esp + 0x418]
jmp 0x410870
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x410896
test dx, dx
je 0x410892
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x410896
add eax, 4
add ecx, 4
test dx, dx
jne 0x410870
xor eax, eax
jmp 0x41089b
sbb eax, eax
or eax, 1
test eax, eax
je 0x4109b3
mov edi, dword [sym.imp.KERNEL32.dll_CopyFileW]
lea eax, [esp + 8]
push 0
push eax
lea eax, [esp + 0x420]
push eax
call edi
test eax, eax
jne 0x410978
lea eax, [esp + 0x210]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea ecx, [esp + 0x210]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4108e0
mov esi, dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [esp + 0x210]
sub ecx, edx
sar ecx, 1
push eax
lea eax, [esp + 0xc]
cmp word [esp + ecx*2 + 0x212], 0x5c
jne 0x410913
push 0x43546c
jmp 0x410918
push str._s_tmp
push eax
call esi
add esp, 0xc
lea eax, [esp + 8]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push str.stool.exe
lea eax, [esp + 0x214]
push eax
push str._s_s
push eax
call esi
add esp, 0x10
lea eax, [esp + 0x210]
push 0
push eax
lea eax, [esp + 0x420]
push eax
call edi
mov esi, eax
xor ecx, ecx
jmp 0x410960
movzx eax, word [esp + ecx + 8]
lea ecx, [ecx + 2]
mov word [ecx + 0x43b2da], ax
test ax, ax
jne 0x410960
test esi, esi
je 0x4109b3
call fcn.004109d0
test eax, eax
jne 0x41099a
call fcn.00410bb0
pop edi
pop esi
mov ecx, dword [esp + 0x61c]
xor ecx, esp
call fcn.00415b03
mov esp, ebp
pop ebp
ret
mov eax, 1
pop edi
pop esi
mov ecx, dword [esp + 0x61c]
xor ecx, esp
call fcn.00415b03
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x624]
xor eax, eax
pop edi
pop esi
xor ecx, esp
call fcn.00415b03
mov esp, ebp
pop ebp
ret
call fcn.00416801
int3