Function at 0x4088d5
Capabilities:
Encode data using xor
Get disk information

Disassembly:
mov eax, 0x44b2c2
call fcn.00439d44
mov eax, 0x12dc
call fcn.0043abb0
mov eax, dword [0x45f584]
push ebx
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
mov dword [ebp - 0x10], eax
mov esi, 0x400
push esi
lea eax, [ebp - 0xea0]
push eax
lea eax, [ebp - 0x12dc]
push eax
lea eax, [ebp - 0x12e4]
push eax
lea eax, [ebp - 0x12c8]
push eax
push esi
lea eax, [ebp - 0xaa0]
push eax
push 0x44e150
call edi
xor ebx, ebx
test eax, eax
jne 0x408937
mov dword [ebp - 0x12c8], ebx
push dword [ebp - 0x12c8]
lea eax, [ebp - 0x44]
push str.23uirf_lusd22
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [ebp - 0x44]
push eax
call fcn.004394f0
add esp, 0x10
cmp byte [0x45e174], 0
mov dword [ebp - 0x12d4], eax
je 0x408975
mov eax, 0x45e174
xor byte [eax], 0x2c
inc eax
cmp byte [eax], 0
jne 0x40896c
cmp byte [0x45e180], 0
je 0x40898c
mov eax, 0x45e180
xor byte [eax], 0x2c
inc eax
cmp byte [eax], 0
jne 0x408983
mov dword [ebp - 0x12b4], ebx
mov byte [ebp - 0x12a4], 0x4f
mov byte [ebp - 0x12a3], 0x16
mov byte [ebp - 0x12a2], 0x70
mov byte [ebp - 0x12a1], 0
xor eax, eax
xor byte [ebp + eax - 0x12a4], 0x2c
inc eax
cmp eax, 3
jl 0x4089b0
push esi
lea eax, [ebp - 0x6a0]
push eax
lea eax, [ebp - 0x12e0]
push eax
lea eax, [ebp - 0x12e8]
push eax
lea eax, [ebp - 0x12b4]
push eax
push esi
lea eax, [ebp - 0x12a0]
push eax
lea eax, [ebp - 0x12a4]
push eax
call edi
test eax, eax
jne 0x4089f6
mov dword [ebp - 0x12b4], ebx
push dword [ebp - 0x12b4]
lea eax, [ebp - 0x12a4]
push eax
call fcn.00425c6f
pop ecx
pop ecx
xor eax, eax
xor byte [ebp + eax - 0x12a4], 0x37
inc eax
cmp eax, 4
jl 0x408a0c
lea eax, [ebp - 0x12a4]
push eax
call fcn.00425c4c
pop ecx
mov dword [ebp - 0x12b4], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
push ebx
push 0x1f0fff
call dword [sym.imp.KERNEL32.dll_OpenProcess]
cmp eax, ebx
mov dword [ebp - 0x12b8], eax
je 0x408c8e
push 0x104
lea eax, [ebp - 0x2a0]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [ebp - 0x19c]
call fcn.00428c40
lea eax, [ebp - 0x2a0]
push eax
lea ecx, [ebp - 0x19c]
mov dword [ebp - 4], ebx
call fcn.00428dff
test al, al
je 0x408c73
push dword [ebp - 0xa0]
mov ecx, 0x464958
call fcn.0041ab0e
push dword [ebp - 0xdc]
lea ecx, [ebp - 0x19c]
mov dword [ebp - 0x12bc], ebx
call fcn.00428d24
mov esi, dword [eax + 0x24]
mov edi, dword [eax + 0x28]
add esi, dword [ebp - 0xd0]
push edi
mov dword [ebp - 0x12d8], esi
mov dword [ebp - 0x12c4], edi
call fcn.0043a3f2
pop ecx
lea ecx, [ebp - 0x12bc]
push ecx
push edi
push eax
push esi
push dword [ebp - 0x12b8]
mov dword [ebp - 0x12a8], eax
call dword [sym.imp.KERNEL32.dll_ReadProcessMemory]
test eax, eax
je 0x408c67
cmp dword [ebp - 0x12bc], edi
jne 0x408c67
cmp byte [0x45e174], 0
mov byte [ebp - 0x12c0], 0
mov dword [ebp - 0x12ac], ebx
je 0x408b2a
inc dword [ebp - 0x12ac]
mov eax, dword [ebp - 0x12ac]
cmp byte [eax + 0x45e174], 0
jne 0x408b15
cmp byte [0x45e180], 0
mov dword [ebp - 0x12b0], ebx
je 0x408b4e
inc dword [ebp - 0x12b0]
mov eax, dword [ebp - 0x12b0]
cmp byte [eax + 0x45e180], 0
jne 0x408b39
mov eax, dword [ebp - 0x12c4]
xor edi, edi
sub eax, dword [ebp - 0x12b0]
mov dword [ebp - 0x12cc], eax
je 0x408c45
push 0xb
pop eax
sub eax, dword [ebp - 0x12a8]
mov dword [ebp - 0x12d0], eax
mov eax, dword [ebp - 0x12a8]
lea esi, [edi + eax]
mov al, byte [0x45e174]
cmp byte [esi], al
jne 0x408be1
push dword [ebp - 0x12ac]
push 0x45e174
push esi
call fcn.004397c0
add esp, 0xc
test eax, eax
jne 0x408be1
mov eax, dword [ebp - 0x12d0]
mov ecx, dword [ebp - 0x12a8]
lea ebx, [eax + esi]
mov eax, dword [ebp - 0x12ac]
add eax, ecx
movzx ecx, byte [eax + edi + 1]
test ecx, ecx
mov al, byte [eax + edi + 2]
mov byte [ebp - 0x12c0], al
jne 0x408c32
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x19c]
call fcn.00428c8a
xor al, al
jmp 0x408c90
mov al, byte [0x45e180]
cmp byte [esi], al
jne 0x408c32
push dword [ebp - 0x12b0]
push 0x45e180
push esi
call fcn.004397c0
add esp, 0xc
test eax, eax
jne 0x408c32
cmp edi, ebx
jbe 0x408c30
test ebx, ebx
jbe 0x408c30
push dword [ebp - 0x12b4]
lea eax, [ebp - 0x44]
push dword [ebp - 0x12c0]
push dword [ebp - 0x12d4]
push eax
push edi
push ebx
push dword [ebp - 0x12a8]
call fcn.0040888e
add esp, 0x1c
xor ebx, ebx
inc edi
cmp edi, dword [ebp - 0x12cc]
jb 0x408b77
mov esi, dword [ebp - 0x12d8]
lea eax, [ebp - 0x12bc]
push eax
push dword [ebp - 0x12c4]
push dword [ebp - 0x12a8]
push esi
push dword [ebp - 0x12b8]
call fcn.00407fdd
add esp, 0x14
push dword [ebp - 0x12a8]
call fcn.0043a3ed
pop ecx
push dword [ebp - 0x12b8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x19c]
call fcn.00428c8a
mov al, 1
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
pop ebx
call fcn.004394dc
leave
ret