Function at 0x436f60
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov ebx, dword [ebp + 8]
mov eax, dword [0x59d024]
xor eax, ebp
mov dword [esp + 0x78], eax
mov edi, 0x80004003
test ebx, ebx
je 0x4372a6
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x4372a6
mov esi, ecx
xor edi, edi
mov dword [eax], edi
push ebx
call fcn.00508f54
add esp, 4
lea ecx, [eax + eax]
cmp eax, 0x32
mov eax, 0x3e8
cmovge eax, ecx
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], eax
add eax, eax
push eax
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov dword [esp + 0x28], eax
test eax, eax
je 0x437277
mov word [eax], 0
mov eax, dword [esp + 0x28]
test eax, eax
je 0x437277
mov dword [esi], ebx
cmp word [ebx], 0
je 0x437289
mov dword [esp + 0x10], 0
mov al, byte [0x5a1d7d]
mov byte [esp + 0xb], al
mov edi, dword [sym.imp.USER32.dll_CharNextW]
mov dword [esp + 0x14], 0
xor eax, eax
mov dword [esp + 0x18], esi
cmp byte [esp + 0xb], 0
mov dword [esp + 0xc], eax
je 0x437038
test eax, eax
je 0x43704b
mov ebx, dword [esp + 0x10]
mov eax, dword [esi]
cmp word [eax], 0x27
jne 0x437041
test bl, 1
jne 0x437098
mov bl, 1
jmp 0x4370e3
mov ebx, dword [esp + 0x10]
jmp 0x4370e3
test bl, 1
je 0x4370be
jmp 0x4370e3
push str.HKCR
push ebx
call fcn.004f0a12
add esp, 8
test eax, eax
je 0x437020
cmp eax, dword [esi]
mov ebx, dword [esp + 0x10]
jne 0x437024
push eax
call edi
mov dword [esi], eax
push eax
call edi
mov dword [esi], eax
push eax
call edi
mov dword [esi], eax
push eax
call edi
mov dword [esi], eax
lea ecx, [esp + 0x20]
push 0x1f
push str.HKCU_r_n_tSoftware_r_n_t_r_n_t_tClasses
call fcn.00437f30
mov cl, 1
mov dword [esp + 0x14], ecx
test eax, eax
jne 0x437024
jmp 0x437277
push eax
call edi
cmp word [eax], 0x27
jne 0x4370bc
push dword [esi]
call edi
mov dword [esi], eax
lea ecx, [esp + 0x20]
push 1
push eax
call fcn.00437f30
test eax, eax
jne 0x4370e3
jmp 0x437277
xor ebx, ebx
mov eax, dword [esi]
movzx eax, word [eax]
xor ecx, ecx
cmp ax, 0x7b
sete cl
mov edx, dword [esp + 0xc]
add edx, ecx
cmp ax, 0x7d
jne 0x4370df
dec edx
je 0x4371ba
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ebx
mov eax, dword [esi]
cmp word [eax], 0x25
jne 0x437108
push eax
call edi
mov ebx, eax
mov dword [esi], eax
movzx eax, word [eax]
cmp ax, 0x25
jne 0x437137
lea ecx, [esp + 0x20]
push 1
push ebx
jmp 0x43710f
lea ecx, [esp + 0x20]
push 1
push eax
call fcn.00437f30
test eax, eax
je 0x437277
push dword [esi]
call edi
mov ebx, eax
mov dword [esi], eax
cmp word [eax], 0
mov eax, dword [esp + 0xc]
jne 0x437011
jmp 0x437285
mov esi, edi
mov edi, 0x80020009
test ebx, ebx
je 0x43729c
test ax, ax
je 0x43729c
movzx eax, ax
cmp eax, 0x25
je 0x437161
push ebx
call esi
mov ebx, eax
movzx eax, word [eax]
jmp 0x437146
test ebx, ebx
je 0x43729c
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
mov ecx, ebx
sub ecx, eax
cmp ecx, 0x3e
jg 0x43727e
sar ecx, 1
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x60], xmm0
movdqa xmmword [esp + 0x50], xmm0
movdqa xmmword [esp + 0x40], xmm0
movdqa xmmword [esp + 0x30], xmm0
push ecx
push eax
push 0x20
lea eax, [esp + 0x3c]
push eax
call fcn.005098d4
add esp, 0x10
cmp eax, 0x15
jle 0x4371d2
cmp eax, 0x50
je 0x4371da
jmp 0x4372c4
test byte [esp + 0x14], 1
jne 0x437252
mov dword [esp + 0xc], 0
jmp 0x4370e3
test eax, eax
jne 0x4372d8
mov eax, dword [esp + 0x18]
mov edi, dword [eax + 4]
lea eax, [esp + 0x30]
mov dword [esp + 0x2c], eax
lea eax, [edi + 0x10]
mov dword [esp + 0x1c], eax
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add edi, 4
mov ecx, edi
lea eax, [esp + 0x2c]
push eax
call fcn.005200e0
mov edi, eax
push dword [esp + 0x1c]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
je 0x4372bd
push edi
call fcn.00508f54
add esp, 4
lea ecx, [esp + 0x20]
push eax
push edi
call fcn.00437f30
test eax, eax
je 0x437277
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
cmp eax, ebx
mov edi, esi
mov esi, ecx
je 0x43711c
push eax
call edi
mov dword [esi], eax
cmp eax, ebx
jne 0x437244
jmp 0x43711c
lea ecx, [esp + 0x20]
push 9
push str._r_n_t_r_n_r_n
call fcn.00437f30
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], 0
jmp 0x4370b3
mov edi, 0x8007000e
jmp 0x43729c
mov edi, 0x80004005
jmp 0x43729c
mov eax, dword [esp + 0x28]
xor edi, edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov ecx, dword [ebp + 0xc]
mov dword [ecx], eax
push dword [esp + 0x28]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov ecx, dword [esp + 0x78]
xor ecx, ebp
call fcn.004ed092
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov edi, 0x80020009
jmp 0x43729c
cmp eax, 0x16
je 0x4372ce
cmp eax, 0x22
jne 0x4372e7
push 0x80070057
call fcn.0053fe80
cmp eax, 0xc
jne 0x4372e7
push 0x8007000e
call fcn.0053fe80
push 0x80004005
call fcn.0053fe80
int3