Function at 0x100f6c00
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
mov eax, 0x1c78
call fcn.10451050
mov eax, dword [0x11ad127c]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebx + 8]
push esi
mov esi, dword [ebx + 0xc]
push edi
push 0x400
mov dword [ebp - 0x1c64], eax
mov edi, ecx
lea eax, [ebp - 0xc60]
mov byte [ebp - 0x1c66], 0
push 0
push eax
call fcn.10425c00
add esp, 0xc
mov byte [ebp - 0x1c65], 0
lea eax, [edi + 0x156c]
mov dword [ebp - 0x1c74], eax
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x1c64]
push 0xcd4
push 0
push eax
call fcn.10425c00
add esp, 0xc
lea eax, [ebp - 0x1460]
push 0xffffffffffffffff
push esi
push 0x200
push eax
lea eax, [ebp - 0x1c6c]
push eax
call fcn.1043b2ed
add esp, 0x14
lea eax, [ebp - 0xc60]
push eax
call fcn.100f99a0
push 0x38
lea eax, [ebp - 0x3c]
push 0
push eax
call fcn.10425c00
movaps xmm1, xmmword [0x1122e3e0]
add esp, 0xc
xor ecx, ecx
nop word [eax + eax]
movups xmm0, xmmword [ecx*2 + 0x11220a40]
pxor xmm0, xmm1
movups xmmword [ebp + ecx*2 - 0x3c], xmm0
add ecx, 8
cmp ecx, 0x18
jb 0x100f6cd0
cmp ecx, 0x1c
jae 0x100f6d08
nop
mov eax, 0x5aa5
xor ax, word [ecx*2 + 0x11220a40]
mov word [ebp + ecx*2 - 0x3c], ax
inc ecx
cmp ecx, 0x1c
jb 0x100f6cf0
lea eax, [ebp - 0x1460]
push eax
lea eax, [ebp - 0x3c]
push eax
call fcn.1043c7c5
add esp, 8
test byte [edi + 0x1c], 1
je 0x100f6d32
lea eax, [edi + 0xd38]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
and byte [edi + 0x1c], 0xfe
mov eax, dword [edi + 0xc24]
test eax, eax
je 0x100f6d4f
push eax
call fcn.10434337
add esp, 4
mov dword [edi + 0xc24], 0
mov eax, dword [edi + 0xc28]
test eax, eax
je 0x100f6d6c
push eax
call fcn.10434337
add esp, 4
mov dword [edi + 0xc28], 0
cmp dword [edi + 0x14], 0
je 0x100f6d8b
push dword [edi + 4]
call fcn.10434337
add esp, 4
mov dword [edi + 4], 0
mov dword [edi + 0x14], 0
mov eax, dword [edi]
test eax, eax
je 0x100f6da0
push eax
call fcn.10434337
add esp, 4
mov dword [edi], 0
mov ecx, edi
call fcn.100f6010
lea eax, [ebp - 0x1c65]
mov ecx, edi
push eax
push 0
push 0
push 0
push 0
push 0x400
lea eax, [ebp - 0x1c60]
push eax
push 0x400
lea eax, [ebp - 0x860]
push eax
push 0x400
lea eax, [ebp - 0x1460]
push eax
call fcn.100f6170
test al, al
je 0x100f72ef
cmp byte [ebp - 0x1c65], 0
je 0x100f72ef
test byte [edi + 0x1c], 1
je 0x100f72ef
cmp dword [edi + 0x14], 0
jne 0x100f6e15
mov ecx, edi
call fcn.100f5b00
test al, al
je 0x100f72ef
mov edx, dword [edi + 8]
xor ecx, ecx
mov eax, dword [edi + 4]
test edx, edx
je 0x100f72ef
add eax, 4
cmp dword [eax], 0x701eb457
je 0x100f6e3d
inc ecx
add eax, 0x10
cmp ecx, edx
jb 0x100f6e28
jmp 0x100f72ef
mov esi, dword [ebp - 0x1c64]
lea eax, [ebp - 0x1c60]
push 0xffffffffffffffff
push eax
push 0x80
lea eax, [ebp - 0x1c6c]
push esi
push eax
call fcn.1043b005
add esp, 0x14
lea eax, [ebp - 0x1c60]
push 0xffffffffffffffff
push eax
push 0x40
lea eax, [esi + 0x80]
push eax
lea eax, [ebp - 0x1c6c]
push eax
call fcn.1043b005
add esp, 0x14
test byte [edi + 0x1c], 1
je 0x100f6f0b
cmp dword [edi + 0x14], 0
jne 0x100f6e9d
mov ecx, edi
call fcn.100f5b00
test al, al
je 0x100f6ecb
mov edx, dword [edi + 8]
xor eax, eax
mov esi, dword [edi + 4]
test edx, edx
je 0x100f6ec5
mov ecx, esi
nop dword [eax + eax]
cmp dword [ecx + 4], 0x7049c7ec
je 0x100f6f7a
inc eax
add ecx, 0x10
cmp eax, edx
jb 0x100f6eb0
mov esi, dword [ebp - 0x1c64]
test byte [edi + 0x1c], 1
je 0x100f6f0b
cmp dword [edi + 0x14], 0
jne 0x100f6ee2
mov ecx, edi
call fcn.100f5b00
test al, al
je 0x100f6f0b
mov edx, dword [edi + 8]
xor eax, eax
mov esi, dword [edi + 4]
test edx, edx
je 0x100f6f05
mov ecx, esi
cmp dword [ecx + 4], 0x7051e5f5
je 0x100f6fd6
inc eax
add ecx, 0x10
cmp eax, edx
jb 0x100f6ef0
mov esi, dword [ebp - 0x1c64]
mov eax, esi
mov ecx, 0xc6
add ecx, eax
mov eax, dword [0x1046c1e0]
mov dword [ebp - 0x1c70], ecx
mov dword [ecx], eax
mov al, byte [0x1046c1e4]
mov byte [ecx + 4], al
test byte [edi + 0x1c], 1
je 0x100f71e8
cmp dword [edi + 0x14], 0
jne 0x100f6f48
mov ecx, edi
call fcn.100f5b00
test al, al
je 0x100f70b3
mov edx, dword [edi + 8]
xor eax, eax
mov esi, dword [edi + 4]
test edx, edx
je 0x100f70b3
mov ecx, esi
nop word [eax + eax]
cmp dword [ecx + 4], 0x704d456e
je 0x100f705e
inc eax
add ecx, 0x10
cmp eax, edx
jb 0x100f6f60
jmp 0x100f70b3
add eax, eax
lea edx, [esi + eax*8]
mov eax, dword [edx]
cmp eax, 0x400
ja 0x100f6ec5
cmp eax, 4
jne 0x100f6f96
add ecx, 0xc
jmp 0x100f6f99
mov ecx, dword [edx + 0xc]
push eax
push ecx
lea eax, [ebp - 0x860]
push eax
call fcn.10425d60
mov esi, dword [ebp - 0x1c64]
lea eax, [ebp - 0x860]
add esp, 0xc
push 0xffffffffffffffff
push eax
push 6
lea eax, [esi + 0xc0]
push eax
lea eax, [ebp - 0x1c6c]
push eax
call fcn.1043b005
add esp, 0x14
jmp 0x100f6ecb
add eax, eax
lea edx, [esi + eax*8]
mov eax, dword [edx]
cmp eax, 0x400
ja 0x100f7053
cmp eax, 4
jne 0x100f6fee
add ecx, 0xc
jmp 0x100f6ff1
mov ecx, dword [edx + 0xc]
push eax
push ecx
lea eax, [ebp - 0x860]
push eax
call fcn.10425d60
mov esi, dword [ebp - 0x1c64]
lea eax, [ebp - 0x860]
add esp, 0xc
add esi, 0xc6
mov dword [ebp - 0x1c70], esi
push 0xffffffffffffffff
push eax
push 6
lea eax, [ebp - 0x1c6c]
push esi
push eax
call fcn.1043b005
add esp, 0x14
push esi
call fcn.1043c421
add esp, 4
cmp eax, 0x64
jl 0x100f6f29
mov eax, dword [ebp - 0x1c64]
mov byte [eax + 0x6cc], 1
jmp 0x100f6f29
mov eax, dword [ebp - 0x1c64]
jmp 0x100f6f0d
add eax, eax
lea edx, [esi + eax*8]
mov eax, dword [edx]
cmp eax, 0x400
ja 0x100f70b3
cmp eax, 4
jne 0x100f7076
add ecx, 0xc
jmp 0x100f7079
mov ecx, dword [edx + 0xc]
push eax
push ecx
lea eax, [ebp - 0x860]
push eax
call fcn.10425d60
add esp, 0xc
lea eax, [ebp - 0x860]
push 0xffffffffffffffff
push eax
mov eax, dword [ebp - 0x1c64]
add eax, 0xcc
push 0x200
push eax
lea eax, [ebp - 0x1c6c]
push eax
call fcn.1043b005
add esp, 0x14
test byte [edi + 0x1c], 1
je 0x100f71e8
cmp dword [edi + 0x14], 0
jne 0x100f70d2
mov ecx, edi
call fcn.100f5b00
test al, al
je 0x100f7152
mov edx, dword [edi + 8]
xor eax, eax
mov esi, dword [edi + 4]
test edx, edx
je 0x100f7152
mov ecx, esi
cmp dword [ecx + 4], 0x704cde5a
je 0x100f70f3
inc eax
add ecx, 0x10
cmp eax, edx
jb 0x100f70e0
jmp 0x100f7152
add eax, eax
lea edx, [esi + eax*8]
mov eax, dword [edx]
cmp eax, 0x400
ja 0x100f7152
cmp eax, 4
jne 0x100f710b
add ecx, 0xc
jmp 0x100f710e
mov ecx, dword [edx + 0xc]
push eax
push ecx
lea eax, [ebp - 0x860]
push eax
call fcn.10425d60
add esp, 0xc
lea eax, [ebp - 0x860]
push 0xffffffffffffffff
push eax
push 0x1e
lea eax, [ebp - 0x5c]
push eax
lea eax, [ebp - 0x1c6c]
push eax
call fcn.1043b005
mov eax, dword [ebp - 0x1c64]
add esp, 0x14
add eax, 0x2cc
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.100f6b00
test byte [edi + 0x1c], 1
je 0x100f71e8
cmp dword [edi + 0x14], 0
jne 0x100f7171
mov ecx, edi
call fcn.100f5b00
test al, al
je 0x100f71e8
mov edx, dword [edi + 8]
xor eax, eax
mov esi, dword [edi + 4]
test edx, edx
je 0x100f71e8
mov ecx, esi
nop
cmp dword [ecx + 4], 0x704f5928
je 0x100f7193
inc eax
add ecx, 0x10
cmp eax, edx
jb 0x100f7180
jmp 0x100f71e8
add eax, eax
lea edx, [esi + eax*8]
mov eax, dword [edx]
cmp eax, 0x400
ja 0x100f71e8
cmp eax, 4
jne 0x100f71ab
add ecx, 0xc
jmp 0x100f71ae
mov ecx, dword [edx + 0xc]
push eax
push ecx
lea eax, [ebp - 0x860]
push eax
call fcn.10425d60
add esp, 0xc
lea eax, [ebp - 0x860]
push 0xffffffffffffffff
push eax
mov eax, dword [ebp - 0x1c64]
add eax, 0x4cc
push 0x200
push eax
lea eax, [ebp - 0x1c6c]
push eax
call fcn.1043b005
add esp, 0x14
cmp dword [0x11d21bf4], 2
jne 0x100f72e8
xor esi, esi
test byte [edi + 0x1c], 1
je 0x100f723b
cmp dword [edi + 0x14], esi
jne 0x100f720d
mov ecx, edi
call fcn.100f5b00
test al, al
je 0x100f723b
mov edx, dword [edi + 8]
xor eax, eax
mov ecx, dword [edi + 4]
test edx, edx
je 0x100f723b
add ecx, 4
nop dword [eax]
cmp dword [ecx], 0x709adada
je 0x100f7232
inc eax
add ecx, 0x10
cmp eax, edx
jb 0x100f7220
jmp 0x100f723b
mov esi, dword [edi + 4]
add eax, eax
mov esi, dword [esi + eax*8 + 0xc]
shr esi, 0x1c
push esi
push 0x1046c1f0
push dword [ebp - 0x1c70]
call fcn.100086a0
add esp, 0xc
test byte [edi + 0x1c], 1
je 0x100f72e8
cmp dword [edi + 0x14], 0
jne 0x100f726d
mov ecx, edi
call fcn.100f5b00
test al, al
je 0x100f72e8
mov edx, dword [edi + 8]
xor eax, eax
mov esi, dword [edi + 4]
test edx, edx
je 0x100f72e8
mov ecx, esi
nop dword [eax + eax]
cmp dword [ecx + 4], 0x709adadc
je 0x100f7293
inc eax
add ecx, 0x10
cmp eax, edx
jb 0x100f7280
jmp 0x100f72e8
add eax, eax
lea edx, [esi + eax*8]
mov eax, dword [edx]
cmp eax, 0x400
ja 0x100f72e8
cmp eax, 4
jne 0x100f72ab
add ecx, 0xc
jmp 0x100f72ae
mov ecx, dword [edx + 0xc]
push eax
push ecx
lea eax, [ebp - 0x860]
push eax
call fcn.10425d60
add esp, 0xc
lea eax, [ebp - 0x860]
push 0xffffffffffffffff
push eax
mov eax, dword [ebp - 0x1c64]
add eax, 0xcc
push 0x200
push eax
lea eax, [ebp - 0x1c6c]
push eax
call fcn.1043b005
add esp, 0x14
mov byte [ebp - 0x1c66], 1
push 0x38
lea eax, [ebp - 0x3c]
push 0
push eax
call fcn.10425c00
movaps xmm1, xmmword [0x1122e3e0]
add esp, 0xc
xor ecx, ecx
nop dword [eax + eax]
movups xmm0, xmmword [ecx*2 + 0x11220a40]
pxor xmm0, xmm1
movups xmmword [ebp + ecx*2 - 0x3c], xmm0
add ecx, 8
cmp ecx, 0x18
jb 0x100f7310
cmp ecx, 0x1c
jae 0x100f7348
nop
mov eax, 0x5aa5
xor ax, word [ecx*2 + 0x11220a40]
mov word [ebp + ecx*2 - 0x3c], ax
inc ecx
cmp ecx, 0x1c
jb 0x100f7330
lea eax, [ebp - 0xc60]
push eax
lea eax, [ebp - 0x3c]
push eax
call fcn.1043c7c5
add esp, 8
push dword [ebp - 0x1c74]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x1c66]
xor ecx, ebp
pop edi
pop esi
call fcn.1045066c
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8