Function at 0x41289f
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
xor ebx, ebx
mov dword [ebp - 0xc], ecx
cmp dword [edi + 4], ebx
lea eax, [edi + 4]
jbe 0x4128cb
push eax
lea ecx, [ebp + 0x18]
call fcn.00419f64
push 0x5c
lea ecx, [ebp + 0x18]
call fcn.00419e97
cmp dword [edi + 0x1c], ebx
mov dword [ebp - 0x10], ebx
mov esi, 0x479ee8
jle 0x412ae1
push dword [ebp - 0x10]
lea ecx, [edi + 0x10]
call fcn.0041c45e
mov ecx, dword [ebp - 0xc]
mov ebx, eax
push dword [ebx + 0x20]
call fcn.004121cd
test al, al
je 0x412ad0
push ebx
mov ecx, esi
call fcn.00415674
lea edi, [ebx + 0xc]
mov ecx, esi
push edi
call fcn.00415674
push ebx
mov ecx, esi
call fcn.004189c2
push edi
mov ecx, esi
call fcn.004189c2
push 0x7fffffff
push ebx
mov ecx, esi
call fcn.00419277
push 0x7fffffff
push edi
mov ecx, esi
call fcn.00419277
lea ecx, [ebp - 0x28]
call fcn.00419c64
mov eax, dword [ebx + 0x18]
cmp eax, 1
je 0x412a6b
cmp eax, 2
je 0x412a6b
cmp eax, 4
jne 0x412977
mov ecx, edi
call fcn.0041ab9e
push eax
call fcn.00422203
pop ecx
mov dword [ebp - 0x18], eax
push 4
lea eax, [ebp - 0x18]
pop edi
jmp 0x412a75
cmp eax, 3
jne 0x412a2e
and dword [ebp - 8], 0
cmp dword [edi], 0
jbe 0x412a21
mov eax, dword [ebp - 8]
push 3
xor edx, edx
pop ecx
div ecx
cmp edx, 2
mov dword [ebp - 0x1c], edx
je 0x412a13
push dword [ebp - 8]
mov ecx, edi
call fcn.00419e82
cmp al, 0x30
jl 0x4129bc
cmp al, 0x39
jg 0x4129bc
movsx eax, al
sub eax, 0x30
mov dword [ebp - 4], eax
jmp 0x4129f7
cmp al, 0x41
jl 0x4129cc
cmp al, 0x46
jg 0x4129cc
movsx eax, al
sub eax, 0x37
jmp 0x4129da
cmp al, 0x61
jl 0x4129df
cmp al, 0x66
jg 0x4129df
movsx eax, al
sub eax, 0x57
mov dword [ebp - 4], eax
jmp 0x4129f4
push 0x429ff8
lea ecx, [ebp - 0x28]
call fcn.00419db1
lea ecx, [ebp - 0x28]
call fcn.0041ab9e
mov eax, dword [ebp - 4]
cmp dword [ebp - 0x1c], 0
jne 0x412a05
shl al, 4
mov byte [ebp - 0x14], al
jmp 0x412a13
add byte [ebp - 0x14], al
push dword [ebp - 0x14]
lea ecx, [ebp - 0x28]
call fcn.00419e97
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [edi]
jb 0x41298d
lea ecx, [ebp - 0x28]
call fcn.0041ab9e
mov edi, dword [ebp - 0x28]
jmp 0x412a75
push 1
push 0
push 0
push 0x428128
push str._0_
mov ecx, edi
call fcn.0041aa75
xor eax, eax
mov ecx, edi
push eax
push eax
push eax
push 1
call fcn.0041aa45
mov eax, dword [edi]
mov ecx, edi
dec eax
push eax
call fcn.00419e82
test al, al
je 0x412a6b
push 0
mov ecx, edi
call fcn.00419e97
mov ecx, edi
call fcn.0041ab9e
mov edi, dword [edi]
inc edi
push edi
push eax
push dword [ebx + 0x18]
xor edi, edi
mov ecx, ebx
push edi
call fcn.0041ab9e
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x412a9c
mov eax, dword [ebp + 0x10]
inc dword [eax]
mov dword [ebx + 0x1c], edi
jmp 0x412aa3
mov dword [ebx + 0x1c], 1
mov eax, dword [ebp + 0x14]
inc dword [eax]
mov ecx, dword [0x47a378]
mov eax, dword [eax]
cmp ecx, edi
jbe 0x412ac5
imul eax, eax, 0x64
xor edx, edx
push edi
div ecx
mov ecx, dword [ebp - 0xc]
push eax
call fcn.004140ee
lea ecx, [ebp - 0x28]
call fcn.00419d9a
mov edi, dword [ebp + 0xc]
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, dword [edi + 0x1c]
jl 0x4128dc
xor ebx, ebx
cmp dword [edi + 0x30], ebx
mov dword [ebp - 8], ebx
jle 0x412c31
add edi, 0x24
mov dword [ebp - 0x1c], edi
push dword [ebp - 8]
mov ecx, dword [ebp - 0x1c]
call fcn.0041c45e
lea edi, [eax + 4]
mov ecx, esi
push edi
mov dword [ebp - 4], eax
call fcn.00415674
push edi
mov ecx, esi
call fcn.004189c2
push 0x7fffffff
push edi
mov ecx, esi
call fcn.00419277
lea eax, [ebp - 0x14]
xor ebx, ebx
push eax
lea eax, [ebp - 0x10]
push eax
push ebx
push 0x2001f
push ebx
push ebx
push ebx
mov ecx, edi
call fcn.0041ab9e
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x412bbe
lea eax, [ebp - 0x14]
mov ecx, edi
push eax
lea eax, [ebp - 0x10]
push eax
push ebx
push 0x20006
push ebx
push ebx
push ebx
call fcn.0041ab9e
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x412bbe
lea eax, [ebp - 0x14]
mov ecx, edi
push eax
lea eax, [ebp - 0x10]
push eax
push ebx
push 0x20019
push ebx
push ebx
push ebx
call fcn.0041ab9e
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x412bbe
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
inc dword [eax]
inc dword [ecx]
mov ecx, dword [0x47a378]
cmp ecx, ebx
jbe 0x412c1f
mov eax, dword [eax]
xor edx, edx
imul eax, eax, 0x64
div ecx
mov ecx, dword [ebp - 0xc]
push ebx
push eax
call fcn.004140ee
jmp 0x412c1f
mov edi, dword [ebp + 0x14]
inc dword [edi]
mov ecx, dword [0x47a378]
mov eax, dword [edi]
cmp ecx, ebx
jbe 0x412be0
imul eax, eax, 0x64
xor edx, edx
push ebx
div ecx
mov ecx, dword [ebp - 0xc]
push eax
call fcn.004140ee
push 1
pop eax
cmp dword [ebp - 0x14], eax
jne 0x412bf0
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x38], eax
jmp 0x412bf6
mov eax, dword [ebp - 4]
mov dword [eax + 0x38], ebx
sub esp, 0xc
lea eax, [ebp + 0x18]
mov ecx, esp
push eax
call fcn.00419d38
push edi
mov ecx, dword [ebp - 0xc]
push dword [ebp + 0x10]
push dword [ebp - 4]
push dword [ebp - 0x10]
call fcn.0041289f
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
inc dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 8]
cmp ecx, dword [eax + 0x30]
jl 0x412af3
lea ecx, [ebp + 0x18]
call fcn.00419d9a
pop edi
pop esi
pop ebx
leave
ret 0x1c