Function at 0x41a990
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, 0x1218
call fcn.00424e80
mov ecx, dword [esp + 0x1218]
mov dword [ebp - 0xc], esi
lea esi, [ebp - 0x1118]
push esi
mov dword [ebp - 4], ebx
mov ebx, ecx
mov dword [ebp - 8], edi
call fcn.0041b020
test eax, eax
jl 0x41af1c
movzx eax, byte [0x44b2cc]
test al, 1
jne 0x41aa05
or eax, 1
mov byte [0x44b2cc], al
mov eax, dword [0x4397ec]
mov edx, dword [0x4397f0]
mov ecx, dword [0x4397f4]
mov edi, dword [str.BDMS]
mov dword [0x446d40], eax
mov dword [0x446d48], edx
mov dword [0x446d50], ecx
mov dword [0x446d58], edi
xor edi, edi
push dword [edi*8 + 0x446d40]
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x41aa33
inc edi
cmp edi, 4
jb 0x41aa07
mov eax, 0x80020009
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [ebx]
movzx edi, word [edi*8 + 0x446d44]
movsx ecx, byte [eax]
add ecx, 0xfffffff7
cmp ecx, 0x20
jae 0x41aa7a
mov edx, 1
shl edx, cl
test edx, 0x800013
je 0x41aa7a
push eax
call dword [sym.imp.USER32.dll_CharNextA]
movsx ecx, byte [eax]
add ecx, 0xfffffff7
mov dword [ebx], eax
cmp ecx, 0x20
jae 0x41aa7a
mov edx, 1
shl edx, cl
test edx, 0x800013
jne 0x41aa57
mov ecx, ebx
push esi
call fcn.0041b020
test eax, eax
jl 0x41af28
cmp edi, 8
je 0x41aef8
cmp edi, 0x4008
je 0x41ac74
cmp edi, 0x13
jne 0x41ac42
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
mov eax, edi
mov ecx, SysReAllocString
cdq
mov eax, edi
add edi, edi
shr eax, 0x1f
add edx, edx
or eax, edx
add edi, 2
mov edx, edi
adc eax, 0
sub edx, ecx
mov ecx, 0
mov dword [ebp - 0x1218], edx
mov edx, eax
sbb edx, ecx
mov dword [ebp - 0x121c], edx
jl 0x41aaf7
mov edx, dword [ebp - 0x1218]
or edx, dword [ebp - 0x121c]
jne 0x41ac2e
mov edx, SysReAllocStringLen
mov ecx, edi
sub ecx, edx
mov edx, 0xffffffff
sbb eax, edx
jl 0x41ac2e
cmp edi, 0x400
jle 0x41ab59
mov eax, edi
neg eax
dec eax
cmp eax, 8
jb 0x41ab4f
lea eax, [edi + 8]
push eax
call fcn.00425aa0
mov dword [ebp - 0x1218], eax
add esp, 4
cmp dword [ebp - 0x1218], 0
je 0x41ab45
mov dword [eax], 0
lea ecx, [eax + 8]
jmp 0x41ab81
xor ecx, ecx
mov dword [ebp - 0x1218], ecx
jmp 0x41ab81
push 0x80070057
call fcn.0041fe50
push edi
call fcn.004190c0
add esp, 4
movzx eax, al
test eax, eax
je 0x41ab15
mov eax, edi
call fcn.00424e80
and esp, 0xfffffff0
mov eax, esp
mov dword [ebp - 0x1218], 0
mov ecx, eax
test ecx, ecx
je 0x41ac0e
shr edi, 1
xor edx, edx
push edi
push ecx
push 0xffffffffffffffff
push esi
push edx
mov dword [ebp - 0x121c], ecx
mov word [ecx], dx
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ecx, dword [ebp - 0x121c]
test eax, eax
je 0x41ac0e
test ecx, ecx
je 0x41ac0e
xor edx, edx
lea esi, [ebp - 0x14]
push esi
push edx
push edx
push ecx
call dword [sym.imp.OLEAUT32.dll_VarUI4FromDisp]
mov ecx, 4
lea edx, [ebp - 0x10]
push ecx
push edx
push ecx
mov edi, dword [ebp + 8]
push 0
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x14]
push esi
mov dword [ebp - 0x10], eax
push dword [edi]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov esi, eax
cmp dword [ebp - 0x1218], 0
je 0x41ad4d
mov edi, dword [ebp - 0x1218]
mov eax, edi
push eax
mov edi, dword [edi]
call fcn.0042592a
add esp, 4
test edi, edi
jne 0x41abf8
jmp 0x41ad4d
cmp dword [ebp - 0x1218], 0
je 0x41ac2e
mov ebx, dword [ebp - 0x1218]
mov eax, ebx
push eax
mov ebx, dword [ebx]
call fcn.0042592a
add esp, 4
test ebx, ebx
jne 0x41ac1d
mov eax, 0x8007000e
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret 0xc
cmp edi, 0x11
jne 0x41ad69
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
test edi, 1
je 0x41ad89
mov eax, 0x80004005
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret 0xc
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 2
cmp eax, 0x100
ja 0x41aed7
lea edi, [ebp - 0x114]
mov dword [ebp - 0x118], edi
test edi, edi
jne 0x41aca3
mov esi, 0xe
jmp 0x41ad38
movsx eax, byte [ebp - 0x1118]
test eax, eax
je 0x41ace5
push esi
call dword [sym.imp.USER32.dll_CharNextA]
movsx edx, byte [esi]
cmp edx, 0x5c
je 0x41aeb2
mov byte [edi], dl
movsx eax, byte [esi]
push eax
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByte]
test eax, eax
je 0x41acdc
inc esi
inc edi
movsx eax, byte [esi]
test eax, eax
je 0x41ace5
mov byte [edi], al
inc edi
inc esi
movsx eax, byte [esi]
test eax, eax
jne 0x41acae
xor eax, eax
xor edx, edx
mov byte [edi], al
mov byte [edi + 1], dl
mov edi, dword [ebp - 0x118]
test edi, edi
je 0x41aecd
mov eax, edi
xor esi, esi
mov dword [ebp - 0x14], ebx
mov ebx, eax
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
lea ebx, [ebx + eax + 1]
lea esi, [esi + eax + 1]
jne 0x41ad05
push esi
push edi
push 7
mov edx, dword [ebp + 8]
push 0
mov eax, dword [ebp + 0xc]
push eax
mov ebx, dword [ebp - 0x14]
push dword [edx]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov esi, eax
mov edi, dword [ebp - 0x118]
lea eax, [ebp - 0x114]
cmp edi, eax
je 0x41ad4d
lea ecx, [ebp - 0x118]
call fcn.0041af40
test esi, esi
je 0x41ad69
push esi
call fcn.0041b410
mov ebx, dword [ebp - 4]
add esp, 4
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret 0xc
mov ecx, ebx
push dword [ebp + 0x10]
call fcn.0041b020
xor edx, edx
test eax, eax
mov ebx, dword [ebp - 4]
cmovge eax, edx
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret 0xc
mov esi, edi
shr esi, 0x1f
add esi, edi
sar esi, 1
cmp esi, 0x100
ja 0x41ae91
lea eax, [ebp - 0x1218]
mov dword [ebp - 0x121c], eax
test eax, eax
je 0x41ae68
push esi
push 0
push eax
call fcn.00435e10
add esp, 0xc
test edi, edi
jle 0x41ae2a
mov dword [ebp - 0x118], esi
xor edx, edx
mov dword [ebp - 0x14], ebx
movsx eax, byte [ebp + edx - 0x1118]
lea ebx, [eax - 0x30]
cmp ebx, 0x36
ja case.0x41ade4.58
mov ecx, dword [ebx*4 + 0x439d40]
jmp ecx
add eax, 0xffffffa9
movzx eax, al
jmp 0x41adfd
add eax, 0xffffffc9
movzx eax, al
jmp 0x41adfd
xor eax, eax
jmp 0x41adfd
movzx eax, bl
mov ebx, edx
mov ecx, edx
shr ebx, 0x1f
and ecx, 1
add ebx, edx
xor ecx, 1
sar ebx, 1
inc edx
shl ecx, 2
mov esi, dword [ebp - 0x121c]
shl eax, cl
or byte [esi + ebx], al
cmp edx, edi
jl 0x41adcd
mov esi, dword [ebp - 0x118]
mov ebx, dword [ebp - 0x14]
push esi
push dword [ebp - 0x121c]
push 3
mov edx, dword [ebp + 8]
push 0
mov eax, dword [ebp + 0xc]
push eax
push dword [edx]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov esi, eax
lea eax, [ebp - 0x1218]
cmp eax, dword [ebp - 0x121c]
je 0x41ad4d
lea ecx, [ebp - 0x121c]
call fcn.0041af40
jmp 0x41ad4d
lea edx, [ebp - 0x1218]
cmp eax, edx
je 0x41ae7d
lea ecx, [ebp - 0x121c]
call fcn.0041af40
mov eax, 0x80004005
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret 0xc
push esi
mov dword [ebp - 0x121c], 0
lea ecx, [ebp - 0x121c]
call fcn.0041af50
mov eax, dword [ebp - 0x121c]
jmp 0x41adaa
cmp byte [eax], 0x30
jne 0x41acc1
mov byte [edi], 0
inc edi
push eax
call dword [sym.imp.USER32.dll_CharNextA]
mov esi, eax
jmp 0x41acde
mov esi, 0xd
jmp 0x41ad38
push eax
mov dword [ebp - 0x118], 0
lea ecx, [ebp - 0x118]
call fcn.0041af50
mov edi, dword [ebp - 0x118]
jmp 0x41ac95
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
push esi
push 1
mov edx, dword [ebp + 8]
push 0
mov eax, dword [ebp + 0xc]
push eax
push dword [edx]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov esi, eax
jmp 0x41ad4d
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret 0xc
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret 0xc