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

Disassembly:
sub esp, 0xf4
movsx eax, byte [0x101134b9]
movsx ecx, byte [0x101134ba]
push ebx
lea eax, [eax + eax*4]
push ebp
push esi
lea esi, [ecx + eax*2 - 0x210]
mov al, byte [0x101134b4]
cmp al, 0x20
push edi
mov dword [esp + 0x30], 0
mov dword [esp + 0x28], esi
jne 0x100ac0c3
movsx ecx, byte [0x101134b5]
sub ecx, 0x30
jmp 0x100ac0d7
movsx eax, al
lea edx, [eax + eax*4]
movsx eax, byte [0x101134b5]
lea ecx, [eax + edx*2 - 0x210]
movsx eax, byte [0x101134b0]
add eax, 0xffffffbf
mov dword [esp + 0x24], ecx
cmp eax, 0x12
ja case.0x100ac0f2.72
xor edx, edx
mov dl, byte [eax + 0x100ac77c]
jmp dword [edx*4 + 0x100ac75c]
cmp byte [0x101134b1], 0x61
je 0x100ac115
mov bl, byte [0x101134b2]
xor eax, eax
cmp bl, 0x6e
setne al
add eax, 5
jmp 0x100ac160
xor eax, eax
jmp 0x100ac160
mov eax, 1
jmp 0x100ac160
mov al, byte [0x101134b2]
sub al, 0x72
neg al
sbb eax, eax
and eax, 2
add eax, 2
jmp 0x100ac160
mov al, byte [0x101134b1]
sub al, 0x70
neg al
sbb eax, eax
and eax, 4
add eax, 3
jmp 0x100ac160
mov eax, 8
jmp 0x100ac160
mov eax, 9
jmp 0x100ac160
mov eax, 0xa
jmp 0x100ac160
mov eax, 0xb
mov dword [esp + 0x20], eax
inc eax
push ecx
add esi, 0x76c
push eax
push esi
call fcn.100abf40
mov ebp, dword [sym.imp.USER32.dll_wsprintfA]
lea edx, [esp + 0xa0]
mov ecx, dword [esp + 0x108]
push ecx
push eax
push 0x83b2
push 0x11d0
push 0xa265
push 0x774869c
push 0x101134f8
push edx
call ebp
add esp, 0x20
lea eax, [esp + 0x2c]
lea ecx, [esp + 0xa0]
push eax
push ecx
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x100ac255
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0x38]
lea eax, [esp + 0x3c]
push edx
push eax
push 0
push ecx
mov dword [esp + 0x48], 0x64
call dword [sym.imp.ADVAPI32.dll_RegQueryValueA]
test eax, eax
jne 0x100ac245
movsx eax, byte [esp + 0x3f]
movsx edx, byte [esp + 0x3d]
movsx ecx, byte [esp + 0x41]
sub edx, 0x43
lea eax, [eax + eax*4]
mov dword [esp + 0x20], edx
mov dword [esp + 0x30], 1
lea edx, [ecx + eax*2 - 0x300]
movsx eax, byte [esp + 0x44]
movsx ecx, byte [esp + 0x45]
lea eax, [eax + eax*4]
mov dword [esp + 0x24], edx
lea eax, [ecx + eax*2]
lea edx, [eax + eax*4]
movsx eax, byte [esp + 0x49]
lea eax, [eax + edx*2]
movsx edx, byte [esp + 0x4a]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*2 - 0x12b2a]
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x2c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x100ac4c9
lea edx, [esp + 0x2c]
lea eax, [esp + 0xa0]
push edx
push eax
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x100ac4c9
lea ecx, [esp + 0x28]
lea edx, [esp + 0x24]
push ecx
lea eax, [esp + 0x24]
push edx
push eax
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 0x100ac4c2
lea edx, [esp + 0x34]
mov dword [esp + 0x30], 1
push edx
push 0x101134e0
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x100ac4c2
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 0x101134c0
push eax
call ebp
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 0x101134d0
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 0x100ac71e
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 0x100ac5f0
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.0x100ac605
jmp dword [eax*4 + 0x100ac790]
mov byte [esp + 0x10], 0x4a
mov byte [esp + 0x11], 0x61
mov byte [esp + 0x12], 0x6e
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x46
mov byte [esp + 0x11], 0x65
mov byte [esp + 0x12], 0x62
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x4d
mov byte [esp + 0x11], 0x61
mov byte [esp + 0x12], 0x72
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x41
mov byte [esp + 0x11], 0x70
mov byte [esp + 0x12], 0x72
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x4d
mov byte [esp + 0x11], 0x61
mov byte [esp + 0x12], 0x79
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x4a
mov byte [esp + 0x11], 0x75
mov byte [esp + 0x12], 0x6e
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x4a
mov byte [esp + 0x11], 0x75
mov byte [esp + 0x12], 0x6c
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x41
mov byte [esp + 0x11], 0x75
mov byte [esp + 0x12], 0x67
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x53
mov byte [esp + 0x11], 0x65
mov byte [esp + 0x12], 0x70
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x4f
mov byte [esp + 0x11], 0x63
mov byte [esp + 0x12], 0x74
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x4e
mov byte [esp + 0x11], 0x6f
mov byte [esp + 0x12], 0x76
jmp case.default.0x100ac605
mov byte [esp + 0x10], 0x44
mov byte [esp + 0x11], 0x65
mov byte [esp + 0x12], 0x63
mov ecx, dword [esp + 0x110]
cmp ecx, 0xd
jbe 0x100ac6f3
mov ecx, 0xd
mov edi, dword [esp + 0x10c]
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 0xc
mov ecx, dword [esp + 0x110]
cmp ecx, 0xc
jbe 0x100ac72f
mov ecx, 0xc
mov edi, dword [esp + 0x10c]
mov eax, ecx
mov esi, 0x101134b0
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 0xc