Function at 0x4036f0
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 0x9c
push ebx
push ebp
push esi
lea eax, [esp + 0x14]
push eax
mov dword [esp + 0x18], 0x94
call dword [sym.imp.KERNEL32.DLL_GetVersionExA]
mov ebp, dword [esp + 0x24]
mov esi, 1
cmp ebp, esi
setne al
dec al
and al, 0xf0
add al, 0x20
xor ebx, ebx
cmp al, 0x20
mov byte [0x40f3f4], al
jne 0x403734
mov byte [0x40f296], 1
jmp 0x40373f
mov byte [0x40f296], bl
call fcn.004015c0
mov edx, dword [str.SoftwareRoadkil]
mov ecx, dword [esp + 0xac]
push 0x40fa78
push 0x20019
push ebx
push edx
push 0x80000002
mov byte [0x40f7f8], bl
mov byte [0x40f7e4], bl
mov dword [0x40f3bc], ecx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4037d9
mov eax, dword [0x40fa78]
push 0x40f8fc
push 0x40f928
push 0x40faf0
push ebx
push str.Lic_RawCopy
push eax
mov dword [0x40f8fc], esi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x4037ca
mov ecx, dword [0x40f3bc]
push ebx
push 0x401b10
push ebx
push 0x6f
push ecx
mov byte [0x40f3c0], bl
mov dword [0x40f260], 0x40a9fc
call dword [sym.imp.USER32.dll_DialogBoxParamA]
mov edx, dword [0x40fa78]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x4037fe
mov eax, dword [0x40f3bc]
push ebx
push 0x401b10
push ebx
push 0x6f
push eax
mov byte [0x40f3c0], bl
mov dword [0x40f260], 0x40a9fc
call dword [sym.imp.USER32.dll_DialogBoxParamA]
push 0x200
call fcn.00403c4a
add esp, 4
cmp eax, ebx
mov dword [0x40f7ec], eax
jne 0x40383b
mov ecx, dword [0x40f768]
push 0x10
push str.Out_of_Memory
push str.Insufficient_Memory
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x9c
ret 0x10
push edi
push 0x40a9d0
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push 0x2bc
push ebx
push ebx
push ebx
push 0xe
call dword [sym.imp.GDI32.dll_CreateFontA]
mov edi, dword [sym.imp.GDI32.dll_CreateSolidBrush]
xor esi, esi
mov dword [0x40f968], eax
mov dword [esp + 0x10], esi
lea ebx, [ebx]
fild dword [esp + 0x10]
fst qword [esp + 0x10]
fmul qword [0x40a9c8]
fcos
fmul qword [0x40a9c0]
fcom qword [0x40a418]
fnstsw ax
test ah, 5
jp 0x40389b
fstp st(0)
fld qword [0x40a418]
fld qword [esp + 0x10]
fmul qword [0x40a978]
fst qword [esp + 0x10]
fsin
fmul qword [0x40a9c0]
fcom qword [0x40a418]
fnstsw ax
test ah, 5
jp 0x4038c6
fstp st(0)
fld qword [0x40a418]
fld qword [esp + 0x10]
fmul qword [0x40a9b8]
fsin
fmul qword [0x40a9c0]
call fcn.00401000
xor ebx, ebx
mov bh, al
call fcn.00401000
mov bl, al
shl ebx, 8
call fcn.00401000
movzx edx, al
or ebx, edx
push ebx
call edi
mov dword [esi*4 + 0x40f298], eax
inc esi
cmp esi, 0x32
mov dword [esp + 0x10], esi
jl 0x403870
mov eax, dword [0x40f7ec]
push 0x40a988
push eax
call fcn.00403bf8
add esp, 8
push 0
call edi
mov ecx, dword [0x40f3bc]
mov esi, dword [sym.imp.USER32.dll_LoadImageA]
push 0xa0
push 0x10
push 0x10
push 1
push 0x71
push ecx
mov dword [0x40f404], eax
call esi
mov edx, dword [0x40f3bc]
push 0
push 0x20
push 0x20
push 1
push 0x71
push edx
mov dword [0x40f974], eax
call esi
mov esi, dword [esp + 0xb8]
mov dword [0x40f408], eax
mov eax, esi
lea ecx, [eax + 1]
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x403970
sub eax, ecx
mov ebp, eax
lea eax, [ebp + 4]
push eax
call fcn.00403c4a
mov ecx, ebp
mov edx, ecx
shr ecx, 2
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov byte [eax + ebp], 0
add esp, 4
test eax, eax
mov byte [0x40f750], 0
mov byte [0x40f488], 0
mov byte [0x40fa80], 0
mov byte [0x40f904], 0
mov byte [0x40f392], 0
pop edi
je 0x403af1
xor ecx, ecx
test ebp, ebp
jle 0x4039df
nop
cmp byte [ecx + eax], 0x20
jne 0x4039da
mov byte [ecx + eax], 0
inc ecx
cmp ecx, ebp
jl 0x4039d0
xor ecx, ecx
test ebp, ebp
jle 0x403ae8
lea esp, [esp]
mov dl, byte [ecx + eax]
test dl, dl
je 0x403adf
cmp byte [ecx + eax + 1], 0x3a
jne 0x403a49
mov bl, byte [ecx + eax + 2]
test bl, bl
jne 0x403a49
cmp dl, 0x41
jl 0x403a14
cmp dl, 0x5a
jle 0x403a1a
sub dl, 0x20
mov byte [ecx + eax], dl
mov dl, byte [ecx + eax]
cmp dl, 0x41
jl 0x403a49
cmp dl, 0x5a
jg 0x403a49
mov bl, byte [0x40f904]
test bl, bl
jne 0x403a39
mov byte [0x40f904], dl
jmp 0x403a49
mov bl, byte [0x40f392]
test bl, bl
jne 0x403a49
mov byte [0x40f392], dl
mov dl, byte [ecx + eax + 1]
test dl, dl
jne 0x403a80
mov dl, byte [ecx + eax]
cmp dl, 0x30
jl 0x403a80
cmp dl, 0x39
jg 0x403a80
mov bl, byte [0x40f904]
test bl, bl
jne 0x403a70
mov byte [0x40f904], dl
jmp 0x403a80
mov bl, byte [0x40f392]
test bl, bl
jne 0x403a80
mov byte [0x40f392], dl
cmp byte [ecx + eax], 0x2d
jne 0x403ad0
mov dl, byte [ecx + eax + 2]
test dl, dl
jne 0x403ad0
mov dl, byte [ecx + eax + 1]
cmp dl, 0x79
je 0x403a9c
cmp dl, 0x59
jne 0x403aa6
mov bl, 1
mov byte [0x40f488], bl
jmp 0x403aa8
mov bl, 1
mov dl, byte [ecx + eax + 1]
cmp dl, 0x78
je 0x403ab6
cmp dl, 0x58
jne 0x403abc
mov byte [0x40f750], bl
mov dl, byte [ecx + eax + 1]
cmp dl, 0x65
je 0x403aca
cmp dl, 0x45
jne 0x403ad0
mov byte [0x40fa80], bl
cmp ecx, ebp
jge 0x403adf
cmp byte [ecx + eax], 0
je 0x403adf
inc ecx
cmp ecx, ebp
jl 0x403ad4
inc ecx
cmp ecx, ebp
jl 0x4039f0
push eax
call fcn.00403b8f
add esp, 4
mov eax, dword [esp + 0xac]
push 0
push 0x402910
push 0
push 0x66
push eax
call dword [sym.imp.USER32.dll_DialogBoxParamA]
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x9c
ret 0x10