Function at 0x41518e
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
lea eax, [ebx + 4]
xor edi, edi
mov dword [ebp - 0x10], ecx
cmp dword [eax], edi
jbe 0x4151b9
push eax
lea ecx, [ebp + 0x18]
call fcn.0041e92f
push 0x5c
lea ecx, [ebp + 0x18]
call fcn.0041e862
cmp dword [ebx + 0x1c], edi
mov dword [ebp - 0xc], edi
mov esi, 0x4810c0
jle 0x4153d1
push dword [ebp - 0xc]
lea ecx, [ebx + 0x10]
call fcn.0042168b
mov edi, eax
push dword [edi + 0x24]
call fcn.0041486a
test al, al
pop ecx
je 0x4153c0
push edi
mov ecx, esi
call fcn.00418851
lea ebx, [edi + 0xc]
mov ecx, esi
push ebx
call fcn.00418851
push edi
mov ecx, esi
call fcn.0041cf5a
push ebx
mov ecx, esi
call fcn.0041cf5a
push 0x7fffffff
push edi
mov ecx, esi
call fcn.0041dbff
push 0x7fffffff
push ebx
mov ecx, esi
call fcn.0041dbff
lea ecx, [ebp - 0x28]
call fcn.0041e62f
mov eax, dword [edi + 0x18]
cmp eax, 1
je 0x415357
cmp eax, 2
je 0x415357
cmp eax, 4
jne 0x415263
mov ecx, ebx
call fcn.0041f593
push eax
call fcn.00427fa3
pop ecx
mov dword [ebp - 0x18], eax
push 4
lea eax, [ebp - 0x18]
pop ebx
jmp 0x415361
cmp eax, 3
jne 0x41531a
and dword [ebp - 8], 0
cmp dword [ebx], 0
jbe 0x41530d
mov eax, dword [ebp - 8]
push 3
xor edx, edx
pop ecx
div ecx
cmp edx, 2
mov dword [ebp - 0x1c], edx
je 0x4152ff
push dword [ebp - 8]
mov ecx, ebx
call fcn.0041e84d
cmp al, 0x30
jl 0x4152a8
cmp al, 0x39
jg 0x4152a8
movsx eax, al
sub eax, 0x30
mov dword [ebp - 4], eax
jmp 0x4152e3
cmp al, 0x41
jl 0x4152b8
cmp al, 0x46
jg 0x4152b8
movsx eax, al
sub eax, 0x37
jmp 0x4152c6
cmp al, 0x61
jl 0x4152cb
cmp al, 0x66
jg 0x4152cb
movsx eax, al
sub eax, 0x57
mov dword [ebp - 4], eax
jmp 0x4152e0
push 0x4311c8
lea ecx, [ebp - 0x28]
call fcn.0041e77c
lea ecx, [ebp - 0x28]
call fcn.0041f593
mov eax, dword [ebp - 4]
cmp dword [ebp - 0x1c], 0
jne 0x4152f1
shl al, 4
mov byte [ebp - 0x14], al
jmp 0x4152ff
add byte [ebp - 0x14], al
push dword [ebp - 0x14]
lea ecx, [ebp - 0x28]
call fcn.0041e862
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebx]
jb 0x415279
lea ecx, [ebp - 0x28]
call fcn.0041f593
mov ebx, dword [ebp - 0x28]
jmp 0x415361
push 1
push 0
push 0
push 0x42f080
push str._0_
mov ecx, ebx
call fcn.0041f463
xor eax, eax
mov ecx, ebx
push eax
push eax
push eax
push 1
call fcn.0041f433
mov eax, dword [ebx]
mov ecx, ebx
dec eax
push eax
call fcn.0041e84d
test al, al
je 0x415357
push 0
mov ecx, ebx
call fcn.0041e862
mov ecx, ebx
call fcn.0041f593
mov ebx, dword [ebx]
inc ebx
push ebx
push eax
push dword [edi + 0x18]
xor ebx, ebx
mov ecx, edi
push ebx
call fcn.0041f593
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x415388
mov eax, dword [ebp + 0x10]
inc dword [eax]
mov dword [edi + 0x1c], ebx
jmp 0x41538f
mov dword [edi + 0x1c], 1
mov eax, dword [ebp + 0x14]
or dword [edi + 0x1c], 2
inc dword [eax]
mov ecx, dword [0x4815d8]
mov eax, dword [eax]
cmp ecx, ebx
jbe 0x4153b5
imul eax, eax, 0x64
xor edx, edx
push ebx
div ecx
mov ecx, dword [ebp - 0x10]
push eax
call fcn.00416b01
lea ecx, [ebp - 0x28]
call fcn.0041e765
mov ebx, dword [ebp + 0xc]
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebx + 0x1c]
jl 0x4151ca
xor edi, edi
cmp dword [ebx + 0x30], edi
mov dword [ebp - 8], edi
jle 0x41554a
push dword [ebp - 8]
lea ecx, [ebx + 0x24]
call fcn.0042168b
mov edi, eax
push dword [edi + 0x40]
call fcn.0041486a
test al, al
pop ecx
je 0x41553b
lea ebx, [edi + 4]
mov ecx, esi
push ebx
call fcn.00418851
push ebx
mov ecx, esi
call fcn.0041cf5a
push 0x7fffffff
push ebx
mov ecx, esi
call fcn.0041dbff
mov ecx, dword [0x4823f8]
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0xc]
push eax
xor eax, eax
or ecx, 0x2001f
push eax
push ecx
push eax
push eax
push eax
mov ecx, ebx
call fcn.0041f593
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x4154d9
mov ecx, dword [0x4823f8]
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0xc]
push eax
xor eax, eax
or ecx, 0x20006
push eax
push ecx
push eax
push eax
push eax
mov ecx, ebx
call fcn.0041f593
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x4154d9
mov ecx, dword [0x4823f8]
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0xc]
push eax
xor eax, eax
or ecx, 0x20019
push eax
push ecx
push eax
push eax
push eax
mov ecx, ebx
call fcn.0041f593
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x4154d9
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
inc dword [eax]
inc dword [ecx]
mov ecx, dword [0x4815d8]
test ecx, ecx
jbe 0x415538
mov eax, dword [eax]
xor edx, edx
imul eax, eax, 0x64
div ecx
mov ecx, dword [ebp - 0x10]
push 0
push eax
call fcn.00416b01
jmp 0x415538
mov ebx, dword [ebp + 0x14]
inc dword [ebx]
mov ecx, dword [0x4815d8]
mov eax, dword [ebx]
test ecx, ecx
jbe 0x4154fc
imul eax, eax, 0x64
xor edx, edx
push 0
div ecx
mov ecx, dword [ebp - 0x10]
push eax
call fcn.00416b01
push 1
pop eax
cmp dword [ebp - 0x14], eax
jne 0x415509
mov dword [edi + 0x38], eax
jmp 0x41550d
and dword [edi + 0x38], 0
or dword [edi + 0x38], 2
sub esp, 0xc
lea eax, [ebp + 0x18]
mov ecx, esp
push eax
call fcn.0041e703
push ebx
mov ecx, dword [ebp - 0x10]
push dword [ebp + 0x10]
push edi
push dword [ebp - 0xc]
call fcn.0041518e
push dword [ebp - 0xc]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ebx, dword [ebp + 0xc]
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebx + 0x30]
jl 0x4153dd
lea ecx, [ebp + 0x18]
call fcn.0041e765
pop edi
pop esi
pop ebx
leave
ret 0x1c