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

Disassembly:
sub esp, 0x170
mov eax, dword [0x10060008]
xor eax, esp
mov dword [esp + 0x16c], eax
mov eax, dword [esp + 0x174]
push ebx
push ebp
mov dword [esp + 0x14], eax
xor ebx, ebx
mov eax, dword [esp + 0x184]
push esi
mov esi, dword [esp + 0x184]
movzx ecx, ax
shr eax, 0x10
push edi
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], 0x30
mov dword [esp + 0x74], ecx
mov dword [esp + 0x18c], eax
call dword [sym.imp.USER32.dll_CreatePopupMenu]
mov edi, eax
movzx eax, si
push eax
push dword [0x10064714]
mov dword [esp + 0x20], edi
mov dword [esp + 0x78], eax
call dword [sym.imp.USER32.dll_GetDlgItem]
mov esi, eax
push 0xffffffffffffffeb
push esi
call dword [sym.imp.USER32.dll_GetWindowLongA]
mov ecx, dword [0x10064770]
mov ebp, eax
mov dword [esp + 0x14], ebp
test ecx, ecx
je 0x10008b83
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x58]
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x64], esi
mov dword [esp + 0x5c], ebp
mov eax, dword [eax]
mov dword [esp + 0x58], eax
mov eax, dword [0x10064714]
mov dword [esp + 0x68], edi
mov dword [esp + 0x60], eax
mov eax, dword [ecx]
push edx
call dword [eax]
mov eax, dword [ebp + 4]
cmp eax, 1
je 0x10008d88
test eax, eax
je 0x10008d88
cmp eax, 2
jne 0x10008d04
call dword [sym.imp.USER32.dll_CreateMenu]
mov dword [esp + 0x24], eax
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x28]
push eax
push 0x400
push edi
mov dword [esp + 0x38], 0x147
mov dword [esp + 0x44], 0x3ea
mov dword [esp + 0x5c], 9
mov dword [esp + 0x58], str.Bitmasks
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
call dword [sym.imp.USER32.dll_GetMenuItemCount]
push eax
push edi
call dword [sym.imp.USER32.dll_InsertMenuItemA]
mov ecx, dword [0x1006476c]
xor ebp, ebp
test ecx, ecx
je 0x10008f00
push ebp
push 8
call fcn.100413b0
mov ebx, eax
test ebx, ebx
je 0x10008f00
mov esi, dword [ebx + 4]
xor edi, edi
test esi, esi
je 0x10008c83
lea eax, [esp + 0x78]
mov edx, 0xff
mov ecx, eax
sub esi, ecx
nop word [eax + eax]
lea ecx, [edx + 0x7ffffeff]
test ecx, ecx
je 0x10008c49
mov cl, byte [eax + esi]
test cl, cl
je 0x10008c49
mov byte [eax], cl
inc eax
sub edx, 1
jne 0x10008c30
test edx, edx
lea ecx, [eax - 1]
mov edx, 0xff
cmovne ecx, eax
lea eax, [esp + 0x78]
mov byte [ecx], 0
nop dword [eax]
cmp byte [eax], 0
je 0x10008c6b
inc eax
sub edx, 1
jne 0x10008c60
mov eax, 0xff
mov ecx, edx
sub eax, edx
neg ecx
sbb ecx, ecx
xor edi, edi
and ecx, eax
test edx, edx
cmovne edi, ecx
jmp 0x10008c88
mov byte [esp + 0x78], 0
mov ecx, dword [esp + 0x14]
lea eax, [ebp + 0x3f2]
mov dword [esp + 0x38], eax
lea eax, [edi + 1]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x78]
mov dword [esp + 0x4c], eax
xor eax, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], 0x163
mov dword [esp + 0x30], 0
mov dword [esp + 0x48], ebx
cmp dword [ecx + 0x10], ebx
mov ecx, 8
cmove eax, ecx
mov dword [esp + 0x34], eax
lea eax, [esp + 0x28]
push eax
push 0x400
push ebp
push dword [esp + 0x30]
call dword [sym.imp.USER32.dll_InsertMenuItemA]
mov ecx, dword [0x1006476c]
inc ebp
push ebp
push 8
call fcn.100413b0
mov ebx, eax
test ebx, ebx
jne 0x10008c11
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
push 0
push dword [0x10064714]
push 0
push dword [esp + 0x198]
push dword [esp + 0x84]
push 0x102
push edi
call dword [sym.imp.USER32.dll_TrackPopupMenu]
push dword [esp + 0x70]
mov esi, eax
push dword [0x10064714]
call dword [sym.imp.USER32.dll_GetDlgItem]
mov ebx, eax
cmp esi, 0x3e8
jae 0x10008f09
mov ecx, dword [0x10064770]
test ecx, ecx
je 0x10008fdb
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x58]
mov dword [esp + 0x64], ebx
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x68], edi
mov eax, dword [eax]
mov dword [esp + 0x58], eax
mov eax, dword [0x10064714]
mov dword [esp + 0x60], eax
mov dword [esp + 0x6c], esi
mov eax, dword [ecx]
push edx
call dword [eax + 0xc]
jmp 0x10008fdb
call dword [sym.imp.USER32.dll_CreateMenu]
mov dword [esp + 0x20], eax
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x28]
push eax
push 0x400
push edi
mov dword [esp + 0x38], 0x147
mov dword [esp + 0x44], 0x3e8
mov dword [esp + 0x5c], 7
mov dword [esp + 0x58], str.Values
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
call dword [sym.imp.USER32.dll_GetMenuItemCount]
push eax
push edi
call dword [sym.imp.USER32.dll_InsertMenuItemA]
mov ecx, dword [0x1006476c]
test ecx, ecx
je 0x10008d04
push 0
push 4
call fcn.100413b0
mov edi, eax
test edi, edi
je 0x10008d00
mov ebp, 0x3f2
nop dword [eax]
mov esi, dword [edi + 4]
xor eax, eax
test esi, esi
je 0x10008e66
lea ecx, [esp + 0x78]
mov edx, 0xff
mov eax, ecx
sub esi, eax
lea eax, [edx + 0x7ffffeff]
test eax, eax
je 0x10008e2f
mov al, byte [ecx + esi]
test al, al
je 0x10008e2f
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10008e16
test edx, edx
lea eax, [ecx - 1]
mov edx, 0xff
cmovne eax, ecx
mov byte [eax], 0
lea eax, [esp + 0x78]
cmp byte [eax], 0
je 0x10008e4e
inc eax
sub edx, 1
jne 0x10008e43
mov eax, 0xff
mov ecx, edx
sub eax, edx
neg ecx
sbb ecx, ecx
and ecx, eax
xor eax, eax
test edx, edx
cmovne eax, ecx
jmp 0x10008e6a
mov byte [esp + 0x78], al
mov ecx, dword [esp + 0x14]
inc eax
mov dword [esp + 0x50], eax
lea eax, [esp + 0x78]
mov dword [esp + 0x4c], eax
xor eax, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], 0x163
mov dword [esp + 0x38], ebp
mov dword [esp + 0x30], 0
mov dword [esp + 0x48], edi
cmp dword [ecx + 0x10], edi
mov ecx, 8
cmove eax, ecx
mov dword [esp + 0x34], eax
lea eax, [esp + 0x28]
push eax
push 0x400
push ebx
push dword [esp + 0x2c]
call dword [sym.imp.USER32.dll_InsertMenuItemA]
mov eax, dword [0x1006476c]
inc ebx
xor edi, edi
xor edx, edx
xor esi, esi
mov ecx, dword [eax + 0x3c]
mov eax, dword [eax + 0x40]
sub eax, ecx
sar eax, 2
test eax, eax
je 0x10008ef2
mov edi, dword [ecx]
test byte [edi + 0xc], 4
jbe 0x10008ee5
cmp edx, ebx
je 0x10008ef2
inc edx
inc esi
add ecx, 4
cmp esi, eax
jb 0x10008ed8
jmp 0x10008cfc
inc ebp
test edi, edi
jne 0x10008e00
jmp 0x10008cfc
mov ebp, dword [esp + 0x14]
jmp 0x10008d04
lea eax, [esp + 0x28]
mov dword [esp + 0x28], 0x30
push eax
xorps xmm0, xmm0
mov dword [esp + 0x30], 0x21
push 0
push esi
push edi
movlpd qword [esp + 0x40], xmm0
movlpd qword [esp + 0x48], xmm0
movlpd qword [esp + 0x50], xmm0
movlpd qword [esp + 0x58], xmm0
movlpd qword [esp + 0x60], xmm0
call dword [sym.imp.USER32.dll_GetMenuItemInfoA]
mov esi, dword [esp + 0x48]
push ebp
push ebx
mov dword [ebp + 0x10], esi
call fcn.10009050
push 1
push 0
push ebx
call dword [sym.imp.USER32.dll_InvalidateRect]
push ebx
call dword [sym.imp.USER32.dll_UpdateWindow]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x70]
add ecx, 0xffffd8f0
mov eax, dword [edx]
mov dword [ebp + 0x10], esi
cmp ecx, dword [eax + 0x30]
jae 0x10008f9a
mov eax, dword [eax + 0x2c]
test eax, eax
je 0x10008f9a
imul edi, ecx, 0x70
mov esi, ebp
mov ecx, 0x1c
add edi, eax
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x18]
mov ecx, dword [0x10064770]
mov dword [0x10064794], 1
test ecx, ecx
je 0x10008fdb
mov eax, dword [edx]
lea edx, [esp + 0x58]
mov dword [esp + 0x58], eax
mov eax, dword [0x10064714]
mov dword [esp + 0x6c], 0
mov dword [esp + 0x64], ebx
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x68], edi
mov dword [esp + 0x60], eax
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov esi, dword [sym.imp.USER32.dll_DestroyMenu]
push edi
call esi
push dword [esp + 0x20]
call esi
push dword [esp + 0x24]
call esi
mov ecx, dword [esp + 0x17c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.100076a5
add esp, 0x170
ret 0xc