Function at 0x1000bd70
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x38
mov ebx, dword [esp + 0x4c]
mov eax, dword [0x10019328]
mov ecx, dword fs:[0x2c]
mov esi, dword [ecx + eax*4]
xorps xmm0, xmm0
movups xmmword [ebx], xmm0
push 0x100192a0
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
movzx eax, byte [esi + 0x1598]
test al, al
jne 0x1000c395
mov byte [esp + 0xb], al
lea ebp, [esi + 0x1598]
mov eax, dword [0x100192bc]
mov esi, dword [0x100192b8]
mov ebx, dword [0x100192c0]
mov ecx, dword [0x100192c4]
mov dword [esp], eax
mov edx, ecx
or eax, ecx
mov ecx, esi
or ecx, ebx
or ecx, eax
mov dword [esp + 0xc], ebp
je 0x1000bdf4
mov edi, esi
mov esi, ebx
mov ebx, dword [esp + 0x4c]
mov dword [esp + 4], edx
movzx edx, byte [esp + 0xb]
jmp 0x1000c178
xorps xmm0, xmm0
movups xmmword [esp + 0x10], xmm0
lea ecx, [esp + 0x10]
mov edx, 0x10
call fcn.1000b180
movzx edx, byte [ebp]
test dl, dl
jne 0x1000be42
test al, al
je 0x1000be42
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], ecx
or eax, ecx
mov ecx, edi
mov esi, ebx
or ecx, ebx
or ecx, eax
mov ebx, dword [esp + 0x4c]
je 0x1000be64
jmp 0x1000c11b
xor edi, edi
mov dword [esp], 0
mov esi, 0
mov dword [esp + 4], 0
test dl, dl
mov ebx, dword [esp + 0x4c]
jne 0x1000c152
lea ecx, [esp + 0x10]
mov edx, 0x10
call fcn.1000b180
mov ecx, dword [esp + 0xc]
movzx edx, byte [ecx]
test dl, dl
jne 0x1000bead
test al, al
je 0x1000bead
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], ecx
or eax, ecx
mov ecx, edi
mov esi, ebx
or ecx, ebx
mov ebx, dword [esp + 0x4c]
or ecx, eax
je 0x1000becb
jmp 0x1000c11b
xor edi, edi
mov dword [esp], 0
mov esi, 0
mov dword [esp + 4], 0
test dl, dl
jne 0x1000c152
lea ecx, [esp + 0x10]
mov edx, 0x10
call fcn.1000b180
mov ecx, dword [esp + 0xc]
movzx edx, byte [ecx]
test dl, dl
jne 0x1000bf14
test al, al
je 0x1000bf14
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], ecx
or eax, ecx
mov ecx, edi
mov esi, ebx
or ecx, ebx
mov ebx, dword [esp + 0x4c]
or ecx, eax
je 0x1000bf32
jmp 0x1000c11b
xor edi, edi
mov dword [esp], 0
mov esi, 0
mov dword [esp + 4], 0
test dl, dl
jne 0x1000c152
lea ecx, [esp + 0x10]
mov edx, 0x10
call fcn.1000b180
mov ecx, dword [esp + 0xc]
movzx edx, byte [ecx]
test dl, dl
jne 0x1000bf7b
test al, al
je 0x1000bf7b
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], ecx
or eax, ecx
mov ecx, edi
mov esi, ebx
or ecx, ebx
mov ebx, dword [esp + 0x4c]
or ecx, eax
je 0x1000bf99
jmp 0x1000c11b
xor edi, edi
mov dword [esp], 0
mov esi, 0
mov dword [esp + 4], 0
test dl, dl
jne 0x1000c152
lea ecx, [esp + 0x10]
mov edx, 0x10
call fcn.1000b180
mov ecx, dword [esp + 0xc]
movzx edx, byte [ecx]
test dl, dl
jne 0x1000bfe2
test al, al
je 0x1000bfe2
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], ecx
or eax, ecx
mov ecx, edi
mov esi, ebx
or ecx, ebx
mov ebx, dword [esp + 0x4c]
or ecx, eax
je 0x1000c000
jmp 0x1000c11b
xor edi, edi
mov dword [esp], 0
mov esi, 0
mov dword [esp + 4], 0
test dl, dl
jne 0x1000c152
lea ecx, [esp + 0x10]
mov edx, 0x10
call fcn.1000b180
mov ecx, dword [esp + 0xc]
movzx edx, byte [ecx]
test dl, dl
jne 0x1000c049
test al, al
je 0x1000c049
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], ecx
or eax, ecx
mov ecx, edi
mov esi, ebx
or ecx, ebx
mov ebx, dword [esp + 0x4c]
or ecx, eax
je 0x1000c067
jmp 0x1000c11b
xor edi, edi
mov dword [esp], 0
mov esi, 0
mov dword [esp + 4], 0
test dl, dl
jne 0x1000c152
lea ecx, [esp + 0x10]
mov edx, 0x10
call fcn.1000b180
mov ecx, dword [esp + 0xc]
movzx edx, byte [ecx]
test dl, dl
jne 0x1000c0ad
test al, al
je 0x1000c0ad
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], ecx
or eax, ecx
mov ecx, edi
mov esi, ebx
or ecx, ebx
mov ebx, dword [esp + 0x4c]
or ecx, eax
je 0x1000c0cb
jmp 0x1000c11b
xor edi, edi
mov dword [esp], 0
mov esi, 0
mov dword [esp + 4], 0
test dl, dl
jne 0x1000c152
lea ecx, [esp + 0x10]
mov edx, 0x10
call fcn.1000b180
mov ecx, dword [esp + 0xc]
movzx edx, byte [ecx]
test dl, dl
jne 0x1000c101
test al, al
je 0x1000c101
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov dword [esp], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], eax
mov esi, dword [esp + 0x18]
jmp 0x1000c11b
xor esi, esi
mov dword [esp + 4], 0
mov edi, 0
mov dword [esp], 0
test dl, dl
jne 0x1000c152
mov eax, edi
or eax, esi
mov ecx, dword [esp]
or ecx, dword [esp + 4]
or ecx, eax
jne 0x1000c152
push 1
push 0x10016d50
push 0x51
call fcn.10007c80
mov eax, dword [esp + 0xc]
movzx edx, byte [eax]
xor edi, edi
mov dword [esp], 0
xor esi, esi
mov dword [esp + 4], 0
test dl, 1
jne 0x1000c3a1
mov dword [0x100192b8], edi
mov eax, dword [esp]
mov dword [0x100192bc], eax
mov dword [0x100192c0], esi
mov eax, dword [esp + 4]
mov dword [0x100192c4], eax
movups xmm0, xmmword [0x100192b8]
movups xmmword [ebx], xmm0
mov byte [esp + 0xb], dl
test dl, 1
jne 0x1000c377
mov dword [esp + 0x20], 0
mov dword [esp + 0x2c], 0
xor ecx, ecx
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov edx, dword [esp]
mov ebp, esi
mov esi, dword [esp + 4]
nop word [eax + eax]
mov dword [esp], ecx
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], ebp
mov dword [esp + 4], esi
xor eax, eax
mov ecx, dword [esp]
mov ebx, 1
shld eax, ebx, cl
mov ecx, dword [esp]
shl ebx, cl
test byte [esp], 0x20
cmovne eax, ebx
mov edi, 0
cmovne ebx, edi
and eax, 0xbeac0467
and ebx, 0xeba5facb
or ebx, eax
mov eax, ebp
cmove eax, edi
mov ebx, esi
cmove ebx, edi
mov ecx, dword [esp + 0x34]
mov esi, ecx
cmove esi, edi
mov ebp, edx
cmove edx, edi
xor dword [esp + 0x24], ebx
xor dword [esp + 0x28], eax
xor dword [esp + 0x2c], edx
xor dword [esp + 0x20], esi
mov ebx, ecx
shld ebx, ebp, 0x17
mov eax, ecx
xor eax, dword [esp + 0x30]
mov esi, ebp
mov edx, ebp
shld edx, ecx, 0x17
mov ecx, dword [esp]
xor esi, dword [esp + 4]
mov ebp, esi
shld ebp, eax, 0xe
mov edi, eax
shl edi, 0xe
xor edi, edx
xor edi, eax
xor ebx, esi
mov edx, ebx
xor edx, ebp
mov ebp, esi
mov esi, eax
shld esi, ebp, 4
shld ebp, eax, 4
inc ecx
cmp ecx, 0x40
jne 0x1000c1c0
mov ebx, dword [esp + 0x20]
mov dword [0x100192b8], edi
mov dword [0x100192bc], edx
mov dword [0x100192c0], ebp
mov dword [0x100192c4], esi
test byte [esp + 0xb], 1
jne 0x1000c373
xor ecx, ecx
mov dword [esp + 4], esi
mov esi, edi
mov dword [esp + 0x20], ebx
nop
mov dword [esp], ecx
mov dword [esp + 0x30], ebp
xor eax, eax
mov ecx, dword [esp]
mov edi, 1
shld eax, edi, cl
mov edi, edx
mov edx, 1
mov ecx, dword [esp]
shl edx, cl
test byte [esp], 0x20
cmovne eax, edx
mov ebx, 0
cmovne edx, ebx
and eax, 0xd86b048b
and edx, 0x86aa9922
or edx, eax
mov ecx, ebp
cmove ecx, ebx
mov edx, dword [esp + 4]
cmove edx, ebx
mov ebp, esi
cmove ebp, ebx
mov ebx, edi
mov eax, 0
cmove ebx, eax
xor dword [esp + 0x24], edx
xor dword [esp + 0x28], ecx
mov ecx, dword [esp]
xor dword [esp + 0x2c], ebx
xor dword [esp + 0x20], ebp
mov edx, edi
shld edx, esi, 0x17
mov eax, esi
xor esi, dword [esp + 0x30]
shld eax, edi, 0x17
xor edi, dword [esp + 4]
mov ebx, esi
shl ebx, 0xe
xor ebx, edx
xor eax, edi
mov edx, edi
shld edx, esi, 0xe
xor eax, edx
mov edx, esi
shld edx, edi, 4
mov dword [esp + 4], edx
mov ebp, edi
xor ebx, esi
shld ebp, esi, 4
inc ecx
mov esi, ebx
mov edx, eax
cmp ecx, 0x40
jne 0x1000c2a0
mov eax, dword [esp + 0x20]
mov dword [0x100192b8], eax
mov eax, dword [esp + 0x2c]
mov dword [0x100192bc], eax
mov eax, dword [esp + 0x28]
mov dword [0x100192c0], eax
mov eax, dword [esp + 0x24]
mov dword [0x100192c4], eax
mov ebx, dword [esp + 0x4c]
mov esi, dword [esp + 0xc]
mov byte [esi], 0
push 0x100192a0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp byte [esi], 0
movzx eax, byte [esp + 0xb]
jne 0x1000c395
mov byte [esi], al
mov eax, ebx
add esp, 0x38
pop esi
pop edi
pop ebx
pop ebp
ret 4
mov byte [esp + 0xb], dl
jmp 0x1000c377