Function at 0x415e10
Capabilities:
Get system information on windows
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x78
mov edi, dword [ebp + 0x10]
mov eax, dword [0x4b5040]
xor eax, ebp
mov dword [ebp - 0x10], eax
test edi, edi
je 0x415e44
mov eax, 0x100
push eax
push edi
call fcn.00460275
add esp, 8
cmp eax, 0x100
je 0x416ac3
cmp byte [0x4c44c8], 0
je 0x415f2f
mov ecx, dword [ebp + 8]
xor eax, eax
cmp byte [0x4c44c9], 1
mov edx, 0
adc edx, 1
test ecx, ecx
cmovne edx, ecx
mov dword [ebp - 0x78], edx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], eax
xorps xmm0, xmm0
movsd qword [ebp - 0x44], xmm0
xorps xmm1, xmm1
movups xmmword [ebp - 0x54], xmm1
mov dword [ebp - 0x64], 0xffffffff
mov dword [ebp - 0x58], eax
movsd qword [ebp - 0x60], xmm0
test edi, edi
je 0x416154
lea esi, [ebp - 0x60]
mov ecx, esi
push edi
call fcn.0040aa80
movzx ecx, byte [esi + 0xb]
test cl, cl
mov edi, dword [esi]
mov edx, dword [esi + 4]
mov eax, ecx
mov dword [ebp - 0x6c], edx
cmovs eax, edx
mov ebx, esi
cmovs ebx, edi
add eax, eax
test eax, eax
je 0x415fb7
lea edx, [eax - 2]
cmp word [ebx + eax - 2], 0x5c
mov eax, edx
je 0x415ebe
cmp edx, 0xfffffffe
je 0x415fb7
sar edx, 1
lea eax, [edx + 1]
test cl, cl
jns 0x415f41
mov ebx, dword [ebp - 0x6c]
cmp ebx, edx
jbe 0x416a64
mov dword [ebp - 0x5c], eax
lea eax, [edi + eax*2]
mov word [eax], 0
lea ecx, [ebp - 0x60]
movzx ebx, byte [ecx + 0xb]
test bl, bl
mov eax, dword [ecx]
mov esi, ebx
cmovs esi, dword [ecx + 4]
mov edi, ecx
mov dword [ebp - 0x6c], eax
cmovs edi, eax
xor eax, eax
dec eax
test esi, esi
je 0x415f62
add esi, esi
xor edx, edx
cmp word [edi + edx], 0x5c
jne 0x415f5e
add edx, 2
cmp esi, edx
jne 0x415f1f
jmp 0x415f62
call fcn.00416be0
test al, al
jne 0x415e51
jmp 0x416ac3
cmp edx, ecx
jae 0x4169bc
lea edi, [ebp - 0x60]
mov byte [edi + 0xb], al
jmp 0x415ef3
cmp eax, 0xffffffff
mov ebx, dword [ebp + 0xc]
jne 0x415f72
jmp 0x416b25
sar edx, 1
mov eax, edx
test bl, bl
jns 0x415f51
cmp eax, 0xffffffff
mov ebx, dword [ebp + 0xc]
je 0x416b2e
lea ecx, [ebp - 0x60]
push eax
push 0
call fcn.00444de0
lea esi, [ebp - 0x60]
movzx eax, byte [esi + 0xb]
test al, al
cmovs eax, dword [esi + 4]
mov ecx, dword [esi]
cmovns ecx, esi
test eax, eax
je 0x415fde
add eax, eax
xor edi, edi
cmp word [ecx + edi], 0x5c
je 0x415fa7
add edi, 2
cmp eax, edi
jne 0x415f97
jmp 0x415fde
cmp eax, edi
je 0x415fde
cmp edi, 0xfffffffe
je 0x415fde
sar edi, 1
jmp 0x41691b
test cl, cl
js 0x415fcf
mov word [ebp - 0x60], 0
mov byte [ebp - 0x55], 0
xor eax, eax
mov ebx, dword [ebp + 0xc]
movzx eax, al
jmp 0x415fe8
mov word [edi], 0
mov dword [ebp - 0x5c], 0
mov ebx, dword [ebp + 0xc]
mov al, byte [ebp - 0x55]
test al, al
jns 0x415fca
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x416154
bt ebx, 8
jae 0x416003
mov eax, ebx
and eax, 0x200
jne 0x416154
cmp dword [ebp - 0x78], 2
mov eax, 0x4c44ca
mov ecx, 0x4c46ca
cmove ecx, eax
cmp word [ecx], 0
jne 0x416154
xorps xmm0, xmm0
lea esi, [ebp - 0x34]
movups xmmword [esi + 0x10], xmm0
movups xmmword [esi], xmm0
mov dword [esi + 0x20], 0
push esi
call dword [sym.imp.KERNEL32.dll_GetNativeSystemInfo]
cmp word [esi], 0
je 0x416154
cmp byte [0x4c4aca], 0
setne al
bt ebx, 8
jb 0x416154
mov ecx, ebx
shr ecx, 9
and ecx, 1
or cl, al
je 0x416154
cmp dword [ebp - 0x78], 2
mov eax, 0x4a78bc
mov edx, 0x4a78d0
cmove edx, eax
movzx eax, byte [ebp - 0x55]
test al, al
jns 0x416ad3
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x5c]
xor ecx, ecx
inc ecx
mov dword [ebp - 0x6c], ecx
xor edi, edi
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x7c], 0
jmp 0x4160bc
add edx, 0x14
inc edi
cmp edi, dword [ebp - 0x6c]
jae 0x41614a
mov esi, dword [edx + 4]
mov ebx, eax
sub ebx, esi
jb 0x4160af
push esi
push dword [edx]
push dword [ebp - 0x74]
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x68], eax
call fcn.00460229
mov edx, dword [ebp - 0x70]
add esp, 0xc
test eax, eax
mov eax, dword [ebp - 0x68]
jne 0x4160af
mov eax, dword [ebp - 0x74]
movzx ecx, word [eax + esi*2]
mov eax, dword [ebp - 0x68]
cmp ecx, 0x5c
jne 0x416b15
mov eax, dword [ebp - 0x74]
lea eax, [eax + esi*2]
mov esi, dword [edx + 8]
cmp esi, 2
je 0x41610e
cmp esi, 1
jne 0x41611b
jmp 0x416bad
mov dword [ebp - 0x84], str.WOW6432Node
mov dword [ebp - 0x80], eax
cmp cx, 0x5c
mov dword [ebp - 0x7c], esi
jne 0x416974
lea ecx, [eax + 2]
dec ebx
cmp word [eax + 2], 0x5c
mov dword [ebp - 0x74], ecx
mov eax, ecx
je 0x416128
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x6c], eax
mov edx, dword [edx + 0xc]
xor edi, edi
mov eax, ebx
jmp 0x4160b3
cmp dword [ebp - 0x7c], 0
jne 0x416ae2
mov eax, dword [ebp - 0x78]
cmp eax, 2
jne 0x41616a
cmp word [0x4c44ca], 0
jne 0x416b45
cmp eax, 1
jne 0x41617d
cmp word [0x4c46ca], 0
jne 0x416b66
cmp eax, 2
mov eax, 0x4c48ca
mov edi, str.RegistryMachine_
cmove edi, eax
push edi
call fcn.0045fe10
add esp, 4
cmp eax, 0x7ffffff8
jae 0x416aca
mov ebx, eax
cmp eax, 5
jae 0x4161b4
lea esi, [ebp - 0x34]
mov byte [esi + 0xb], bl
test ebx, ebx
jne 0x4161e1
jmp 0x4161f0
mov dword [ebp - 0x6c], ebx
or ebx, 3
inc ebx
js 0x416ad0
lea eax, [ebx + ebx]
push eax
call fcn.0045e423
add esp, 4
mov esi, eax
mov dword [ebp - 0x34], eax
or ebx, 0x80000000
mov dword [ebp - 0x2c], ebx
mov ebx, dword [ebp - 0x6c]
mov dword [ebp - 0x30], ebx
mov eax, ebx
add eax, ebx
push eax
push edi
push esi
call fcn.00462360
add esp, 0xc
mov word [esi + ebx*2], 0
lea edi, [ebp - 0x34]
movzx edx, byte [edi + 0xb]
test dl, dl
cmovs edx, dword [edi + 4]
cmovs edi, dword [edi]
movzx eax, byte [ebp - 0x55]
mov ecx, 0x7fffffff
and ecx, dword [ebp - 0x58]
dec ecx
test al, al
mov esi, 4
cmovs esi, ecx
mov ebx, eax
cmovs ebx, dword [ebp - 0x5c]
mov ecx, esi
sub ecx, ebx
cmp ecx, edx
jb 0x41629d
test edx, edx
je 0x41635d
test al, al
js 0x41623c
lea esi, [ebp - 0x60]
jmp 0x41623f
mov esi, dword [ebp - 0x60]
test ebx, ebx
je 0x416271
lea eax, [esi + ebx*2]
xor ecx, ecx
cmp eax, edi
mov eax, 0
cmova eax, edx
cmp esi, edi
cmova eax, ecx
lea edi, [edi + eax*2]
lea eax, [esi + edx*2]
lea ecx, [ebx + ebx]
push ecx
push esi
push eax
mov dword [ebp - 0x6c], edx
call fcn.00462360
mov edx, dword [ebp - 0x6c]
add esp, 0xc
lea eax, [edx + edx]
push eax
push edi
push esi
mov edi, edx
call fcn.00462360
add esp, 0xc
add ebx, edi
cmp byte [ebp - 0x55], 0
js 0x416298
mov eax, ebx
and al, 0x7f
mov byte [ebp - 0x55], al
lea eax, [esi + ebx*2]
jmp 0x416358
mov dword [ebp - 0x5c], ebx
jmp 0x416290
mov dword [ebp - 0x6c], edx
lea ecx, [ebx + edx]
mov dword [ebp - 0x68], ecx
sub ecx, esi
mov edx, 0x7ffffff6
sub edx, esi
cmp edx, ecx
jb 0x416acd
test al, al
js 0x4162c0
lea eax, [ebp - 0x60]
jmp 0x4162c3
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x70], eax
mov ecx, 0x7ffffff7
cmp esi, 0x3ffffff2
ja 0x4162f4
lea eax, [esi + esi]
mov ecx, dword [ebp - 0x68]
cmp ecx, eax
cmova eax, ecx
mov ecx, 5
cmp eax, 5
jb 0x4162f4
or eax, 3
inc eax
mov ecx, eax
js 0x416b42
mov dword [ebp - 0x74], ecx
lea eax, [ecx + ecx]
push eax
call fcn.0045e423
add esp, 4
mov ecx, dword [ebp - 0x6c]
add ecx, ecx
push ecx
push edi
mov edi, eax
push eax
call fcn.00462360
add esp, 0xc
test ebx, ebx
mov ecx, dword [ebp - 0x70]
je 0x416333
mov eax, dword [ebp - 0x6c]
lea eax, [edi + eax*2]
add ebx, ebx
push ebx
push ecx
push eax
mov ebx, ecx
call fcn.00462360
mov ecx, ebx
add esp, 0xc
cmp esi, 4
je 0x416341
push ecx
call fcn.0045e41e
add esp, 4
mov dword [ebp - 0x60], edi
mov eax, dword [ebp - 0x74]
or eax, 0x80000000
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x5c], eax
lea eax, [edi + eax*2]
mov word [eax], 0
cmp byte [ebp - 0x29], 0
jns 0x41636e
push dword [ebp - 0x34]
call fcn.0045e41e
add esp, 4
mov edi, dword [ebp + 0xc]
or edi, 1
cmp byte [ebp - 0x55], 0
js 0x41637f
lea eax, [ebp - 0x60]
jmp 0x416382
mov eax, dword [ebp - 0x60]
lea esi, [ebp - 0x3c]
push eax
push esi
call sub.ntdll.dll_RtlInitUnicodeString
lea edx, [ebp - 0x54]
mov dword [edx], 0x18
xor eax, eax
mov dword [edx + 4], eax
mov dword [edx + 0xc], 0x40
mov dword [edx + 8], esi
mov dword [edx + 0x10], eax
mov dword [edx + 0x14], eax
lea ecx, [ebp - 0x64]
push eax
push edx
push edi
push ecx
call sub.ntdll.dll_NtOpenKeyEx
mov esi, eax
cmp byte [ebp - 0x55], 0
jns 0x4163c9
push dword [ebp - 0x60]
call fcn.0045e41e
add esp, 4
xor ebx, ebx
test esi, esi
jns 0x4163e3
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00461246
mov eax, ebx
add esp, 0x78
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], ebx
cmp byte [0x4c44c8], 0
jne 0x416408
call fcn.00416be0
test al, al
je 0x4167a2
mov eax, dword [ebp + 0x14]
xor ecx, ecx
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x54], ecx
push eax
lea esi, [ebp - 0x54]
push esi
call sub.ntdll.dll_RtlInitUnicodeString
mov esi, 0x18
lea ebx, [ebp - 0x60]
mov dword [ebx], esi
push esi
call fcn.0045e423
add esp, 4
mov edi, eax
xorps xmm0, xmm0
movups xmmword [eax], xmm0
xorps xmm0, xmm0
movsd qword [eax + 0x10], xmm0
push ebx
push esi
push eax
push 1
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x6c]
call sub.ntdll.dll_NtQueryValueKey
cmp eax, 0xc0000023
je 0x416463
cmp eax, 0x80000005
jne 0x416695
mov esi, dword [ebp - 0x60]
cmp esi, 0x18
jbe 0x4164d1
mov dword [ebp - 0x68], edi
test esi, esi
js 0x416baa
lea eax, [esi - 0x18]
mov dword [ebp - 0x74], eax
cmp esi, 0x31
mov ebx, 0x30
cmovae ebx, esi
push ebx
call fcn.0045e423
add esp, 4
mov edi, eax
add eax, 0x18
add ebx, edi
mov dword [ebp - 0x70], ebx
push dword [ebp - 0x74]
push 0
push eax
call fcn.004628e0
add esp, 0xc
mov eax, dword [ebp - 0x68]
movups xmm0, xmmword [eax]
movups xmmword [edi], xmm0
movsd xmm0, qword [eax + 0x10]
movsd qword [edi + 0x10], xmm0
mov ebx, edi
add ebx, esi
test eax, eax
je 0x4164e5
push eax
call fcn.0045e41e
add esp, 4
mov esi, dword [ebp - 0x60]
jmp 0x4164e5
mov eax, 0x18
add eax, edi
mov ebx, edi
add ebx, esi
cmp esi, 0x18
mov dword [ebp - 0x70], eax
cmove ebx, eax
lea eax, [ebp - 0x60]
push eax
push esi
push edi
push 1
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x6c]
call sub.ntdll.dll_NtQueryValueKey
cmp eax, 0xc0000023
je 0x41650b
cmp eax, 0x80000005
jne 0x416695
mov esi, dword [ebp - 0x60]
mov edx, ebx
sub edx, edi
mov ecx, edi
mov edi, esi
sub edi, edx
jbe 0x4165c2
mov dword [ebp - 0x68], ecx
mov ecx, dword [ebp - 0x70]
mov eax, ecx
sub eax, ebx
cmp eax, edi
jb 0x416543
lea esi, [ebx + edi]
push edi
push 0
push ebx
call fcn.004628e0
add esp, 0xc
mov edi, dword [ebp - 0x68]
jmp 0x4165ce
mov dword [ebp - 0x78], edx
test esi, esi
js 0x416baa
sub ecx, dword [ebp - 0x68]
lea eax, [ecx + ecx]
cmp eax, esi
cmovbe eax, esi
cmp ecx, 0x3fffffff
mov ecx, 0x7fffffff
cmovb ecx, eax
mov dword [ebp - 0x70], ecx
push ecx
call fcn.0045e423
add esp, 4
mov dword [ebp - 0x74], eax
mov ecx, dword [ebp - 0x78]
add eax, ecx
push edi
mov edi, dword [ebp - 0x68]
push 0
mov dword [ebp - 0x7c], eax
push eax
call fcn.004628e0
add esp, 0xc
cmp ebx, edi
je 0x4165a8
push dword [ebp - 0x78]
push edi
push dword [ebp - 0x74]
call fcn.00462360
add esp, 0xc
mov ebx, edi
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x74]
add dword [ebp - 0x70], eax
add esi, eax
test ebx, ebx
je 0x4165bd
push ebx
call fcn.0045e41e
add esp, 4
mov edi, dword [ebp - 0x7c]
jmp 0x4165ce
lea eax, [ecx + esi]
cmp esi, edx
cmovb ebx, eax
mov esi, ebx
mov edi, ecx
lea eax, [ebp - 0x60]
push eax
push dword [ebp - 0x60]
push edi
push 1
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x6c]
call sub.ntdll.dll_NtQueryValueKey
cmp eax, 0xc0000023
je 0x4165f6
cmp eax, 0x80000005
jne 0x416695
mov ebx, dword [ebp - 0x60]
mov ecx, edi
mov edi, esi
sub edi, ecx
mov edx, ebx
sub edx, edi
ja 0x4167d4
lea eax, [ecx + ebx]
cmp ebx, edi
cmovb esi, eax
mov ebx, esi
mov edi, ecx
lea eax, [ebp - 0x60]
push eax
push dword [ebp - 0x60]
push edi
push 1
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x6c]
call sub.ntdll.dll_NtQueryValueKey
cmp eax, 0xc0000023
je 0x416639
cmp eax, 0x80000005
jne 0x416695
mov eax, dword [ebp - 0x60]
mov esi, ebx
mov dword [ebp - 0x68], edi
sub esi, edi
mov edi, eax
sub edi, esi
jbe 0x416664
mov edx, dword [ebp - 0x70]
mov ecx, edx
sub ecx, ebx
cmp ecx, edi
jb 0x41687f
push edi
push 0
push ebx
call fcn.004628e0
add esp, 0xc
mov edi, dword [ebp - 0x68]
mov bl, 1
lea eax, [ebp - 0x60]
push eax
push dword [ebp - 0x60]
push edi
push 1
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x6c]
call sub.ntdll.dll_NtQueryValueKey
cmp eax, 0x80000005
je 0x41678d
cmp eax, 0xc0000023
je 0x41678d
test eax, eax
js 0x4167d0
mov esi, dword [edi + 4]
mov ebx, dword [edi + 0xc]
mov eax, edi
mov edi, dword [ebp - 0x34]
test ebx, ebx
mov dword [ebp - 0x68], eax
je 0x41677e
mov edx, dword [eax + 8]
add edx, eax
mov eax, dword [ebp - 0x2c]
mov ecx, eax
sub ecx, edi
cmp ecx, ebx
jb 0x416715
mov ecx, dword [ebp - 0x30]
mov eax, ecx
sub eax, edi
cmp eax, ebx
jb 0x4166e0
push ebx
push edx
push edi
call fcn.00462360
add esp, 0xc
add edi, ebx
jmp 0x41677e
add ebx, edx
mov dword [ebp - 0x70], ecx
lea ecx, [edx + eax]
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp - 0x70]
cmp ecx, edi
je 0x4166ff
push eax
push edx
push edi
mov edi, ecx
call fcn.00462360
add esp, 0xc
mov eax, dword [ebp - 0x6c]
sub ebx, eax
push ebx
push eax
push edi
call fcn.00462360
add esp, 0xc
add ebx, edi
mov edi, ebx
jmp 0x41677e
test edi, edi
je 0x41672b
mov dword [ebp - 0x30], edi
push edi
mov edi, edx
call fcn.0045e41e
mov edx, edi
add esp, 4
xor eax, eax
mov dword [ebp - 0x6c], esi
test ebx, ebx
js 0x416bc5
mov dword [ebp - 0x70], edx
lea ecx, [eax + eax]
cmp ecx, ebx
cmovbe ecx, ebx
cmp eax, 0x3fffffff
mov esi, 0x7fffffff
cmovb esi, ecx
test esi, esi
js 0x416bc8
push esi
call fcn.0045e423
add esp, 4
mov edi, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
add esi, eax
mov dword [ebp - 0x2c], esi
push ebx
push dword [ebp - 0x70]
push eax
call fcn.00462360
add esp, 0xc
add edi, ebx
mov esi, dword [ebp - 0x6c]
mov dword [ebp - 0x30], edi
add esi, 0xfffffffd
cmp esi, 0xfffffffe
setb bl
mov edi, dword [ebp - 0x68]
test edi, edi
je 0x41679a
push edi
call fcn.0045e41e
add esp, 4
test bl, bl
je 0x41697c
mov edi, dword [ebp - 0x34]
xor ebx, ebx
test edi, edi
je 0x4167b4
push edi
call fcn.0045e41e
add esp, 4
mov esi, dword [ebp - 0x64]
cmp byte [0x4c44c8], 0
jne 0x4167c5
call fcn.00416be0
push esi
call sub.ntdll.dll_NtClose
jmp 0x4163cf
mov bl, 1
jmp 0x41678d
mov dword [ebp - 0x68], ecx
mov ecx, dword [ebp - 0x70]
mov eax, ecx
sub eax, esi
cmp eax, edx
jb 0x4167f9
lea ebx, [esi + edx]
push edx
push 0
push esi
call fcn.004628e0
add esp, 0xc
mov edi, dword [ebp - 0x68]
jmp 0x416615
mov dword [ebp - 0x74], edx
test ebx, ebx
js 0x416baa
sub ecx, dword [ebp - 0x68]
lea eax, [ecx + ecx]
cmp eax, ebx
cmovbe eax, ebx
cmp ecx, 0x3fffffff
mov ecx, 0x7fffffff
cmovb ecx, eax
mov dword [ebp - 0x70], ecx
push ecx
call fcn.0045e423
add esp, 4
mov dword [ebp - 0x78], eax
add edi, eax
push dword [ebp - 0x74]
push 0
push edi
call fcn.004628e0
mov edx, dword [ebp - 0x68]
add esp, 0xc
cmp esi, edx
je 0x41687a
mov eax, edx
not eax
mov ecx, dword [ebp - 0x78]
mov edi, ecx
add ecx, esi
add eax, ecx
mov cl, byte [esi - 1]
dec esi
mov byte [eax], cl
dec eax
cmp esi, edx
jne 0x416850
mov esi, edx
mov eax, edi
add dword [ebp - 0x70], eax
add ebx, eax
test esi, esi
je 0x416615
push esi
call fcn.0045e41e
add esp, 4
jmp 0x416615
mov eax, dword [ebp - 0x78]
jmp 0x41685f
test eax, eax
js 0x416baa
sub edx, dword [ebp - 0x68]
lea ecx, [edx + edx]
cmp ecx, eax
cmova eax, ecx
cmp edx, 0x3fffffff
mov ecx, 0x7fffffff
cmovb ecx, eax
push ecx
call fcn.0045e423
add esp, 4
mov dword [ebp - 0x70], eax
add esi, eax
push edi
mov edi, dword [ebp - 0x68]
push 0
push esi
call fcn.004628e0
add esp, 0xc
cmp ebx, edi
je 0x4168f1
mov eax, edi
not eax
add eax, ebx
mov edx, dword [ebp - 0x70]
add eax, edx
mov cl, byte [ebx - 1]
dec ebx
mov byte [eax], cl
dec eax
cmp ebx, edi
jne 0x4168cc
mov ebx, edi
mov edi, edx
test ebx, ebx
je 0x416667
push ebx
call fcn.0045e41e
add esp, 4
jmp 0x416667
mov edi, esi
jmp 0x4168db
mov ecx, dword [ebp - 0x60]
cmp word [ecx + edi*2 + 2], 0x5c
jne 0x416944
cmp eax, edi
jbe 0x416bc2
mov ecx, esi
push 1
push edx
call fcn.00444de0
cmp edi, 0xffffffff
je 0x415fde
movzx ecx, byte [ebp - 0x55]
test cl, cl
mov eax, dword [ebp - 0x5c]
mov edx, ecx
cmovs edx, eax
cmp edx, edi
jbe 0x416b22
lea edx, [edi + 1]
test cl, cl
js 0x4168f5
cmp word [ebp + edi*2 - 0x5e], 0x5c
mov eax, ecx
mov ecx, esi
je 0x416900
cmp eax, edx
jbe 0x415fde
lea edi, [edi*2 + 2]
add eax, eax
cmp word [ecx + edi], 0x5c
je 0x416968
add edi, 2
cmp eax, edi
jne 0x416955
jmp 0x415fde
cmp eax, edi
je 0x415fde
sar edi, 1
jmp 0x416912
mov dword [ebp - 0x74], eax
jmp 0x416138
mov esi, dword [ebp + 0x18]
lea edi, [ebp - 0x34]
mov ecx, edi
call fcn.00486820
mov edi, dword [edi]
mov ecx, esi
push edi
call fcn.0040aa80
mov bl, 1
jmp 0x4167a7
mov dword [ebp - 0x70], edi
add edx, 0x80000009
cmp edx, 0x8000000b
jbe 0x416bd7
lea edi, [ebp - 0x60]
mov dword [ebp - 0x6c], ecx
mov edx, 4
jmp 0x4169fe
mov ebx, eax
sub ebx, ecx
je 0x415efb
mov edi, 4
sub edi, ecx
cmp edi, ebx
mov edi, ebx
jb 0x41699a
mov ebx, ecx
jmp 0x416a9a
mov edx, eax
sub edx, dword [ebp - 0x68]
mov esi, 0x7ffffff8
sub esi, ecx
cmp esi, edx
jb 0x416bd7
mov ebx, 0x7ffffff7
mov edx, dword [ebp - 0x68]
cmp edx, 0x3ffffff2
ja 0x416a1c
lea ecx, [edx + edx]
cmp eax, ecx
cmova ecx, eax
mov ebx, 5
cmp ecx, 5
jb 0x416a1c
or ecx, 3
inc ecx
mov ebx, ecx
js 0x416bda
mov dword [ebp - 0x68], edx
lea eax, [ebx + ebx]
push eax
call fcn.0045e423
add esp, 4
mov esi, eax
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x416a41
add eax, eax
push eax
push edi
push esi
call fcn.00462360
add esp, 0xc
cmp dword [ebp - 0x68], 4
je 0x416a50
push edi
call fcn.0045e41e
add esp, 4
mov dword [ebp - 0x60], esi
or ebx, 0x80000000
mov dword [ebp - 0x58], ebx
mov ebx, dword [ebp - 0x6c]
mov dword [ebp - 0x5c], ebx
jmp 0x416a97
mov edx, eax
sub edx, ebx
je 0x415efb
mov ecx, dword [ebp - 0x58]
mov dword [ebp - 0x74], ecx
and ecx, 0x7fffffff
lea esi, [ecx - 1]
mov dword [ebp - 0x68], esi
sub esi, ebx
mov dword [ebp - 0x70], edx
cmp esi, edx
jb 0x4169da
cmp dword [ebp - 0x74], 0
lea esi, [ebp - 0x60]
cmovs esi, edi
mov edi, dword [ebp - 0x70]
lea eax, [esi + ebx*2]
lea ecx, [edi + edi]
push ecx
push 0
push eax
call fcn.004628e0
add esp, 0xc
add ebx, edi
cmp byte [ebp - 0x55], 0
jns 0x416bcb
mov dword [ebp - 0x5c], ebx
lea eax, [esi + ebx*2]
jmp 0x415ef6
xor ebx, ebx
jmp 0x4163cf
int3
int3
int3
mov ecx, eax
lea eax, [ebp - 0x60]
mov dword [ebp - 0x74], eax
mov eax, ecx
jmp 0x41608d
lea esi, [ebp - 0x60]
cmp byte [esi + 0xb], 0
mov eax, esi
jns 0x416af0
mov eax, dword [ebp - 0x60]
mov ebx, dword [ebp - 0x80]
sub ebx, eax
sar ebx, 1
mov edi, dword [ebp - 0x84]
push edi
call fcn.0045fe10
add esp, 4
mov ecx, esi
push eax
push edi
push ebx
call fcn.00436a00
jmp 0x416154
test ecx, ecx
jne 0x4160af
jmp 0x4160f6
int3
mov byte [ebp - 0x55], 0
mov dword [ebp - 0x6c], ecx
jmp 0x416b35
mov dword [ebp - 0x5c], 0
mov eax, dword [ebp - 0x6c]
mov word [eax], 0
jmp 0x415f7d
int3
xor eax, eax
dec eax
lea esi, [ebp - 0x34]
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov ecx, esi
push 0x4c48ca
call fcn.0042d080
mov edi, 0x4c44ca
jmp 0x416b85
xor eax, eax
dec eax
lea esi, [ebp - 0x34]
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov ecx, esi
push 0x4c48ca
call fcn.0042d080
mov edi, 0x4c46ca
push edi
call fcn.0045fe10
add esp, 4
mov ecx, esi
push eax
push edi
call fcn.00436b10
mov ecx, esi
push 1
push 0x4ad1d8
call fcn.00436b10
jmp 0x4161f6
int3
mov dword [ebp - 0x84], str.WOW6432Node_
mov edi, dword [ebp - 0x74]
mov dword [ebp - 0x80], edi
jmp 0x41611b
int3
int3
int3
mov eax, ebx
and al, 0x7f
mov byte [ebp - 0x55], al
jmp 0x416abb
int3
int3