Function at 0x1002a150
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x60
mov esi, esp
mov edi, ecx
mov ecx, dword [ebp + 8]
mov eax, dword [0x10123014]
xor eax, ebp
mov dword [esi + 0x58], eax
lea eax, [edi - 4]
mov dword [esi + 0x2c], eax
movups xmm0, xmmword [ecx]
sub esp, 0x10
movups xmmword [esp], xmm0
call fcn.10060470
add esp, 0x10
mov ecx, eax
mov dword [esi + 0x24], edi
mov eax, dword [edi + 0xf8]
mov dword [esi + 8], eax
test eax, eax
je 0x1002a549
mov ebx, dword [esi + 8]
mov edx, ebx
shr edx, 1
and edx, 0x55555555
mov eax, ebx
sub eax, edx
mov edx, eax
and edx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, edx
mov edx, eax
shr edx, 4
add edx, eax
mov eax, dword [esi + 0x24]
lea edi, [eax + 0xf4]
and edx, 0xf0f0f0f
imul eax, edx, 0x1010101
shr eax, 0x18
mov dword [esi + 0x10], eax
cmp eax, 1
ja 0x1002a1ec
lea edx, [ebx - 1]
and edx, ecx
jmp 0x1002a1fa
cmp ecx, ebx
jae 0x1002a1f4
mov edx, ecx
jmp 0x1002a1fa
mov eax, ecx
xor edx, edx
div ebx
mov dword [esi + 0x34], edi
mov eax, dword [edi]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x1002a549
mov edi, dword [eax]
test edi, edi
je 0x1002a549
mov eax, dword [esi + 8]
dec eax
mov dword [esi + 0x18], eax
mov eax, dword [ebp + 8]
mov ebx, dword [eax]
mov dword [esi + 0x14], ebx
mov ebx, dword [eax + 4]
mov dword [esi + 0x28], ebx
mov ebx, dword [eax + 0xc]
mov dword [esi + 0x20], ebx
mov eax, dword [eax + 8]
mov dword [esi + 0x1c], eax
mov dword [esi + 0xc], edx
jmp 0x1002a255
and eax, dword [esi + 0x18]
cmp eax, edx
jne 0x1002a549
mov edi, dword [edi]
test edi, edi
je 0x1002a549
mov eax, dword [edi + 4]
cmp eax, ecx
jne 0x1002a290
mov eax, dword [edi + 8]
xor eax, dword [esi + 0x14]
mov edx, dword [edi + 0xc]
xor edx, dword [esi + 0x28]
or edx, eax
mov edx, dword [esi + 0xc]
jne 0x1002a24b
mov eax, dword [edi + 0x10]
xor eax, dword [esi + 0x1c]
mov edx, dword [edi + 0x14]
xor edx, dword [esi + 0x20]
or edx, eax
mov edx, dword [esi + 0xc]
jne 0x1002a24b
jmp 0x1002a2ac
cmp dword [esi + 0x10], 1
jbe 0x1002a240
mov ebx, ecx
mov ecx, dword [esi + 8]
cmp eax, ecx
jb 0x1002a2a8
xor edx, edx
div ecx
mov eax, edx
mov edx, dword [esi + 0xc]
mov ecx, ebx
jmp 0x1002a243
mov eax, dword [ebp + 0xc]
mov ecx, dword [esi + 0x14]
xor ecx, dword [eax]
mov edx, dword [esi + 0x28]
xor edx, dword [eax + 4]
or edx, ecx
jne 0x1002a549
mov eax, dword [ebp + 0xc]
mov edx, dword [esi + 0x1c]
xor edx, dword [eax + 8]
mov ecx, dword [esi + 0x20]
xor ecx, dword [eax + 0xc]
or ecx, edx
jne 0x1002a549
mov ebx, dword [esi + 0x24]
lea eax, [ebx + 0x70]
mov dword [esi + 0x1c], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1002a772
mov edx, dword [ebx + 0x78]
test edx, edx
je 0x1002a3e3
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
mov dword [esi + 0xc], ecx
mov ecx, dword [eax + 4]
mov dword [esi + 8], ecx
mov ecx, dword [eax + 0xc]
mov dword [esi + 0x28], ecx
mov eax, dword [eax + 8]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x24]
lea ecx, [eax + 0x74]
mov dword [esi + 0x30], ecx
lea ebx, [eax + 0x78]
mov dword [esi + 0x18], ebx
nop word cs:[eax + eax]
mov dword [esi + 0x10], ebx
mov eax, dword [edx + 0x10]
mov ebx, dword [edx + 0x14]
cmp eax, dword [esi + 0xc]
mov ecx, ebx
sbb ecx, dword [esi + 8]
setb byte [esi + 0x14]
xor ebx, dword [esi + 8]
xor eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x20]
cmp dword [edx + 0x18], ecx
mov ecx, dword [edx + 0x1c]
sbb ecx, dword [esi + 0x28]
setb cl
or eax, ebx
mov ebx, dword [esi + 0x10]
movzx eax, cl
movzx ecx, byte [esi + 0x14]
cmove ecx, eax
test cl, cl
lea eax, [edx + 4]
cmove eax, edx
cmove ebx, edx
mov edx, dword [eax]
test edx, edx
jne 0x1002a330
mov ecx, dword [esi + 8]
mov eax, dword [esi + 0xc]
cmp ebx, dword [esi + 0x18]
je 0x1002a3e3
mov edx, dword [ebx + 0x10]
mov dword [esi + 0x18], edx
cmp eax, edx
mov edx, dword [ebx + 0x14]
mov dword [esi + 0x10], edx
mov edx, ecx
sbb edx, dword [esi + 0x10]
setb byte [esi + 0x14]
xor ecx, dword [esi + 0x10]
xor eax, dword [esi + 0x18]
mov edx, dword [esi + 0x20]
cmp edx, dword [ebx + 0x18]
mov edx, dword [esi + 0x28]
sbb edx, dword [ebx + 0x1c]
setb dh
or eax, ecx
movzx eax, dh
movzx ecx, byte [esi + 0x14]
cmove ecx, eax
test cl, cl
jne 0x1002a3e3
lea eax, [ebx + 0x20]
lea edx, [esi + 0x40]
mov ecx, dword [esi + 0x30]
push eax
mov eax, dword [ebp + 0x10]
push eax
push eax
push edx
call fcn.1002ef20
mov ecx, dword [esi + 0x30]
push ebx
lea eax, [esi + 0x40]
push eax
call fcn.1002eae0
push dword [esi + 0x1c]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebx, dword [edi + 0x18]
test ebx, ebx
je 0x1002a3f7
lock inc dword [ebx + 4]
lea eax, [esi + 0x40]
mov ecx, dword [esi + 0x34]
push edi
push eax
call fcn.1001bbe0
mov edi, dword [esi + 0x40]
mov dword [esi + 0x40], 0
test edi, edi
je 0x1002a42d
cmp byte [esi + 0x48], 0
je 0x1002a424
lea eax, [edi + 8]
push eax
call fcn.1002d650
add esp, 4
push edi
call fcn.100de098
add esp, 4
test ebx, ebx
je 0x1002a435
lock inc dword [ebx + 4]
mov ecx, dword [esi + 0x2c]
push 0
push 0
mov dword [esi + 0xc], ebx
push ebx
push dword [ebp + 0x10]
call fcn.10028ee0
mov dword [esi + 0x3c], 0xffffffff
cmp byte [0x10123c2c], 0
mov edi, dword [esi + 0x24]
je 0x1002a56a
mov dword [esi + 0x3c], 0
mov dword [esi + 0x38], 0xffffffff
lea ebx, [edi + 0x94]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1002a77f
movups xmm0, xmmword [edi + 0x9c]
movaps xmmword [esi + 0x40], xmm0
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lea eax, [esi + 0x38]
mov ecx, dword [esi + 0x2c]
lea edx, [esi + 0x40]
push edx
push eax
call fcn.10028120
mov eax, dword [esi + 0x38]
mov dword [esi + 8], eax
test eax, eax
jne 0x1002a4dc
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1002a7a3
mov eax, dword [edi + 0xac]
test eax, eax
je 0x1002a65f
lock inc dword [eax + 4]
mov dword [esi + 8], eax
mov dword [esi + 0x38], eax
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lea ebx, [edi + 0xb0]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1002a78b
lea ecx, [edi + 0xc4]
push 1
call fcn.1002f0a0
mov eax, dword [edi + 0xd0]
cmp dword [edi + 0xc8], eax
jb 0x1002a7af
mov ecx, dword [edi + 0xc4]
shl eax, 4
mov edx, dword [ebp + 0x10]
movups xmm0, xmmword [edx]
movups xmmword [ecx + eax], xmm0
mov eax, dword [edi + 0xc8]
mov edx, dword [edi + 0xd0]
lea ecx, [eax - 1]
cmp edx, ecx
jne 0x1002a5d5
mov dword [edi + 0xd0], 0
jmp 0x1002a5e9
mov ecx, dword [esi + 0x2c]
push 0
push dword [ebp + 8]
call fcn.10028760
mov ecx, dword [esi + 0x58]
xor ecx, ebp
call fcn.100dea63
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
lea ebx, [edi + 0xb0]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1002a797
movups xmm0, xmmword [edi + 0xb4]
movaps xmmword [esi + 0x40], xmm0
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lea eax, [esi + 0x3c]
mov ecx, dword [esi + 0x2c]
lea edx, [esi + 0x40]
push edx
push eax
call fcn.10028120
mov ebx, dword [esi + 0x3c]
test ebx, ebx
je 0x1002a466
mov dword [esi + 8], esp
push eax
sub esp, 8
mov edi, esp
lea eax, [edi + 4]
mov ecx, dword [esi + 0xc]
push eax
call fcn.10023880
mov eax, dword [ebp + 0x10]
mov dword [edi], eax
mov ecx, ebx
call fcn.10023c10
mov esp, dword [esi + 8]
jmp 0x1002a6a9
mov edi, edx
inc edi
mov dword [esi + 0x10], ebx
mov ebx, dword [esi + 0x24]
mov dword [ebx + 0xd0], edi
mov ebx, dword [esi + 0x10]
jne 0x1002a5eb
mov edx, ecx
cmp eax, edx
jb 0x1002a7b2
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [esi + 8]
lock dec dword [ecx + 4]
jne 0x1002a6a2
mov edi, dword [ecx + 8]
mov eax, dword [edi]
mov ebx, dword [eax + 0x1c]
mov dword [esi + 8], ecx
mov ecx, ebx
call dword [section..00cfg]
mov ecx, edi
call ebx
test al, al
je 0x1002a62e
mov ecx, dword [esi + 8]
push 1
call fcn.10025bc0
jmp 0x1002a6a2
mov ebx, dword [esi + 8]
mov edi, dword [ebx + 8]
push 0x4b
push str....._basememory_ref_counted_delete_on_sequence.h
push str.DestructOnSequence
lea eax, [esi + 0x40]
push eax
call fcn.10060920
add esp, 0x10
mov ecx, edi
push ebx
push 0x1002d7d0
lea eax, [esi + 0x40]
push eax
call fcn.10068300
jmp 0x1002a6a2
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov dword [esi + 8], esp
sub esp, 0x14
mov ebx, edi
mov edi, esp
mov ecx, dword [esi + 0xc]
call fcn.10025b90
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], edx
lea ecx, [edi + 4]
call fcn.10080e18
add ebx, 4
mov dword [edi], ebx
mov eax, dword [esi + 0x14]
mov dword [edi + 0x10], eax
mov eax, dword [esi + 0x10]
mov dword [edi + 0xc], eax
mov ecx, dword [esi + 0xc]
call fcn.10024030
mov esp, dword [esi + 8]
mov ebx, dword [esi + 0x3c]
test ebx, ebx
je 0x1002a702
lock dec dword [ebx + 4]
jne 0x1002a702
mov eax, dword [ebx + 8]
mov dword [esi + 8], eax
mov eax, dword [eax]
mov edi, dword [eax + 0x1c]
mov ecx, edi
call dword [section..00cfg]
mov ecx, dword [esi + 8]
call edi
test al, al
je 0x1002a6d6
mov ecx, ebx
push 1
call fcn.10025bc0
jmp 0x1002a702
mov edi, dword [ebx + 8]
push 0x4b
push str....._basememory_ref_counted_delete_on_sequence.h
push str.DestructOnSequence
lea eax, [esi + 0x40]
push eax
call fcn.10060920
add esp, 0x10
mov ecx, edi
push ebx
push 0x1002d7d0
lea eax, [esi + 0x40]
push eax
call fcn.10068300
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x1002a556
lock dec dword [ecx + 4]
jne 0x1002a556
mov edi, dword [ecx + 8]
mov eax, dword [edi]
mov ebx, dword [eax + 0x1c]
mov ecx, ebx
call dword [section..00cfg]
mov ecx, edi
call ebx
test al, al
je 0x1002a73e
mov ecx, dword [esi + 0xc]
push 1
call fcn.10025bc0
jmp 0x1002a556
mov ebx, dword [esi + 0xc]
mov edi, dword [ebx + 8]
push 0x4b
push str....._basememory_ref_counted_delete_on_sequence.h
push str.DestructOnSequence
lea eax, [esi + 0x40]
push eax
call fcn.10060920
add esp, 0x10
mov ecx, edi
push ebx
push 0x1002d7d0
lea eax, [esi + 0x40]
push eax
call fcn.10068300
jmp 0x1002a556
mov ecx, dword [esi + 0x1c]
call fcn.1006ca90
jmp 0x1002a2f1
mov ecx, ebx
call fcn.1006ca90
jmp 0x1002a482
mov ecx, ebx
call fcn.1006ca90
jmp 0x1002a4f1
mov ecx, ebx
call fcn.1006ca90
jmp 0x1002a57f
mov ecx, ebx
call fcn.1006ca90
jmp 0x1002a4bd
int3
int3