Function at 0x401390
Capabilities:
Contain obfuscated stackstrings
Encode data using xor
Get disk information
Get disk size
Read file on windows

Disassembly:
sub esp, 0x98
mov al, 0x71
mov byte [esp + 2], al
mov byte [esp + 5], al
mov eax, 0x5c
mov ecx, eax
mov word [esp + 0x3a], cx
mov edx, eax
mov ecx, 0x2e
mov word [esp + 0x38], cx
xor ecx, ecx
push ecx
push ecx
mov word [esp + 0x3e], dx
mov edx, dword [esp + 0xa4]
push ecx
add edx, 0x41
push ecx
mov word [esp + 0x4c], dx
lea edx, [esp + 0x40]
push edx
mov word [esp + 0x54], ax
mov word [esp + 0x48], ax
mov eax, 0x3a
push ecx
mov word [esp + 0x56], ax
push ecx
lea eax, [esp + 0x58]
push eax
mov byte [esp + 0x20], 0x6c
mov byte [esp + 0x21], 0xf0
mov byte [esp + 0x23], 0
mov byte [esp + 0x24], 0x9e
mov byte [esp + 0x26], 0x44
mov byte [esp + 0x27], 0x3e
mov byte [esp + 0x28], 0xf4
mov byte [esp + 0x29], 0xdf
mov byte [esp + 0x2a], 0x90
mov byte [esp + 0x2b], 0x57
mov byte [esp + 0x2c], 0xca
mov byte [esp + 0x2d], 0x29
mov byte [esp + 0x2e], pe_nt_image_headers32
mov byte [esp + 0x2f], 0x7f
mov byte [esp + 0x30], 0xbc
mov byte [esp + 0x31], 0x3b
mov byte [esp + 0x32], 0xac
mov byte [esp + 0x33], 0x30
mov byte [esp + 0x34], 0x52
mov byte [esp + 0x35], 0x53
mov byte [esp + 0x36], 0x5e
mov byte [esp + 0x37], 0x45
mov byte [esp + 0x38], 0xd3
mov byte [esp + 0x39], 0xf2
mov byte [esp + 0x3a], 0xfe
mov byte [esp + 0x3b], 0x7c
mov byte [esp + 0x3c], 0x8a
mov byte [esp + 0x3d], 0xf7
mov byte [esp + 0x3e], 0x43
mov byte [esp + 0x3f], 0x1a
mov word [esp + 0x62], cx
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
test eax, eax
jne 0x4014a0
xor eax, eax
add esp, 0x98
ret
lea ecx, [esp + 0x4c]
push ecx
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x4c]
push edx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
test eax, eax
je 0x401497
mov eax, dword [esp + 0x48]
mul dword [esp + 0x50]
push esi
push edi
mov esi, eax
xor eax, eax
push eax
push 0x20000000
push 3
push eax
push 7
push 0x80000000
lea ecx, [esp + 0x54]
push ecx
mov word [esp + 0x64], ax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
mov dword [esp + 0x30], edi
cmp edi, 0xffffffff
je 0x4016e0
push ebx
mov ebx, esi
shl ebx, 8
push ebp
cmp ebx, 0x1000000
jbe 0x401514
mov ebx, 0x1000000
xor edx, edx
mov eax, ebx
div esi
push 4
push 0x3000
push ebx
push 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x64], eax
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov ebp, eax
test ebp, ebp
je 0x40165f
push 0
push 0
push 0
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, 0xffffffff
je 0x40165f
push 0
lea edx, [esp + 0x34]
push edx
push ebx
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x40165f
xor esi, esi
jmp 0x401576
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
push 0x20
lea eax, [esp + 0x14]
push eax
push ecx
push ebp
call fcn.004017e0
mov edi, eax
test edi, edi
jne 0x4015de
cmp dword [esp + 0x30], ebx
jne 0x401657
mov edx, dword [esp + 0x5c]
add esi, dword [esp + 0x54]
push edx
push esi
lea eax, [esp + 0x70]
push 0x4010d8
push eax
mov dword [esp + 0x4c], esi
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
lea esi, [esp + 0x68]
call fcn.004011c0
mov edx, dword [esp + 0x38]
push edi
lea ecx, [esp + 0x34]
push ecx
push ebx
push ebp
push edx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x401572
jmp 0x40165f
xor esi, esi
call fcn.004011c0
mov esi, 0x4010e4
call fcn.00401140
mov ecx, dword [esp + 0x30]
mov eax, edi
sub eax, ebp
sub ecx, eax
cmp eax, 0x40000
jbe 0x401605
mov eax, 0x40000
cmp ecx, 0x40000
jbe 0x401612
mov ecx, 0x40000
sub edi, eax
lea ebx, [ecx + eax]
xor eax, eax
test ebx, ebx
jbe 0x401631
lea ecx, [ecx]
mov ecx, eax
and ecx, 3
mov dl, byte [esp + ecx + 0x40]
xor byte [eax + edi], dl
inc eax
cmp eax, ebx
jb 0x401620
mov eax, dword [esp + 0x40]
push eax
lea ecx, [esp + 0x14]
push 0x401120
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
push edi
lea eax, [esp + 0x20]
call fcn.00401700
add esp, 0x10
test eax, eax
je 0x40165f
mov dword [esp + 0x34], 1
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
lea edx, [esp + 0x10]
mov esi, eax
push edx
push esi
call dword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x4016a4
movsx ecx, word [esp + 0x16]
movsx edx, word [esp + 0x12]
sub edx, ecx
movsx ecx, word [esp + 0x10]
imul edx, ecx
lea eax, [esp + 0x3c]
push eax
mov eax, dword [esp + 0x18]
push eax
cwde
sub edx, eax
push edx
push 0x20
push esi
call dword [sym.imp.KERNEL32.dll_FillConsoleOutputCharacterW]
mov edi, dword [esp + 0x34]
test edi, edi
jne 0x4016b6
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
jmp 0x4016ba
mov esi, dword [esp + 0x64]
push 0x8000
push 0
push ebp
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov ecx, dword [esp + 0x38]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop ebp
pop ebx
test edi, edi
jne 0x4016eb
push esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
pop edi
xor eax, eax
pop esi
add esp, 0x98
ret
pop edi
mov eax, 1
pop esi
add esp, 0x98
ret