Function at 0x401a78
Capabilities:
Query or enumerate registry value
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x224
push ebx
push esi
push edi
xor eax, eax
mov dword [ebp - 0x80], 1
push 6
pop ecx
mov dword [ebp - 0x7c], 0x50747356
lea edi, [ebp - 0x98]
rep stosd dword es:[edi], eax
mov dword [ebp - 0x78], 0x687461
lea eax, [ebp - 0x1a4]
mov dword [ebp - 0x6c], eax
lea edi, [ebp - 0x60]
mov dword [ebp - 0x68], 0x104
mov esi, str.CheckSum
push 4
pop ecx
mov dword [ebp - 0x64], ecx
xor ebx, ebx
mov dword [ebp - 0x74], ebx
xor eax, eax
mov dword [ebp - 0x70], ebx
movsd dword es:[edi], dword [esi]
push 6
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x57]
mov esi, str.Offset
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0xa0]
mov dword [ebp - 0x50], eax
lea edi, [ebp - 0x44]
mov dword [ebp - 0x4c], ecx
xor eax, eax
mov dword [ebp - 0x48], ecx
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x3d]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosb byte es:[edi], al
lea eax, [ebp - 0x9c]
or dword [ebp - 0x2c], 0xffffffff
lea edi, [ebp - 0x28]
mov dword [ebp - 0x30], ecx
pop ecx
push dword [ebp + 0xc]
mov dword [ebp - 0x34], eax
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x224]
push str.SOFTWARETechivation_s
push eax
call sub.msvcrt.dll_sprintf
add esp, 0xc
lea eax, [ebp - 4]
push eax
push 0x20019
push ebx
lea eax, [ebp - 0x224]
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x401b53
push 2
jmp 0x401c9e
cmp dword [ebp - 0x80], 0xffffffff
mov edi, ebx
je 0x401b98
mov esi, ebx
mov eax, dword [ebp + esi - 0x68]
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0xc]
push eax
push dword [ebp + esi - 0x6c]
lea eax, [ebp - 0x10]
push eax
push ebx
lea eax, [ebp - 0x7c]
add eax, esi
push eax
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x401bee
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp + esi - 0x80]
jne 0x401bee
inc edi
imul esi, edi, 0x1c
cmp dword [ebp + esi - 0x80], 0xffffffff
jne 0x401b5d
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0x1a4]
push 0x402324
push eax
call sub.msvcrt.dll_fopen
mov esi, eax
pop ecx
pop ecx
test esi, esi
je 0x401c9c
push 2
push ebx
push esi
call sub.msvcrt.dll_fseek
push esi
call sub.msvcrt.dll_ftell
push eax
mov dword [ebp - 8], eax
call sub.msvcrt.dll_malloc
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x401bfe
push esi
call sub.msvcrt.dll_fclose
xor eax, eax
pop ecx
inc eax
jmp 0x401c9f
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 3
jmp 0x401c9e
push ebx
push ebx
push esi
call sub.msvcrt.dll_fseek
push esi
push 1
push dword [ebp - 8]
push edi
call sub.msvcrt.dll_fread
push esi
call sub.msvcrt.dll_fclose
mov esi, dword [ebp - 8]
add esp, 0x20
mov eax, esi
mov edx, ebx
shr eax, 2
test eax, eax
je 0x401c31
add ebx, dword [edi + edx*4]
inc edx
cmp edx, eax
jb 0x401c29
shl edx, 2
jmp 0x401c47
movzx eax, byte [edi + edx]
mov ecx, edx
and ecx, 3
shl ecx, 3
shl eax, cl
add ebx, eax
inc edx
cmp edx, esi
jb 0x401c36
push edi
call sub.msvcrt.dll_free
pop ecx
cmp ebx, dword [ebp - 0xa0]
jne 0x401c9c
lea eax, [ebp - 0x1a4]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test esi, esi
jne 0x401c71
push 5
jmp 0x401c9e
mov eax, dword [ebp - 0x9c]
lea ecx, [ebp - 0x98]
add eax, esi
call eax
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push dword [ebp - 0x98]
push dword [ebp + 8]
call sub.msvcrt.dll_strcpy
pop ecx
pop ecx
xor eax, eax
jmp 0x401c9f
push 4
pop eax
pop edi
pop esi
pop ebx
leave
ret