Function at 0x409988
Capabilities:
Set registry value

Disassembly:
push ebp
lea ebp, [esp - 0x10a4]
mov eax, 0x1124
call fcn.0041c5d0
mov eax, dword [0x42f080]
xor eax, ebp
mov dword [ebp + 0x10a0], eax
mov eax, dword [ebp + 0x10b0]
and dword [ebp - 0x6c], 0
push ebx
push esi
push edi
mov edi, dword [ebp + 0x10ac]
mov esi, ecx
mov ebx, edx
mov dword [ebp - 0x80], eax
lea eax, [ebp + 0xa0]
mov dword [ebp - 0x78], esi
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x74], edi
call fcn.0040a00f
test eax, eax
jl 0x409d44
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp + 0xa0]
push eax
call fcn.00409753
pop ecx
pop ecx
test eax, eax
jne 0x4099fd
mov eax, 0x80020009
jmp 0x409d44
call fcn.0040a785
lea eax, [ebp + 0xa0]
mov ecx, esi
call fcn.0040a00f
test eax, eax
jl 0x409d44
movzx eax, word [ebp - 0x6c]
sub eax, 8
je 0x409d16
sub eax, 9
je 0x409c20
dec eax
dec eax
je 0x409b2c
sub eax, 0x3ff5
jne 0x409d33
lea eax, [ebp + 0xa0]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
and dword [ebp - 0x64], 0
inc eax
inc eax
push eax
call fcn.00409964
pop ecx
cmp eax, 0x100
jbe 0x409a6d
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.00409819
jmp 0x409a73
lea eax, [ebp - 0x60]
mov dword [ebp - 0x64], eax
mov edi, dword [ebp - 0x64]
test edi, edi
je 0x409b10
cmp byte [ebp + 0xa0], 0
lea esi, [ebp + 0xa0]
je 0x409ad1
mov ebx, dword [sym.imp.USER32.dll_CharNextA]
push esi
call ebx
mov cl, byte [esi]
cmp cl, 0x5c
jne 0x409aad
cmp byte [eax], 0x30
jne 0x409aad
mov byte [edi], 0
push eax
inc edi
call ebx
mov esi, eax
jmp 0x409ac9
mov byte [edi], cl
movzx eax, byte [esi]
push eax
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByte]
test eax, eax
je 0x409ac7
inc edi
inc esi
mov al, byte [esi]
test al, al
je 0x409ace
mov byte [edi], al
inc edi
inc esi
cmp byte [esi], 0
jne 0x409a93
mov ebx, dword [ebp - 0x70]
mov byte [edi], 0
mov byte [edi + 1], 0
mov edi, dword [ebp - 0x64]
mov dword [ebp - 0x68], edi
test edi, edi
jne 0x409ae6
push 0xd
jmp 0x409b12
xor esi, esi
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
add edi, eax
add esi, eax
cmp eax, 1
jne 0x409ae8
push esi
push dword [ebp - 0x68]
push 7
push 0
push dword [ebp - 0x74]
push dword [ebx]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov esi, eax
jmp 0x409b13
push 0xe
pop esi
lea eax, [ebp - 0x60]
cmp dword [ebp - 0x64], eax
je 0x409d26
lea eax, [ebp - 0x64]
call fcn.0040995b
jmp 0x409d26
lea eax, [ebp + 0xa0]
xor ebx, ebx
push eax
mov dword [ebp - 0x68], ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
inc edi
push ebx
mov eax, edi
cdq
push 2
push edx
push eax
mov dword [ebp - 0x6c], edi
call fcn.004214d0
test edx, edx
jg 0x409b6f
jl 0x409b5e
cmp eax, 0x7fffffff
ja 0x409b6f
push edx
push eax
lea ecx, [ebp - 0x6c]
call fcn.0040983a
mov edi, dword [ebp - 0x6c]
pop ecx
pop ecx
jmp 0x409b74
mov eax, 0x80070057
test eax, eax
jl 0x409c16
cmp edi, 0x400
jg 0x409b9a
push edi
call fcn.0040988c
pop ecx
test al, al
je 0x409b9a
mov eax, edi
call fcn.0041bf90
mov eax, esp
jmp 0x409ba6
push edi
lea esi, [ebp - 0x68]
call fcn.00409923
mov ebx, dword [ebp - 0x68]
push 3
shr edi, 1
push edi
lea ecx, [ebp + 0xa0]
push ecx
mov esi, eax
call fcn.00409859
xor edi, edi
cmp eax, edi
je 0x409c12
lea ecx, [ebp - 0x7c]
push ecx
push edi
push edi
push eax
call dword [sym.imp.OLEAUT32.dll_VarUI4FromDisp]
mov eax, dword [ebp - 0x7c]
push 4
mov dword [ebp - 0x68], eax
lea eax, [ebp - 0x68]
push eax
mov eax, dword [ebp - 0x70]
push 4
push edi
push dword [ebp - 0x74]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov esi, eax
cmp ebx, edi
je 0x409d26
mov eax, ebx
mov ebx, dword [ebx]
push eax
call fcn.004120bd
pop ecx
test ebx, ebx
jne 0x409bf3
jmp 0x409d26
mov eax, ebx
mov ebx, dword [ebx]
push eax
call fcn.004120bd
pop ecx
cmp ebx, edi
jne 0x409c07
mov eax, 0x8007000e
jmp 0x409d44
lea eax, [ebp + 0xa0]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [ebp - 0x68], eax
test al, 1
je 0x409c3e
mov eax, 0x80004005
jmp 0x409d44
cdq
sub eax, edx
mov edi, eax
sar edi, 1
xor esi, esi
push edi
mov dword [ebp - 0x64], esi
call fcn.00409964
pop ecx
cmp eax, 0x100
jbe 0x409c64
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.00409819
jmp 0x409c6a
lea eax, [ebp - 0x60]
mov dword [ebp - 0x64], eax
cmp dword [ebp - 0x64], esi
jne 0x409c80
lea eax, [ebp - 0x60]
test eax, eax
je 0x409c34
lea eax, [ebp - 0x64]
call fcn.0040995b
jmp 0x409c34
push edi
push esi
push dword [ebp - 0x64]
call fcn.00414930
add esp, 0xc
cmp dword [ebp - 0x68], esi
jle 0x409cee
mov cl, byte [ebp + esi + 0xa0]
mov eax, esi
cdq
sub eax, edx
sar eax, 1
add eax, dword [ebp - 0x64]
cmp cl, 0x30
jl 0x409cd2
cmp cl, 0x39
jle 0x409ccb
cmp cl, 0x40
jle 0x409cd2
cmp cl, 0x46
jle 0x409cc6
cmp cl, 0x60
jle 0x409cd2
cmp cl, 0x66
jg 0x409cd2
sub cl, 0x57
jmp 0x409cce
sub cl, 0x37
jmp 0x409cce
sub cl, 0x30
mov dl, cl
jmp 0x409cd4
xor dl, dl
mov ebx, esi
and ebx, 1
shl ebx, 2
push 4
pop ecx
sub ecx, ebx
shl dl, cl
or byte [eax], dl
inc esi
cmp esi, dword [ebp - 0x68]
jl 0x409c92
mov ebx, dword [ebp - 0x70]
mov eax, dword [ebx]
push edi
push dword [ebp - 0x64]
push 3
push 0
push dword [ebp - 0x74]
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov esi, eax
lea eax, [ebp - 0x60]
cmp dword [ebp - 0x64], eax
je 0x409d26
lea eax, [ebp - 0x64]
call fcn.0040995b
jmp 0x409d26
lea eax, [ebp + 0xa0]
push eax
push edi
push ebx
call fcn.004097e7
mov esi, eax
test esi, esi
je 0x409d33
mov eax, esi
call fcn.0040a000
jmp 0x409d44
mov eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x78]
call fcn.0040a00f
test eax, eax
jl 0x409d44
xor eax, eax
lea esp, [ebp - 0x8c]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x10a0]
xor ecx, ebp
call fcn.00411d8c
add ebp, 0x10a4
leave
ret 8