Function at 0x406b30
Capabilities:
Copy file
Get disk information
Get geographical location
Identify system language via api
Move file
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x174
push ebx
push esi
push edi
mov eax, dword [0x55c92c]
mov dword [ebp - 0x10c], eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetComputerNameExA]
mov ebx, eax
movzx ecx, word [ebp - 0xac]
sub ebx, ecx
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
add ebx, eax
sub ebx, dword [ebp - 0x10c]
mov byte [ebp - 0x81], bl
mov edx, dword [ebp - 0x10c]
or edx, 0x6db65
mov esi, edx
xor edi, edi
movzx eax, word [ebp - 0xac]
mov ebx, dword [ebp - 0x10c]
sub ebx, eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_OpenJobObjectW]
sub ebx, eax
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetInformationJobObject]
add ebx, eax
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressW]
lea ecx, [ebx + eax - 0x1af9b]
xor edx, edx
and ecx, dword [ebp - 0x70]
and edx, dword [ebp - 0x6c]
or esi, ecx
or edi, edx
movzx eax, byte [ebp - 0x81]
cdq
or esi, eax
or edi, edx
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultUILanguage]
movzx ebx, ax
push 0
call dword [sym.imp.KERNEL32.dll_DeleteAtom]
movzx eax, ax
sub ebx, eax
xor ecx, ecx
or esi, ebx
or edi, ecx
mov dword [ebp - 0x10c], esi
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateSemaphoreA]
movzx edx, word [ebp - 0xac]
movzx ecx, byte [ebp - 0x81]
lea edx, [edx + ecx + 0x609d2]
and eax, edx
xor ecx, ecx
mov edx, dword [ebp - 0x10c]
xor esi, esi
mov edi, dword [ebp - 0x70]
sub edi, edx
mov edx, dword [ebp - 0x6c]
sbb edx, esi
and edi, 0xfffbc62a
mov esi, dword [ebp - 0x10c]
add esi, 0xa382
xor ebx, ebx
and edi, esi
and edx, ebx
or eax, edi
or ecx, edx
mov dword [ebp - 0x10c], eax
push 0
call dword [sym.imp.KERNEL32.dll_AddAtomA]
movzx eax, ax
mov ecx, dword [ebp - 0x10c]
lea edx, [ecx + eax + 0x68988]
mov esi, edx
xor edi, edi
add esi, dword [ebp - 0x70]
adc edi, dword [ebp - 0x6c]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
and eax, 0x708ef
xor ecx, ecx
xor esi, eax
xor edi, ecx
mov dword [ebp - 0x10c], esi
mov esi, dword [ebp - 0x10c]
sub esi, dword [ebp - 0x10c]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CopyFileA]
sub esi, eax
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetFileTime]
sub esi, eax
movzx edx, word [ebp - 0xac]
sub esi, edx
mov dword [ebp - 0x10c], esi
movzx esi, word [ebp - 0xac]
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetProfileStringW]
cmp esi, eax
jne 0x406d42
mov esi, dword [ebp - 0x10c]
sub esi, dword [ebp - 0x10c]
mov eax, dword [ebp - 0x10c]
add eax, dword [ebp - 0x10c]
add eax, dword [ebp - 0x10c]
movzx edi, word [ebp - 0xac]
add eax, dword [ebp - 0x10c]
add edi, eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetProcessPriorityBoost]
mov ecx, dword [ebp - 0x10c]
lea edx, [ecx + eax - 0x630ad]
and edi, edx
or esi, edi
mov dword [ebp - 0x10c], esi
jmp 0x406d6d
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_OpenWaitableTimerW]
and eax, dword [ebp - 0x10c]
mov ecx, 0xfffba895
sub ecx, dword [ebp - 0x10c]
add ecx, 0x56aaf
or eax, ecx
mov byte [ebp - 0x81], al
movzx edx, byte [ebp - 0x81]
mov esi, 0x2fcf0
sub esi, edx
sub esi, 0x4d046
sub esi, dword [ebp - 0x10c]
sub esi, dword [ebp - 0x10c]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateHardLinkA]
and esi, eax
mov dword [ebp - 0x10c], esi
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressW]
mov esi, dword [ebp - 0x10c]
sub esi, eax
push 0
call dword [sym.imp.KERNEL32.dll_DeleteAtom]
movzx eax, ax
add esi, eax
xor edi, edi
mov ecx, dword [ebp - 0x10c]
sub ecx, 0x58fc6
xor edx, edx
add ecx, dword [ebp - 0x70]
adc edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x10c]
xor ebx, ebx
sub ecx, eax
sbb edx, ebx
mov eax, dword [ebp - 0x70]
mov edx, dword [ebp - 0x6c]
call fcn.0043dfd0
and esi, eax
and edi, edx
mov dword [ebp - 0x10c], esi
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateWaitableTimerA]
cmp eax, 0x65756
je 0x406e22
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetBinaryTypeA]
cmp dword [ebp - 0x10c], eax
jne 0x406e88
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
mov esi, eax
sub esi, 0xf76d1
movzx ecx, byte [ebp - 0x81]
sub esi, ecx
and esi, 0x127e3
or esi, 0x57fba
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_DnsHostnameToComputerNameA]
mov edi, eax
movzx edx, word [ebp - 0xac]
sub edi, edx
call dword [sym.imp.KERNEL32.dll_GetConsoleCP]
sub edi, eax
add edi, 0x3e5d
sub edi, dword [ebp - 0x10c]
sub edi, 0x57e72
or esi, edi
mov dword [ebp - 0x10c], esi
jmp 0x406e9b
mov eax, dword [ebp - 0x10c]
add eax, 0xe86e9
xor ecx, ecx
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], ecx
movzx edx, word [ebp - 0xac]
cmp edx, 0x7ba06
je 0x406eb9
push 0
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 0x57657
je 0x406ec5
mov dword [ebp - 0x10c], 0x34e1f
jmp 0x406ed8
mov eax, dword [ebp - 0x10c]
or eax, 0x78cda
xor ecx, ecx
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], ecx
mov edx, dword [ebp - 0x10c]
xor eax, eax
mov dword [ebp - 0x150], edx
mov dword [ebp - 0x14c], eax
mov ecx, dword [ebp - 0x70]
cmp ecx, dword [ebp - 0x150]
jne 0x406f02
mov edx, dword [ebp - 0x6c]
cmp edx, dword [ebp - 0x14c]
je 0x406f0e
cmp dword [ebp - 0x10c], 0x7d2c
jne 0x406f6b
movzx esi, byte [ebp - 0x81]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
mov edi, eax
add edi, 0x282db
movzx ebx, word [ebp - 0xac]
add ebx, dword [ebp - 0x10c]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
add ebx, eax
movzx eax, byte [ebp - 0x81]
lea ecx, [ebx + eax - 0x65188]
movzx edx, word [ebp - 0xac]
add ecx, edx
and edi, ecx
or esi, edi
mov dword [ebp - 0x10c], esi
jmp 0x406f91
movzx eax, word [ebp - 0xac]
add eax, 0x9d35
sub eax, dword [ebp - 0x10c]
sub eax, 0x82963
movzx ecx, word [ebp - 0xac]
and eax, ecx
mov dword [ebp - 0x10c], eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_ReleaseSemaphore]
and eax, dword [ebp - 0x10c]
and eax, dword [ebp - 0x10c]
mov dword [ebp - 0x10c], eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetProfileIntA]
mov ecx, eax
xor esi, esi
mov edx, dword [ebp - 0x10c]
add edx, 0x68f81
mov edi, edx
xor ebx, ebx
movzx eax, word [ebp - 0xac]
cdq
mov dword [ebp - 0x154], esi
mov esi, dword [ebp - 0x10c]
mov dword [ebp - 0x158], ecx
xor ecx, ecx
add esi, dword [ebp - 0x70]
mov dword [ebp - 0x15c], ebx
mov ebx, dword [ebp - 0x6c]
adc ebx, ecx
mov ecx, dword [ebp - 0x10c]
mov dword [ebp - 0x160], edi
xor edi, edi
add esi, ecx
adc ebx, edi
and eax, esi
and edx, ebx
mov ecx, dword [ebp - 0x160]
xor ecx, eax
mov esi, dword [ebp - 0x15c]
xor esi, edx
mov edi, dword [ebp - 0x158]
or edi, ecx
mov ecx, dword [ebp - 0x154]
or ecx, esi
mov dword [ebp - 0x10c], edi
mov ebx, 0x5c663
sub ebx, dword [ebp - 0x70]
mov esi, 0
sbb esi, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x10c]
xor eax, eax
sub ebx, edx
sbb esi, eax
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetNumberFormatA]
xor ecx, ecx
add ebx, eax
adc esi, ecx
add ebx, 0x4f435
adc esi, 0
mov edx, dword [ebp - 0x10c]
xor eax, eax
sub ebx, edx
sbb esi, eax
movzx eax, word [ebp - 0xac]
cdq
add ebx, eax
adc esi, edx
mov byte [ebp - 0x81], bl
mov esi, dword [ebp - 0x10c]
or esi, 0x51426
mov ecx, dword [ebp - 0x10c]
sub ecx, dword [ebp - 0x10c]
or esi, ecx
or esi, dword [ebp - 0x10c]
call dword [sym.imp.KERNEL32.dll_GetACP]
mov edx, dword [ebp - 0x10c]
sub edx, eax
sub edx, dword [ebp - 0x10c]
mov eax, dword [ebp - 0x10c]
lea ecx, [edx + eax + 0x1f857]
add ecx, dword [ebp - 0x10c]
or esi, ecx
xor edx, edx
mov dword [ebp - 0x70], esi
mov dword [ebp - 0x6c], edx
mov eax, dword [ebp - 0x10c]
mov dword [ebp - 0x164], eax
mov ecx, dword [ebp - 0x164]
sub ecx, 0x12
mov dword [ebp - 0x164], ecx
cmp dword [ebp - 0x164], 0xd9
ja case.0x407119.1
mov edx, dword [ebp - 0x164]
movzx eax, byte [edx + 0x407360]
jmp dword [eax*4 + 0x407348]
mov ecx, dword [ebp - 0x70]
sub ecx, 0xac87
mov edx, dword [ebp - 0x6c]
sbb edx, 0
add ecx, 0x7520a
adc edx, 0
mov eax, dword [ebp - 0x10c]
xor esi, esi
add ecx, eax
adc edx, esi
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x6c], edx
jmp 0x407339
mov esi, dword [ebp - 0x10c]
add esi, dword [ebp - 0x10c]
or esi, 0x775da
push 0
call dword [sym.imp.KERNEL32.dll_SetConsoleOutputCP]
add eax, dword [ebp - 0x10c]
or esi, eax
mov word [ebp - 0xac], si
jmp 0x407339
movzx esi, byte [ebp - 0x81]
movzx ecx, word [ebp - 0xac]
sub esi, ecx
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetLongPathNameA]
add esi, eax
sub esi, dword [ebp - 0x10c]
mov edx, dword [ebp - 0x10c]
lea eax, [esi + edx - 0x3a95b]
mov ecx, dword [ebp - 0x10c]
lea esi, [eax + ecx + 0x15fdf]
and esi, dword [ebp - 0x10c]
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetCurrencyFormatA]
add eax, dword [ebp - 0x10c]
or esi, eax
movzx edx, word [ebp - 0xac]
add edx, dword [ebp - 0x10c]
or esi, edx
xor eax, eax
mov dword [ebp - 0x70], esi
mov dword [ebp - 0x6c], eax
jmp 0x407339
mov esi, dword [ebp - 0x70]
add esi, 0x20ed3
mov edi, dword [ebp - 0x6c]
adc edi, 0
movzx eax, word [ebp - 0xac]
cdq
and esi, eax
and edi, edx
push 0
call dword [sym.imp.KERNEL32.dll_SetThreadExecutionState]
xor ecx, ecx
sub eax, dword [ebp - 0x70]
sbb ecx, dword [ebp - 0x6c]
or esi, eax
or edi, ecx
mov edx, dword [ebp - 0x10c]
xor eax, eax
or esi, edx
or edi, eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateWaitableTimerA]
mov ebx, eax
push 0
call dword [sym.imp.KERNEL32.dll_FindAtomW]
movzx ecx, ax
sub ebx, ecx
add ebx, 0x6e863
xor edx, edx
or esi, ebx
or edi, edx
mov dword [ebp - 0xbc], esi
jmp 0x407339
movzx esi, word [ebp - 0xac]
sub esi, dword [ebp - 0x10c]
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FoldStringA]
add esi, eax
mov eax, dword [ebp - 0x10c]
sub eax, 0x53b75
movzx ecx, word [ebp - 0xac]
and eax, ecx
or esi, eax
xor ecx, ecx
mov edx, 0x3a21e
sub edx, dword [ebp - 0x10c]
add edx, 0x28924
mov edi, edx
xor ebx, ebx
mov eax, dword [ebp - 0x70]
sub eax, 0x20110
mov edx, dword [ebp - 0x6c]
sbb edx, 0
mov dword [ebp - 0x168], ecx
movzx ecx, word [ebp - 0xac]
mov dword [ebp - 0x16c], eax
mov eax, ecx
mov dword [ebp - 0x170], edx
cdq
mov ecx, dword [ebp - 0x16c]
sub ecx, eax
mov eax, dword [ebp - 0x170]
sbb eax, edx
mov edx, dword [ebp - 0x10c]
mov dword [ebp - 0x174], esi
xor esi, esi
sub ecx, edx
sbb eax, esi
and edi, ecx
and ebx, eax
mov esi, dword [ebp - 0x174]
or esi, edi
mov ecx, dword [ebp - 0x168]
or ecx, ebx
mov word [ebp - 0xac], si
jmp 0x407339
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FreeUserPhysicalPages]
mov edx, dword [ebp - 0x10c]
add edx, 0x555e7
and eax, edx
mov dword [ebp - 0x10c], eax
mov ax, word [ebp - 0xac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret