Function at 0x407080
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x4829fc
mov eax, dword fs:[0]
push eax
sub esp, 0x264
mov eax, dword [0x49b470]
xor eax, esp
mov dword [esp + 0x260], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x49b470]
xor eax, esp
push eax
lea eax, [esp + 0x278]
mov dword fs:[0], eax
xor ebx, ebx
mov eax, 0xf
mov edi, ecx
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x4c], bl
mov dword [esp + 0x280], ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], ebx
mov byte [esp + 0x30], bl
push 0x48b928
lea eax, [esp + 0x68]
push eax
mov byte [esp + 0x288], 1
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.setup.ini
lea ecx, [esp + 0x68]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea edx, [esp + 0x64]
push edx
lea eax, [esp + 0x170]
push eax
push edi
call fcn.00406520
mov dword [esp + 0x18], ebx
cmp eax, ebx
je 0x40729b
push str.setup.ini
lea ecx, [edi + 0x58cc]
mov byte [esp + 0x284], 2
lea esi, [edi + 0x5b61]
call fcn.004040f0
push eax
push str._s_s
push esi
call fcn.0045f116
add esp, 0x10
push ebx
push 0x80
push 3
push ebx
push 1
push DirectSoundCreate
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebp, eax
mov dword [esp + 0x18], ebp
cmp ebp, 0xffffffff
jne 0x40719c
lea eax, [esp + 0x16c]
xor ebp, ebp
mov edx, esi
mov ecx, eax
mov dword [esp + 0x18], ebp
sub edx, ecx
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
cmp cl, bl
jne 0x407190
jmp 0x4071ad
cmp ebp, ebx
je 0x4071ad
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor ebp, ebp
mov dword [esp + 0x18], ebp
push esi
push 0x1000
push 0xe51460
push 0x48b990
push str.SubKey
push 0x48b99c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, 0xe51460
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4071d5
sub eax, edx
push eax
push 0xe51460
lea ecx, [esp + 0x50]
call fcn.00402b90
mov eax, dword [esp + 0x4c]
mov esi, 0x10
cmp dword [esp + 0x60], esi
jae 0x407200
lea eax, [esp + 0x4c]
mov ecx, 0x48b990
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407225
cmp dl, bl
je 0x407221
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407225
add eax, 2
add ecx, 2
cmp dl, bl
jne 0x407205
xor eax, eax
jmp 0x40722a
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x407280
mov edi, 0x48b9a0
call fcn.004010a0
cmp ebp, ebx
je 0x407243
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0x44], esi
jb 0x407256
mov edx, dword [esp + 0x30]
push edx
call fcn.0045f755
add esp, 4
mov dword [esp + 0x44], 0xf
mov dword [esp + 0x40], ebx
mov byte [esp + 0x30], bl
cmp dword [esp + 0x60], esi
jb 0x407279
mov eax, dword [esp + 0x4c]
push eax
call fcn.0045f755
add esp, 4
xor eax, eax
jmp 0x4074de
push 0xf
push str.SoftwareLiLiM_
lea ecx, [esp + 0x34]
call fcn.00402b90
push ebx
lea ecx, [esp + 0x4c]
push ecx
jmp 0x4073fc
push str.setup.ini
lea ecx, [edi + 0x58cc]
mov byte [esp + 0x284], 3
lea esi, [edi + 0x5b61]
call fcn.004040f0
push eax
push str._s_s
push esi
call fcn.0045f116
add esp, 0x10
push ebx
push 0x80
push 3
push ebx
push 1
push DirectSoundCreate
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebp, eax
mov dword [esp + 0x18], ebp
cmp ebp, 0xffffffff
jne 0x4072fe
mov edi, 0x48b9e0
call fcn.004010a0
mov esi, 0x10
jmp 0x407243
cmp ebp, ebx
je 0x40730f
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor ebp, ebp
mov dword [esp + 0x18], ebp
push esi
push 0x1000
push 0xe51460
push 0x48b990
push str.SubKey
push 0x48b99c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, 0xe51460
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x407337
sub eax, edx
push eax
push 0xe51460
lea ecx, [esp + 0x50]
call fcn.00402b90
mov eax, dword [esp + 0x4c]
mov esi, 0x10
cmp dword [esp + 0x60], esi
jae 0x407362
lea eax, [esp + 0x4c]
mov ecx, 0x48b990
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407387
cmp dl, bl
je 0x407383
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407387
add eax, 2
add ecx, 2
cmp dl, bl
jne 0x407367
xor eax, eax
jmp 0x40738c
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x4073e6
mov edi, 0x48b9a0
call fcn.004010a0
cmp ebp, ebx
je 0x4073a5
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0x44], esi
jb 0x4073b8
mov ecx, dword [esp + 0x30]
push ecx
call fcn.0045f755
add esp, 4
mov dword [esp + 0x44], 0xf
mov dword [esp + 0x40], ebx
mov byte [esp + 0x30], bl
cmp dword [esp + 0x60], esi
jb 0x407279
mov edx, dword [esp + 0x4c]
push edx
call fcn.0045f755
add esp, 4
xor eax, eax
jmp 0x4074de
push 0xf
push str.SoftwareLiLiM_
lea ecx, [esp + 0x34]
call fcn.00402b90
push ebx
lea eax, [esp + 0x4c]
push eax
or eax, 0xffffffff
lea esi, [esp + 0x34]
call fcn.004089b0
cmp ebp, ebx
je 0x407413
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x30]
mov ebp, 0x10
cmp dword [esp + 0x44], ebp
jae 0x407426
lea eax, [esp + 0x30]
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x20]
push edx
push ebx
push 0xf003f
push ebx
push ebx
push ebx
push eax
push reloc.DSOUND.dll_DirectSoundCreate
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x40748f
lea eax, [esp + 0x18]
push eax
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x2c]
push edx
push ebx
push str.Disk
push eax
mov dword [esp + 0x30], 4
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x407483
xor ecx, ecx
cmp dword [esp + 0x20], 1
sete cl
mov esi, ecx
jmp 0x40749b
mov dword [edi + 0x5ca0], 1
jmp 0x407499
mov edi, 0x48ba24
call fcn.004010a0
xor esi, esi
mov edx, dword [esp + 0x1c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [esp + 0x44], ebp
jb 0x4074b9
mov eax, dword [esp + 0x30]
push eax
call fcn.0045f755
add esp, 4
mov dword [esp + 0x44], 0xf
mov dword [esp + 0x40], ebx
mov byte [esp + 0x30], bl
cmp dword [esp + 0x60], ebp
jb 0x4074dc
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.0045f755
add esp, 4
mov eax, esi
mov ecx, dword [esp + 0x278]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x260]
xor ecx, esp
call fcn.0045f0aa
add esp, 0x270
ret