Function at 0x100ac7c0
Capabilities:
Query or enumerate registry value
Set registry value

Disassembly:
sub esp, 0xf4
movsx eax, byte [0x10113529]
movsx ecx, byte [0x1011352a]
lea eax, [eax + eax*4]
push ebx
push ebp
push esi
lea edx, [ecx + eax*2 - 0x210]
mov al, byte [0x10113524]
cmp al, 0x20
push edi
mov dword [esp + 0x30], 0
mov dword [esp + 0x28], edx
jne 0x100ac803
movsx esi, byte [0x10113525]
sub esi, 0x30
jmp 0x100ac817
movsx ecx, byte [0x10113525]
movsx eax, al
lea eax, [eax + eax*4]
lea esi, [ecx + eax*2 - 0x210]
movsx eax, byte [0x10113520]
add eax, 0xffffffbf
mov dword [esp + 0x24], esi
cmp eax, 0x12
ja case.0x100ac832.72
xor ecx, ecx
mov cl, byte [eax + 0x100acef8]
jmp dword [ecx*4 + 0x100aced8]
cmp byte [0x10113521], 0x61
je 0x100ac855
mov bl, byte [0x10113522]
xor eax, eax
cmp bl, 0x6e
setne al
add eax, 5
jmp 0x100ac8a0
xor eax, eax
jmp 0x100ac8a0
mov eax, 1
jmp 0x100ac8a0
mov al, byte [0x10113522]
sub al, 0x72
neg al
sbb eax, eax
and eax, 2
add eax, 2
jmp 0x100ac8a0
mov al, byte [0x10113521]
sub al, 0x70
neg al
sbb eax, eax
and eax, 4
add eax, 3
jmp 0x100ac8a0
mov eax, 8
jmp 0x100ac8a0
mov eax, 9
jmp 0x100ac8a0
mov eax, 0xa
jmp 0x100ac8a0
mov eax, 0xb
lea ecx, [edx + edx*4]
mov dword [esp + 0x20], eax
lea ecx, [ecx + ecx*8]
shl ecx, 1
sub ecx, edx
mov edx, eax
shl edx, 4
sub edx, eax
lea eax, [esi + edx*2]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x10c]
test ecx, ecx
je 0x100ac8f0
or eax, 0x80000000
push ecx
push eax
push 0x83b2
push 0x11d0
push 0xa265
push 0x774869c
lea ecx, [esp + 0xb8]
push 0x10113568
push ecx
jmp 0x100ac91a
mov edx, dword [esp + 0x108]
push edx
push eax
push 0x83b2
push 0x11d0
push 0xa265
push 0x774869c
lea eax, [esp + 0xb8]
push 0x10113568
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x20
lea ecx, [esp + 0x2c]
lea edx, [esp + 0xa0]
push ecx
push edx
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x100ac9d0
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0x38]
lea ecx, [esp + 0x3c]
push eax
push ecx
push 0
push edx
mov dword [esp + 0x48], 0x64
call dword [sym.imp.ADVAPI32.dll_RegQueryValueA]
test eax, eax
jne 0x100ac9c0
movsx eax, byte [esp + 0x3d]
movsx edx, byte [esp + 0x41]
sub eax, 0x43
mov dword [esp + 0x30], 1
mov dword [esp + 0x20], eax
movsx eax, byte [esp + 0x3f]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*2 - 0x300]
movsx edx, byte [esp + 0x45]
mov dword [esp + 0x24], eax
movsx eax, byte [esp + 0x44]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*2]
movsx ecx, byte [esp + 0x49]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*4]
movsx eax, byte [esp + 0x4a]
lea ecx, [eax + edx*2 - 0x12b2a]
mov dword [esp + 0x28], ecx
mov edx, dword [esp + 0x2c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x100acc46
mov ebp, dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
lea eax, [esp + 0x2c]
lea ecx, [esp + 0xa0]
push eax
push ecx
push SysReAllocString
call ebp
test eax, eax
jne 0x100acc46
lea edx, [esp + 0x28]
lea eax, [esp + 0x24]
push edx
lea ecx, [esp + 0x24]
push eax
push ecx
call fcn.100a9c60
mov esi, dword [sym.imp.MSVCRT.dll_rand]
call esi
cdq
mov ecx, 0x1a
idiv ecx
add dl, 0x41
mov byte [esp + 0x3c], dl
mov dl, byte [esp + 0x20]
add dl, 0x43
mov byte [esp + 0x3d], dl
call esi
cdq
mov ecx, 0x1a
mov bl, 0x2d
idiv ecx
mov ecx, dword [esp + 0x24]
mov eax, 0x66666667
mov byte [esp + 0x40], bl
add dl, 0x41
mov byte [esp + 0x3e], dl
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, edx
mov dl, al
add dl, 0x46
mov byte [esp + 0x3f], dl
mov dl, 0xa
imul dl
sub cl, al
add cl, 0x44
mov byte [esp + 0x41], cl
call esi
cdq
mov ecx, 0x1a
idiv ecx
add dl, 0x41
mov byte [esp + 0x42], dl
call esi
cdq
mov ecx, 0x1a
idiv ecx
mov ecx, dword [esp + 0x28]
mov eax, 0x68db8bad
add dl, 0x41
mov byte [esp + 0x43], dl
imul ecx
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 4
mov eax, edx
mov edx, ecx
sub edx, eax
mov eax, 0x10624dd3
imul edx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x10624dd3
add dl, 0x45
mov byte [esp + 0x44], dl
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
mov eax, 0x51eb851f
shl edx, 3
sub ecx, edx
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
add dl, 0x44
mov byte [esp + 0x45], dl
call esi
cdq
mov ecx, 0x1a
mov byte [esp + 0x47], bl
idiv ecx
add dl, 0x41
mov byte [esp + 0x46], dl
call esi
cdq
mov ecx, 0x1a
idiv ecx
mov ecx, dword [esp + 0x28]
mov eax, 0x51eb851f
add dl, 0x41
mov byte [esp + 0x48], dl
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
lea edx, [eax + eax*4]
shl edx, 2
mov eax, edx
mov edx, ecx
sub edx, eax
mov eax, 0x66666667
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x66666667
add dl, 0x48
mov byte [esp + 0x49], dl
imul ecx
mov eax, edx
sar eax, 2
mov edx, eax
shr edx, 0x1f
add eax, edx
mov dl, 0xa
imul dl
sub cl, al
add cl, 0x42
mov byte [esp + 0x4a], cl
call esi
cdq
mov ecx, 0x1a
idiv ecx
add dl, 0x41
mov byte [esp + 0x4b], dl
call esi
cdq
mov ecx, 0x1a
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
idiv ecx
mov byte [esp + 0x4d], 0
add dl, 0x41
mov byte [esp + 0x4c], dl
lea edx, [esp + 0x3c]
push edx
call esi
push eax
lea eax, [esp + 0x40]
push eax
push 1
mov ecx, dword [esp + 0x38]
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueA]
push 0
push ecx
call edi
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
jne 0x100acc3f
lea edx, [esp + 0x34]
mov dword [esp + 0x30], 1
push edx
push 0x10113550
push SysReAllocString
call ebp
test eax, eax
jne 0x100acc3f
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
push eax
push ecx
push edx
lea eax, [esp + 0x48]
push 0x10113530
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
lea ecx, [esp + 0x3c]
push ecx
call esi
lea edx, [esp + 0x3c]
push eax
mov eax, dword [esp + 0x38]
push edx
push 1
push 0x10113540
push eax
call edi
mov ecx, dword [esp + 0x34]
push ecx
call ebx
mov edx, dword [esp + 0x2c]
push edx
call ebx
mov eax, dword [esp + 0x30]
test eax, eax
je 0x100ace9b
mov eax, 0x20202020
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov byte [esp + 0x1b], 0
mov dword [esp + 0x14], eax
mov word [esp + 0x18], ax
mov byte [esp + 0x1a], al
mov eax, 0x68db8bad
imul ecx
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 4
mov eax, edx
mov edx, ecx
sub edx, eax
mov eax, 0x10624dd3
imul edx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x10624dd3
add dl, 0x30
mov byte [esp + 0x17], dl
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 3
mov eax, edx
mov edx, ecx
sub edx, eax
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x51eb851f
add dl, 0x30
mov byte [esp + 0x18], dl
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
lea edx, [eax + eax*4]
shl edx, 2
mov eax, edx
mov edx, ecx
sub edx, eax
mov eax, 0x66666667
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x66666667
add dl, 0x30
mov byte [esp + 0x19], dl
imul ecx
mov eax, edx
sar eax, 2
mov edx, eax
shr edx, 0x1f
add eax, edx
mov dl, 0xa
imul dl
sub cl, al
add cl, 0x30
mov byte [esp + 0x1a], cl
mov ecx, dword [esp + 0x24]
cmp ecx, 0xa
jl 0x100acd6d
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, edx
mov dl, al
add dl, 0x30
mov byte [esp + 0x14], dl
mov dl, 0xa
imul dl
sub cl, al
mov eax, dword [esp + 0x20]
add cl, 0x30
dec eax
mov byte [esp + 0x15], cl
cmp eax, 0xb
ja case.default.0x100acd82
jmp dword [eax*4 + 0x100acf0c]
mov byte [esp + 0x10], 0x4a
mov byte [esp + 0x11], 0x61
mov byte [esp + 0x12], 0x6e
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x46
mov byte [esp + 0x11], 0x65
mov byte [esp + 0x12], 0x62
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x4d
mov byte [esp + 0x11], 0x61
mov byte [esp + 0x12], 0x72
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x41
mov byte [esp + 0x11], 0x70
mov byte [esp + 0x12], 0x72
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x4d
mov byte [esp + 0x11], 0x61
mov byte [esp + 0x12], 0x79
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x4a
mov byte [esp + 0x11], 0x75
mov byte [esp + 0x12], 0x6e
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x4a
mov byte [esp + 0x11], 0x75
mov byte [esp + 0x12], 0x6c
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x41
mov byte [esp + 0x11], 0x75
mov byte [esp + 0x12], 0x67
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x53
mov byte [esp + 0x11], 0x65
mov byte [esp + 0x12], 0x70
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x4f
mov byte [esp + 0x11], 0x63
mov byte [esp + 0x12], 0x74
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x4e
mov byte [esp + 0x11], 0x6f
mov byte [esp + 0x12], 0x76
jmp case.default.0x100acd82
mov byte [esp + 0x10], 0x44
mov byte [esp + 0x11], 0x65
mov byte [esp + 0x12], 0x63
mov ecx, dword [esp + 0x114]
cmp ecx, 0xd
jbe 0x100ace70
mov ecx, 0xd
mov edi, dword [esp + 0x110]
mov edx, ecx
lea esi, [esp + 0x10]
mov eax, 0xd
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf4
ret 0x10
mov ecx, dword [esp + 0x114]
cmp ecx, 0xc
jbe 0x100aceac
mov ecx, 0xc
mov edi, dword [esp + 0x110]
mov eax, ecx
mov esi, 0x10113520
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, 0xc
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf4
ret 0x10