Function at 0x404a81
Capabilities:
Query or enumerate registry key

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc78
mov eax, dword [0x41f014]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
xor ebx, ebx
push esi
mov esi, ecx
push edi
mov dword [ebp - 0xc18], eax
mov dword [ebp - 0xc24], esi
mov dword [ebp - 0xc40], str.SOFTWAREHummingbirdConnectivity_
mov dword [ebp - 0xc3c], str.SOFTWAREWow6432NodeHummingbirdConnectivity_
mov dword [ebp - 0xc48], str.HomeDir64
mov dword [ebp - 0xc44], str.HomeDir
mov dword [esi], ebx
mov dword [esi + 0x304], ebx
mov dword [esi + 0x308], ebx
mov dword [esi + 0x30c], ebx
mov dword [esi + 0x310], ebx
mov dword [ebp - 0xc20], ebx
mov eax, dword [ebp - 0xc20]
mov eax, dword [ebp + eax*4 - 0xc40]
lea ecx, [ebp - 0xc34]
push ecx
push eax
push reloc.WS2_32.dll_bind
lea edi, [ebp - 0xc38]
call fcn.00404378
add esp, 0xc
cmp eax, ebx
jne 0x4050ba
push 0x206
lea eax, [ebp - 0xc12]
push ebx
push eax
mov word [ebp - 0xc14], bx
call fcn.00407490
mov eax, dword [ebp - 0xc20]
add esp, 0xc
push dword [ebp - 0xc38]
mov dword [ebp - 0xc50], 0x104
push dword [ebp + eax*4 - 0xc40]
mov dword [ebp - 0xc28], ebx
push str.__Key_HKLM_s_accessed__level_d__n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0x10
lea eax, [ebp - 0xc60]
push eax
lea eax, [ebp - 0xc58]
push eax
lea eax, [ebp - 0xc74]
push eax
lea eax, [ebp - 0xc6c]
push eax
lea eax, [ebp - 0xc68]
push eax
lea eax, [ebp - 0xc70]
push eax
lea eax, [ebp - 0xc78]
push eax
lea eax, [ebp - 0xc28]
push eax
push ebx
lea eax, [ebp - 0xc50]
push eax
lea eax, [ebp - 0xc14]
push eax
push dword [ebp - 0xc34]
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
cmp dword [ebp - 0xc28], ebx
je 0x404dc7
cmp dword [ebp - 0xc28], 1
mov eax, 0x41d5f0
ja 0x404be6
mov eax, 0x41b4c0
push eax
push dword [ebp - 0xc28]
push 0x41d5f4
push dword [ebp - 0xc18]
call fcn.00401364
lea eax, [ebp - 0xc64]
push eax
mov edi, 0x41d624
push edi
push 5
push str.10.00
call fcn.0040818c
add esp, 0x20
cmp dword [ebp - 0xc28], ebx
mov dword [ebp - 0xc1c], ebx
jbe 0x404dc7
lea eax, [ebp - 0xc60]
push eax
push ebx
push ebx
push ebx
lea eax, [ebp - 0xc2c]
push eax
lea eax, [ebp - 0x20c]
push eax
push dword [ebp - 0xc1c]
mov dword [ebp - 0xc2c], 0xff
push dword [ebp - 0xc34]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x404daf
lea eax, [ebp - 0x20c]
push eax
push str.__Analyzing_subkey___s__n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0xc
lea eax, [ebp - 0xc4c]
push eax
push edi
lea eax, [ebp - 0x20c]
push 5
push eax
call fcn.0040818c
add esp, 0x10
cmp dword [esi], 0x40
jge 0x404daf
lea eax, [ebp - 0x20c]
push eax
call fcn.00406955
pop ecx
mov ecx, dword [esi]
imul ecx, ecx, 0xc
mov dword [ecx + esi + 4], eax
lea eax, [ebp - 0x20c]
push eax
mov eax, dword [ebp - 0xc20]
push dword [ebp + eax*4 - 0xc40]
lea eax, [ebp - 0xa0c]
push str._s_s_
push 0x800
push eax
call fcn.00406a82
lea eax, [ebp - 0xa0c]
add esp, 0x14
push eax
call fcn.00406955
pop ecx
mov ecx, dword [esi]
imul ecx, ecx, 0xc
cmp dword [ebp - 0xc20], ebx
mov dword [ecx + esi + 8], eax
jne 0x404d0b
push 0x41b66c
jmp 0x404d10
push 0x41d678
call fcn.00406955
pop ecx
mov ecx, dword [esi]
inc ecx
imul ecx, ecx, 0xc
mov dword [ecx + esi], eax
mov eax, dword [esi + 0x304]
inc dword [esi]
cmp eax, ebx
jne 0x404d3f
lea eax, [ebp - 0x20c]
push eax
call fcn.00406955
mov dword [esi + 0x304], eax
jmp 0x404d9b
lea ecx, [ebp - 0xc54]
push ecx
push edi
push 5
push eax
call fcn.0040818c
fld dword [ebp - 0xc4c]
fld dword [ebp - 0xc54]
add esp, 0x10
fcompp
fnstsw ax
test ah, 5
jp 0x404daf
mov eax, dword [esi + 0x304]
cmp eax, ebx
je 0x404d78
push eax
call fcn.00406b2f
pop ecx
lea eax, [ebp - 0x20c]
push eax
call fcn.00406955
mov dword [esi + 0x304], eax
mov eax, dword [esi + 0x308]
cmp eax, ebx
pop ecx
je 0x404d9c
push eax
call fcn.00406b2f
pop ecx
lea eax, [ebp - 0xa0c]
push eax
call fcn.00406955
mov dword [esi + 0x308], eax
pop ecx
inc dword [ebp - 0xc1c]
mov eax, dword [ebp - 0xc1c]
cmp eax, dword [ebp - 0xc28]
jb 0x404c2b
push dword [ebp - 0xc34]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esi + 0x308]
cmp eax, ebx
je 0x404f68
push eax
push str.__Most_recent_key_is_HKLM_s_n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0xc
mov dword [ebp - 0xc1c], ebx
jmp 0x404e03
mov esi, dword [ebp - 0xc24]
mov esi, dword [esi + 0x308]
push esi
call fcn.00405d51
push eax
push str._s_sExceed
mov edi, 0x800
lea eax, [ebp - 0xa0c]
push edi
push eax
call fcn.00406a82
mov eax, dword [ebp - 0xc1c]
mov ebx, dword [ebp + eax*4 - 0xc48]
add esp, 0x14
push ebx
lea eax, [ebp - 0xa0c]
push eax
push str.__Trying_HKLM_s_s_n
push dword [ebp - 0xc18]
call fcn.00401364
push reloc.WS2_32.dll_bind
lea ecx, [ebp - 0xa0c]
call fcn.00404416
mov esi, eax
add esp, 0x14
test esi, esi
je 0x404eba
push esi
push str.__Directory_found:___s__n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0xc
push str.exceed.exe
call fcn.00405d51
push eax
push esi
push 0x41d734
lea eax, [ebp - 0xa0c]
push edi
push eax
call fcn.00406a82
lea eax, [ebp - 0xa0c]
push eax
call fcn.004057db
add esp, 0x1c
test eax, eax
jne 0x405105
push esi
call fcn.00406b2f
pop ecx
jmp 0x404ed5
lea eax, [ebp - 0xa0c]
push eax
push ebx
push str.__Key__s_not_found_in_HKLM_s_n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0x10
inc dword [ebp - 0xc1c]
cmp dword [ebp - 0xc1c], 2
jl 0x404dfd
mov esi, dword [ebp - 0xc24]
xor ebx, ebx
push dword [esi + 0x304]
push str.__Attention:_No_exceed.exe_found_in_most_recent_version___s__
push dword [ebp - 0xc18]
call fcn.00401364
mov eax, dword [esi]
add esp, 0xc
dec eax
cmp eax, 1
mov ecx, 0x41d5f0
jg 0x404f1b
mov ecx, 0x41b4c0
push ecx
push eax
push str.analyzing__d_older_version_s_n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0x10
cmp dword [esi], ebx
mov dword [ebp - 0xc30], ebx
jle 0x4050a6
lea ebx, [esi + 8]
mov dword [ebp - 0xc2c], ebx
push dword [ebx - 4]
push dword [esi + 0x304]
call fcn.00407a8c
test eax, eax
pop ecx
pop ecx
je 0x405087
and dword [ebp - 0xc1c], 0
jmp 0x404f75
mov edi, 0x800
jmp 0x404ef0
mov ebx, dword [ebp - 0xc2c]
mov esi, dword [ebx]
call fcn.00405d51
push eax
push dword [ebx]
lea eax, [ebp - 0xa0c]
push str._s_sExceed
push edi
push eax
call fcn.00406a82
mov eax, dword [ebp - 0xc1c]
mov ebx, dword [ebp + eax*4 - 0xc48]
add esp, 0x14
push ebx
lea eax, [ebp - 0xa0c]
push eax
push str.__Trying_HKLM_s_s_n
push dword [ebp - 0xc18]
call fcn.00401364
push reloc.WS2_32.dll_bind
lea ecx, [ebp - 0xa0c]
call fcn.00404416
mov esi, eax
add esp, 0x14
test esi, esi
je 0x40503e
push esi
push str.__Directory__found:___s__n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0xc
push str.exceed.exe
call fcn.00405d51
push eax
push esi
push 0x41d734
lea eax, [ebp - 0xa0c]
push edi
push eax
call fcn.00406a82
push esi
call fcn.00406b2f
lea eax, [ebp - 0xa0c]
add esp, 0x1c
push eax
call fcn.004057db
test eax, eax
pop ecx
lea eax, [ebp - 0xa0c]
push eax
jne 0x40516b
push str.__exceed.exe_not_found_here:___s__n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0xc
jmp 0x405059
lea eax, [ebp - 0xa0c]
push eax
push ebx
push str.__Key__s_not_found_in_HKLM_s_n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0x10
inc dword [ebp - 0xc1c]
cmp dword [ebp - 0xc1c], 2
jl 0x404f6f
mov eax, dword [ebp - 0xc24]
cmp dword [eax + 0x30c], 0
mov esi, eax
jne 0x4051ff
mov ebx, dword [ebp - 0xc2c]
inc dword [ebp - 0xc30]
mov eax, dword [ebp - 0xc30]
add ebx, 0xc
cmp eax, dword [esi]
mov dword [ebp - 0xc2c], ebx
jl 0x404f47
xor ebx, ebx
push str.__exceed.exe_not_found_here_n
push dword [ebp - 0xc18]
call fcn.00401364
pop ecx
pop ecx
jmp 0x4050e1
push dword [ebp - 0xc38]
push eax
mov eax, dword [ebp - 0xc20]
push dword [ebp + eax*4 - 0xc40]
push str.__HKLM_s_access_failed_with_code_d__level_d__n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0x14
inc dword [ebp - 0xc20]
cmp dword [ebp - 0xc20], 2
jl 0x404af2
xor eax, eax
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004062b8
leave
ret
lea eax, [ebp - 0xa0c]
push eax
push str.__exceed.exe_found_here:___s__n
push dword [ebp - 0xc18]
call fcn.00401364
lea eax, [ebp - 0xa0c]
add esp, 0xc
push eax
call fcn.00406955
mov edi, dword [ebp - 0xc24]
pop ecx
push dword [edi + 0x308]
mov dword [edi + 0x30c], eax
call fcn.00406955
pop ecx
push dword [edi + 0x304]
mov dword [edi + 0x318], eax
call fcn.00406955
pop ecx
push esi
mov dword [edi + 0x314], eax
call fcn.00406b2f
mov eax, dword [edi + 0x30c]
pop ecx
jmp 0x4050f6
push str.__exceed.exe_found_here:___s__n
push dword [ebp - 0xc18]
call fcn.00401364
mov esi, dword [ebp - 0xc24]
mov eax, dword [esi + 0x30c]
add esp, 0xc
test eax, eax
je 0x405195
push eax
call fcn.00406b2f
pop ecx
mov eax, dword [esi + 0x318]
test eax, eax
je 0x4051a6
push eax
call fcn.00406b2f
pop ecx
mov eax, dword [esi + 0x314]
test eax, eax
je 0x4051b7
push eax
call fcn.00406b2f
pop ecx
lea eax, [ebp - 0xa0c]
push eax
call fcn.00406955
mov dword [esi + 0x30c], eax
mov eax, dword [ebp - 0xc30]
imul eax, eax, 0xc
pop ecx
lea edi, [eax + esi]
push dword [edi + 8]
call fcn.00406955
pop ecx
mov dword [esi + 0x318], eax
push dword [edi + 4]
call fcn.00406955
pop ecx
mov dword [esi + 0x314], eax
mov eax, dword [esi + 0x30c]
jmp 0x4050f6
push dword [esi + 0x30c]
push str.__exceed.exe_found_here:___s__n
push dword [ebp - 0xc18]
call fcn.00401364
add esp, 0xc
jmp 0x4051f4