Function at 0x4023fb
Capabilities:
Get file size
Query or enumerate registry value
Read file via mapping

Disassembly:
push 0x1f003f
push eax
call 0x402430
push ebx
outsd dx, dword [esi]
je 0x402482
popal
jb 0x402473
pop esp
dec ebp
imul esp, dword [ebx + 0x72], 0x666f736f
je 0x402475
push edi
inc ecx
inc edx
pop esp
push edi
inc ecx
inc edx
xor al, 0x5c
push edi
popal
bound esp, qword [eax]
inc esi
imul ebp, dword [ebp + 0x20], 0x656d614e
add byte [eax + 1], ch
add byte [eax], al
sub al, 0x58
add al, byte [eax]
add byte [ebx], dh
shr al, 4
add byte [eax], al
add byte [edi], bh
add byte [eax], al
push 0x402477
push eax
push eax
push eax
push dword [0x4023f7]
call sub.ADVAPI32.dll_RegQueryValueExA
push dword [0x4023f7]
call sub.ADVAPI32.dll_RegCloseKey
push 0
push 0
push 3
push 0
push 1
push connect
call 0x4024f7
add byte [eax], 0
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
call sub.KERNEL32.dll_CreateFileA
mov dword [0x4022ec], eax
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add al, ch
out dx, al
add byte [eax], al
add byte [ebx + 0x4022ec], ah
xchg ebx, eax
or ebx, ebx
je 0x402581
push 0
push ebx
call sub.KERNEL32.dll_GetFileSize
mov esi, eax
push 0
push esi
push 0
push 2
push 0
push ebx
call sub.KERNEL32.dll_CreateFileMappingA
mov dword [0x4022e8], eax
xchg ebx, eax
or ebx, ebx
je 0x402581
push esi
push 0
push 0
push 4
push ebx
call sub.KERNEL32.dll_MapViewOfFile
mov dword [0x4022e4], eax
xchg ebx, eax
or ebx, ebx
je 0x402581
mov esi, ebx
mov ecx, dword [esi + 0x64]
add esi, dword [esi + 0x60]
push esi
lea edi, [0x4012bc]
push edi
lodsw ax, word [esi]
stosb byte es:[edi], al
or al, al
jne 0x402550
pop ebx
sub edi, ebx
mov dword [0x4013bc], edi
pop esi
add esi, 0x44
pushal
call fcn.004015ec
popal
push ecx
lea edi, [0x4012bc]
xor al, al
mov ecx, 0x100
rep stosb byte es:[edi], al
pop ecx
dec ecx
jecxz 0x402581
jmp 0x402548
push dword [0x4022e4]
call sub.KERNEL32.dll_UnmapViewOfFile
push dword [0x4022e8]
call sub.KERNEL32.dll_CloseHandle
push dword [0x4022ec]
call sub.KERNEL32.dll_CloseHandle
ret