Function at 0x408bf0
Capabilities:
Check if file exists
Check os version
Copy file
Create process on windows
Enumerate files on windows

Disassembly:
push 0xffffffffffffffff
push 0x42be12
mov eax, dword fs:[0]
push eax
sub esp, 0x278
mov eax, dword [0x441dac]
xor eax, esp
mov dword [esp + 0x274], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x441dac]
xor eax, esp
push eax
lea eax, [esp + 0x28c]
mov dword fs:[0], eax
xor edi, edi
mov ebx, 0xf
mov dword [esp + 0x294], edi
mov dword [esp + 0xb0], ebx
mov dword [esp + 0xac], edi
mov byte [esp + 0x9c], 0
mov byte [esp + 0x294], 1
call fcn.0040f911
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x408c71
push 0x80004005
call fcn.00401090
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x18], esi
lea ecx, [esp + 0x98]
push ecx
mov byte [esp + 0x298], 2
call fcn.004044f0
add esp, 4
test al, al
jne 0x408d2d
lea eax, [esi - 0x10]
mov byte [esp + 0x294], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x408cc5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0xb0], 0x10
jb 0x408cdf
mov ecx, dword [esp + 0x9c]
push ecx
call fcn.0040f57f
add esp, 4
mov eax, dword [esp + 0x29c]
add eax, 0xfffffff0
mov dword [esp + 0xb0], ebx
mov dword [esp + 0xac], edi
mov byte [esp + 0x9c], 0
mov dword [esp + 0x294], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x408d23
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x4e24
jmp 0x409363
mov eax, dword [esp + 0x9c]
mov esi, 0x10
cmp dword [esp + 0xb0], esi
jae 0x408d49
lea eax, [esp + 0x9c]
push eax
lea ecx, [esp + 0x1c]
push 0x42f028
push ecx
call fcn.00403ab0
mov ebx, dword [esp + 0x2a8]
mov ebp, dword [esp + 0x24]
push ebx
push ebp
push str.templog:_InstallHIDXPKBFiles___strCfgPath__s___n_t_t_t_tFixName__s___n.
call fcn.00404820
push 0x94
lea edx, [esp + 0xd0]
push edi
push edx
call fcn.00418130
add esp, 0x24
lea eax, [esp + 0xb4]
push eax
mov dword [esp + 0xb8], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [esp + 0xb8], 5
jne 0x4092e3
cmp dword [esp + 0xbc], 1
jne 0x4092e3
mov edi, str.Service_Pack
lea esi, [esp + 0xc8]
mov ecx, 0xd
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x408dd7
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x409296
mov edi, str.Service_Pack_1
lea esi, [esp + 0xc8]
mov ecx, 0xf
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x408dfb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x409296
push str.hotfix_
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x24]
push edx
call fcn.004030e0
lea ecx, [esp + 0x2a8]
push ecx
push eax
lea edx, [esp + 0x38]
push edx
mov byte [esp + 0x2ac], 3
call fcn.00403020
push str.Language
push eax
lea eax, [esp + 0x34]
push eax
mov byte [esp + 0x2b8], 4
call fcn.004030e0
add esp, 0x24
lea ecx, [esp + 0x24]
call fcn.004023c0
lea ecx, [esp + 0x1c]
mov byte [esp + 0x294], 7
call fcn.004023c0
push str.hotfix_
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x4c]
push edx
call fcn.004030e0
lea ecx, [esp + 0x2a8]
push ecx
push eax
lea edx, [esp + 0x5c]
push edx
mov byte [esp + 0x2ac], 8
call fcn.00403020
push str.Genericupdate
push eax
lea eax, [esp + 0x40]
push eax
mov byte [esp + 0x2b8], 9
call fcn.004030e0
add esp, 0x24
lea ecx, [esp + 0x48]
call fcn.004023c0
lea ecx, [esp + 0x44]
mov byte [esp + 0x294], 0xc
call fcn.004023c0
mov ecx, dword [esp + 0x14]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
push ecx
call esi
test eax, eax
je 0x409251
mov edx, dword [esp + 0x20]
push edx
call esi
test eax, eax
je 0x409251
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
mov ecx, dword [esp + 0x14]
movzx edi, ax
mov eax, dword [esp + 0x20]
movzx esi, di
push esi
push eax
push ecx
push str.TemplogDevSetupSub.cpp_lang_path:_s__n_t_t_t_text_path:_s_nlang_id:0x_x_n
call fcn.00404820
and esi, 0xff
lea eax, [esi - 1]
add esp, 0x10
cmp eax, 0x1e
ja case.0x408f25.2
jmp dword [eax*4 + 0x40938c]
push str.Arabic_
jmp 0x409005
cmp di, 0x416
jne 0x408f47
push str.Brazilian_
jmp 0x409005
cmp di, 0x816
jne case.0x408f25.2
push str.Portuguese_
jmp 0x409005
cmp di, 0x804
jne 0x408f6d
push str.CHS_
jmp 0x409005
cmp di, 0x404
jne case.0x408f25.2
push str.CHT_
jmp 0x409005
push str.Czech_
jmp 0x409005
push str.Danish_
jmp 0x409005
push str.Dutch_
jmp 0x409005
push str.English_
jmp 0x409005
push str.Finnish_
jmp 0x409005
push str.French_
jmp 0x409005
push str.German_
jmp 0x409005
push str.Greek_
jmp 0x409005
push str.Hebrew_
jmp 0x409005
push str.Hungarian_
jmp 0x409005
push str.Italian_
jmp 0x409005
push str.Japanese_
jmp 0x409005
push str.Korean_
jmp 0x409005
push str.Norwegian_
jmp 0x409005
push str.Polish_
jmp 0x409005
push str.Russian_
jmp 0x409005
push str.Spanish_
jmp 0x409005
push str.Swedish_
jmp 0x409005
push str.Turkish_
lea ecx, [esp + 0x18]
call fcn.00404020
lea ecx, [esp + 0x1c]
call fcn.00402390
lea ecx, [esp + 0x28]
call fcn.00402390
push 0x42fbf4
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x2c]
push eax
mov byte [esp + 0x2a0], 0xe
call fcn.004030e0
add esp, 0xc
mov edx, dword [esp + 0x24]
lea ecx, [esp + 0x148]
push ecx
push edx
mov byte [esp + 0x29c], 0xf
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x409148
mov esi, dword [sym.imp.KERNEL32.dll_CopyFileA]
mov ebp, dword [sym.imp.KERNEL32.dll_FindNextFileA]
mov bl, 0x11
lea eax, [esp + 0x174]
push 0x42fbf0
push eax
call fcn.00419352
add esp, 8
test eax, eax
je 0x409134
lea ecx, [esp + 0x174]
push 0x42fbec
push ecx
call fcn.00419352
add esp, 8
test eax, eax
je 0x409134
lea edx, [esp + 0x174]
push edx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x54]
push ecx
call fcn.004030e0
add esp, 0xc
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x298], 0x10
call fcn.004032a0
lea ecx, [esp + 0x4c]
mov byte [esp + 0x294], 0xf
call fcn.004023c0
lea edx, [esp + 0x174]
push edx
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x38]
push ecx
call fcn.004030e0
add esp, 0xc
push eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0x298], bl
call fcn.004032a0
lea ecx, [esp + 0x30]
mov byte [esp + 0x294], 0xf
call fcn.004023c0
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x1c]
push 0
push edx
push eax
call esi
lea ecx, [esp + 0x148]
push ecx
push edi
call ebp
cmp eax, 1
je 0x409073
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
push str.update.exe
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x34]
push eax
call fcn.004030e0
mov ecx, dword [esp + 0x38]
push 0
push ecx
push str.TemplogDevSetupSub.cpp_InstallHIDXPKBFiles_1___run_path:_s__n_t_tbFindlang:_d_n
mov byte [esp + 0x2ac], 0x12
call fcn.00404820
push 0x44
lea edx, [esp + 0x70]
push 0
push edx
call fcn.00418130
mov edx, dword [esp + 0x50]
add esp, 0x24
xor eax, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x58]
push ecx
push 0
push 0
push 0
push 0
push 0
push 0
push str.__quiet__norestart
push edx
mov dword [esp + 0x7c], 0x44
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x4091d4
push eax
jmp 0x409207
mov ecx, dword [esp + 0x34]
push 0xffffffffffffffff
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [esp + 0x34]
lea edx, [esp + 0x50]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov ecx, dword [esp + 0x34]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
call esi
mov edx, dword [esp + 0x38]
push edx
call esi
push 1
push 0
push ecx
lea eax, [esp + 0x2a8]
mov ecx, esp
mov dword [esp + 0x3c], esp
push eax
call fcn.00402a30
call fcn.00405a30
add esp, 0xc
lea ecx, [esp + 0x2c]
call fcn.004023c0
lea ecx, [esp + 0x24]
call fcn.004023c0
lea ecx, [esp + 0x28]
call fcn.004023c0
lea ecx, [esp + 0x1c]
mov byte [esp + 0x294], 0xc
call fcn.004023c0
push str.TemplogDevSetupSub.cpp_InstallHIDXPKBFiles_exit
call fcn.00404820
add esp, 4
lea ecx, [esp + 0x20]
call fcn.004023c0
lea ecx, [esp + 0x14]
call fcn.004023c0
lea ecx, [esp + 0x18]
call fcn.004023c0
lea ecx, [esp + 0x98]
call fcn.00402b50
lea ecx, [esp + 0x29c]
call fcn.004023c0
jmp 0x409361
lea eax, [ebp - 0x10]
mov byte [esp + 0x294], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4092ba
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x98]
call fcn.00402b50
lea eax, [ebx - 0x10]
mov dword [esp + 0x294], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x409355
lea eax, [ebp - 0x10]
mov byte [esp + 0x294], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409307
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0xb0], esi
jb 0x409320
mov ecx, dword [esp + 0x9c]
push ecx
call fcn.0040f57f
add esp, 4
lea eax, [ebx - 0x10]
mov dword [esp + 0xb0], 0xf
mov dword [esp + 0xac], edi
mov byte [esp + 0x9c], 0
mov dword [esp + 0x294], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x409361
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x28c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x274]
xor ecx, esp
call fcn.0041811d
add esp, 0x284
ret