Function at 0x4023e0
Capabilities:
Copy file
Create directory
Create process on windows
Get common file path
Get program files directory
Persist via windows service
Set file attributes
Set registry value

Disassembly:
sub esp, 0x624
mov eax, dword [0x41b00c]
xor eax, esp
mov dword [esp + 0x620], eax
push ebp
push esi
push edi
lea eax, [esp + 0x21c]
push eax
xor ebp, ebp
push ebp
push ebp
push 0x26
push ebp
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
push str.KASHU
lea ecx, [esp + 0x220]
push ecx
call esi
lea edx, [esp + 0x21c]
push edx
push 0x414930
call fcn.004020a0
lea eax, [esp + 0x224]
push ebp
push eax
call fcn.00406165
mov edi, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
add esp, 0x10
test eax, eax
je 0x40246f
push ebp
lea ecx, [esp + 0x220]
push ecx
call edi
test eax, eax
jne 0x40246f
push 0x414920
call fcn.004020a0
add esp, 4
jmp 0x402896
push 0x41491c
lea edx, [esp + 0x220]
push edx
call esi
push str.UsbQuickStart
lea eax, [esp + 0x220]
push eax
call esi
lea ecx, [esp + 0x21c]
push ecx
push 0x414930
call fcn.004020a0
lea edx, [esp + 0x224]
push 0
push edx
call fcn.00406165
add esp, 0x10
test eax, eax
je 0x4024d7
push 0
lea eax, [esp + 0x220]
push eax
call edi
test eax, eax
jne 0x4024d7
push str.EXIT_2
call fcn.004020a0
add esp, 4
jmp 0x402896
mov esi, dword [sym.imp.USER32.dll_wsprintfW]
push ebx
push 0x41472c
push 0x41c4a0
lea ecx, [esp + 0x430]
push 0x41477c
push ecx
call esi
push 0x41472c
lea edx, [esp + 0x234]
push edx
lea eax, [esp + 0x30]
push 0x41477c
push eax
call esi
lea ecx, [esp + 0x448]
push ecx
push 0x414930
call fcn.004020a0
lea edx, [esp + 0x40]
push edx
push 0x414930
call fcn.004020a0
mov edi, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
add esp, 0x30
push 0x80
lea eax, [esp + 0x1c]
push eax
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_CopyFileW]
push 0
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x430]
push edx
call ebx
test eax, eax
jne 0x40256b
push str.EXIT_3
jmp 0x40288d
push 0x80
lea eax, [esp + 0x1c]
push eax
call edi
push str.UsbEntCGService2.exe
push 0x41c4a0
lea ecx, [esp + 0x430]
push 0x41477c
push ecx
call esi
push str.UsbEntCGService2.exe
lea edx, [esp + 0x234]
push edx
lea eax, [esp + 0x30]
push 0x41477c
push eax
call esi
lea ecx, [esp + 0x448]
push ecx
push 0x414930
call fcn.004020a0
lea edx, [esp + 0x40]
push edx
push 0x414930
call fcn.004020a0
add esp, 0x30
push 0x80
lea eax, [esp + 0x1c]
push eax
call edi
push 0
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x430]
push edx
call ebx
test eax, eax
jne 0x4025f8
push str.EXIT_4
jmp 0x40288d
push 0x80
lea eax, [esp + 0x1c]
push eax
call edi
push 0x414694
push 0x41c4a0
lea ecx, [esp + 0x430]
push 0x41477c
push ecx
call esi
push 0x414694
lea edx, [esp + 0x234]
push edx
lea eax, [esp + 0x30]
push 0x41477c
push eax
call esi
lea ecx, [esp + 0x448]
push ecx
push 0x414930
call fcn.004020a0
lea edx, [esp + 0x40]
push edx
push 0x414930
call fcn.004020a0
add esp, 0x30
push 0x80
lea eax, [esp + 0x1c]
push eax
call edi
push 0
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x430]
push edx
call ebx
test eax, eax
jne 0x402685
push str.EXIT_5
jmp 0x40288d
push 0x80
lea eax, [esp + 0x1c]
push eax
call edi
push str.UsbEnterRun.exe
call fcn.00405230
push str.UsbEnterRun.exe
push 0x41c4a0
lea ecx, [esp + 0x434]
push 0x41477c
push ecx
call esi
push str.UsbEnterRun.exe
lea edx, [esp + 0x238]
push edx
lea eax, [esp + 0x34]
push 0x41477c
push eax
call esi
lea ecx, [esp + 0x44c]
push ecx
push 0x414930
call fcn.004020a0
lea edx, [esp + 0x44]
push edx
push 0x414930
call fcn.004020a0
add esp, 0x34
push 0x80
lea eax, [esp + 0x1c]
push eax
call edi
push 0
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x430]
push edx
call ebx
test eax, eax
jne 0x40271c
push str.EXIT_6
jmp 0x40288d
push 0x80
lea eax, [esp + 0x1c]
push eax
call edi
push 5
lea ecx, [esp + 0x224]
push ecx
push 0
lea edx, [esp + 0x24]
push edx
push 0x4148a4
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
push 0x414838
push 0x414930
mov dword [esp + 0x18], ebp
call fcn.004020a0
add esp, 8
push 0
lea eax, [esp + 0x14]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push 0x414838
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x402888
mov ecx, dword [0x41c930]
push 4
lea edx, [esp + 0x18]
push edx
push 4
push eax
mov eax, dword [esp + 0x20]
push 0x414828
xor ecx, 0x5a
push eax
mov dword [esp + 0x2c], ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x41472c
lea edx, [esp + 0x224]
push edx
lea eax, [esp + 0x20]
push 0x41477c
push eax
call esi
lea ecx, [esp + 0x28]
push ecx
push 0x414930
call fcn.004020a0
lea edx, [esp + 0x30]
push edx
push 0x41c938
push str.UsbEntCGService_v4
call fcn.00403740
add esp, 0x24
test eax, eax
jne 0x402807
push str.EXIT_8
jmp 0x40288d
push str.UsbEntCGService_v4
call fcn.00403820
add esp, 4
test eax, eax
jne 0x40281f
push str.EXIT_9
jmp 0x40288d
push str.UsbEntCGService2.exe
lea eax, [esp + 0x224]
push eax
lea ecx, [esp + 0x20]
push 0x41477c
push ecx
call esi
lea edx, [esp + 0x28]
push edx
push 0x414930
call fcn.004020a0
lea eax, [esp + 0x30]
push eax
push 0x41c6a8
push str.UsbEntCGService2_v4
call fcn.00403740
add esp, 0x24
test eax, eax
jne 0x402869
push str.EXIT_10
jmp 0x40288d
push str.UsbEntCGService2_v4
call fcn.00403820
add esp, 4
test eax, eax
jne 0x402881
push str.EXIT_11
jmp 0x40288d
mov ebp, 1
jmp 0x402895
push str.EXIT_7
call fcn.004020a0
add esp, 4
pop ebx
mov ecx, dword [esp + 0x62c]
pop edi
pop esi
mov eax, ebp
pop ebp
xor ecx, esp
call fcn.00405622
add esp, 0x624
ret