Function at 0x4293a0
Capabilities:
Set registry value

Disassembly:
sub esp, 0x38
push edi
mov edi, ecx
mov eax, dword [edi + 0x5c]
test eax, eax
je 0x4296f8
mov eax, dword [edi]
call dword [eax + 0x58]
mov eax, dword [edi + 4]
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0xc]
push edx
push 0
push 0xf003f
push 0
push 0
push 0
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x4296f8
mov al, byte [edi + 0x1c]
test al, al
push ebx
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
jne 0x429446
mov ecx, dword [edi + 0x5c]
lea eax, [esp + 0x18]
push eax
push ecx
mov dword [esp + 0x20], 0x2c
call dword [sym.imp.USER32.dll_GetWindowPlacement]
test eax, eax
je 0x429446
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
push 4
lea eax, [edi + 0x44]
push eax
push 4
push 0
mov dword [eax], edx
mov edx, dword [esp + 0x20]
push str.Screen_X
lea ebx, [edi + 0x48]
push edx
mov dword [ebx], ecx
call esi
mov eax, dword [esp + 0x10]
push 4
push ebx
push 4
push 0
push str.Screen_Y
push eax
call esi
mov ecx, dword [0x7c67dc]
fld dword [ecx + 0x144]
mov edx, dword [esp + 0x10]
push 4
lea eax, [edi + 0x4c]
push eax
push 4
push 0
push str.Render_Distance
fstp dword [eax]
push edx
call esi
mov ecx, dword [0x7c67dc]
mov edx, dword [ecx + 0x34]
mov cl, byte [edx + 0x290]
mov edx, dword [esp + 0x10]
push 1
lea eax, [edi + 0x50]
push eax
push 3
push 0
push str.Master_Volume
push edx
mov byte [eax], cl
call esi
mov ecx, dword [0x7c67dc]
mov edx, dword [ecx + 0x34]
mov cl, byte [edx + 0x299]
mov edx, dword [esp + 0x10]
push 1
lea eax, [edi + 0x51]
push eax
push 3
push 0
push str.Voice_Volume
push edx
mov byte [eax], cl
call esi
mov ecx, dword [0x7c67dc]
mov edx, dword [ecx + 0x34]
mov cl, byte [edx + 0x298]
mov edx, dword [esp + 0x10]
push 1
lea eax, [edi + 0x52]
push eax
push 3
push 0
push str.Effect_Volume
push edx
mov byte [eax], cl
call esi
mov ecx, dword [0x7c67dc]
mov edx, dword [ecx + 0x34]
mov cl, byte [edx + 0x29a]
mov edx, dword [esp + 0x10]
push 1
lea eax, [edi + 0x53]
push eax
push 3
push 0
push str.Footsteps_Volume
push edx
mov byte [eax], cl
call esi
mov eax, dword [0x7c67dc]
mov ecx, dword [eax + 0x34]
lea ebx, [edi + 0x54]
call fcn.004027d0
fstp dword [ebx]
mov ecx, dword [esp + 0x10]
push 4
push ebx
push 4
push 0
push str.Media_Volume
push ecx
call esi
mov edx, dword [0x7c67dc]
mov ecx, dword [edx + 0x34]
add edi, 0x58
call fcn.00403c70
mov ecx, dword [esp + 0x10]
push 1
push edi
push 3
push 0
movsx eax, al
push str.3D_Sound_Quality
push ecx
mov dword [edi], eax
call esi
mov edx, dword [0x7c67dc]
mov eax, dword [esp + 0x10]
push 4
add edx, 0x84
push edx
push 4
push 0
push str.Shadows
push eax
call esi
mov ecx, dword [0x7c67dc]
mov edx, dword [esp + 0x10]
push 1
add ecx, 0xe2
push ecx
push 3
push 0
push str.Use_Best_Attack
push edx
call esi
mov eax, dword [0x7c67dc]
mov ecx, dword [esp + 0x10]
push 1
add eax, 0xe3
push eax
push 3
push 0
push str.Quick_Save_Rest
push ecx
call esi
mov edx, dword [0x7c67dc]
mov eax, dword [esp + 0x10]
push 4
add edx, 0x88
push edx
push 3
push 0
push str.Help_Delay
push eax
call esi
mov ecx, dword [0x7c67dc]
mov edx, dword [esp + 0x10]
push 4
add ecx, 0x8c
push ecx
push 3
push 0
push str.HUD_Style
push edx
call esi
mov eax, dword [0x7c67dc]
mov ecx, dword [esp + 0x10]
push 4
add eax, 0x90
push eax
push 3
push 0
push str.Menu_Alpha
push ecx
call esi
mov edx, dword [esp + 0x10]
push 1
push 0x7d16dd
push 3
push 0
push str.Mouse_Flip_Y
push edx
call esi
mov eax, dword [0x7c67dc]
push 1
mov ecx, dword [esp + 0x14]
add eax, 0x94
push eax
push 3
push 0
push str.Cursor_Off
push ecx
call esi
mov edx, dword [0x7c67dc]
mov eax, dword [esp + 0x10]
push 4
add edx, 0x98
push edx
push 3
push 0
push str.AIDistance
push eax
call esi
mov ecx, dword [0x7c67dc]
mov edx, dword [esp + 0x10]
push 4
add ecx, 0x9c
push ecx
push 3
push 0
push str.Difficulty
push edx
call esi
mov eax, dword [0x7c67dc]
mov cl, byte [eax + 0x344]
mov eax, dword [esp + 0x10]
push 1
lea edx, [esp + 0x13]
push edx
push 3
push 0
push str.Subtitles
push eax
mov byte [esp + 0x27], cl
call esi
mov ecx, dword [0x7c67dc]
mov edx, dword [esp + 0x10]
push 4
add ecx, 0xe8
push ecx
push 4
push 0
push str.Mouse_Sensitivity
push edx
call esi
mov eax, dword [0x7c67dc]
mov ecx, dword [esp + 0x10]
push 4
add eax, 0xec
push eax
push 4
push 0
push str.Horizontal_Sensitivity
push ecx
call esi
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [0x7c67dc]
mov ecx, dword [eax + 0x4c]
call fcn.00406430
pop esi
pop ebx
pop edi
add esp, 0x38
ret