Function at 0x10020850
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
push 0xffffffffffffffff
push 0x1008338b
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x1d0
mov eax, dword [0x100a6040]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
cmp byte [edi + 0x20], 0
mov ecx, 0xe10
je 0x10020d30
mov esi, dword [edi + 0x24]
test esi, esi
jle 0x100208af
dec esi
mov dword [edi + 0x24], esi
test esi, esi
js 0x10020d1f
mov eax, esi
cdq
idiv ecx
mov eax, 0x88888889
mov ecx, edx
imul ecx
add edx, ecx
mov ecx, 0x3c
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x50], eax
mov eax, esi
cdq
idiv ecx
mov esi, edx
mov dword [ebp - 4], 0
xorps xmm0, xmm0
push 8
mov dword [ebp - 0x30], 0
movups xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
call fcn.10045fe0
lea ecx, [ebp - 0x30]
add esp, 4
mov dword [eax + 4], 0
mov dword [ebp - 0x30], eax
mov dword [eax], ecx
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], 0
mov eax, dword [ebp - 0x50]
xor ecx, ecx
mov dword [ebp - 4], 1
push esi
push eax
cmp eax, 0xa
jae 0x10020abd
cmp esi, 0xa
jae 0x10020a15
mov dl, 0x43
mov dword [ebp - 0x8c], 0x27667343
mov dword [ebp - 0x88], 0x27667379
mov byte [ebp - 0x84], cl
nop dword [eax + eax]
xor byte [ebp + ecx - 0x8b], dl
inc ecx
cmp ecx, 7
jae 0x10020985
mov dl, byte [ebp - 0x8c]
jmp 0x10020970
sub esp, 0x1c
mov byte [ebp - 0x84], 0
mov edx, esp
lea ecx, [ebp - 0x8b]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100209b5
sub ecx, esi
lea eax, [ebp - 0x8b]
push ecx
push eax
mov ecx, edx
call fcn.10003350
lea eax, [ebp - 0xe4]
push eax
call fcn.1000d820
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x30]
cmp eax, esi
je 0x100209f5
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x30]
call fcn.10007c30
lea ecx, [ebp - 0xe4]
call fcn.10002f50
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0xe4], 0
jmp 0x10020c18
mov dl, 0x23
mov dword [ebp - 0x68], 0x47061323
mov dword [ebp - 0x64], 0x470619
xor byte [ebp + ecx - 0x67], dl
inc ecx
cmp ecx, 6
jae 0x10020a34
mov dl, byte [ebp - 0x68]
jmp 0x10020a25
sub esp, 0x1c
mov byte [ebp - 0x61], 0
mov edx, esp
lea ecx, [ebp - 0x67]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10020a60
sub ecx, esi
lea eax, [ebp - 0x67]
push ecx
push eax
mov ecx, edx
call fcn.10003350
lea eax, [ebp - 0x100]
push eax
call fcn.1000d820
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x30]
cmp eax, esi
je 0x10020a9d
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x30]
call fcn.10007c30
lea ecx, [ebp - 0x100]
call fcn.10002f50
mov eax, dword [ebp - 0x100]
mov dword [ebp - 0x100], 0
jmp 0x10020c18
cmp esi, 0xa
jae 0x10020b6d
mov dl, 0x58
mov dword [ebp - 0x70], 0x623c7d58
mov dword [ebp - 0x6c], 0x3c7d68
xor byte [ebp + ecx - 0x6f], dl
inc ecx
cmp ecx, 6
jae 0x10020ae5
mov dl, byte [ebp - 0x70]
jmp 0x10020ad6
sub esp, 0x1c
mov byte [ebp - 0x69], 0
mov edx, esp
lea ecx, [ebp - 0x6f]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10020b10
sub ecx, esi
lea eax, [ebp - 0x6f]
push ecx
push eax
mov ecx, edx
call fcn.10003350
lea eax, [ebp - 0x11c]
push eax
call fcn.1000d820
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x30]
cmp eax, esi
je 0x10020b4d
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x30]
call fcn.10007c30
lea ecx, [ebp - 0x11c]
call fcn.10002f50
mov eax, dword [ebp - 0x11c]
mov dword [ebp - 0x11c], 0
jmp 0x10020c18
mov dl, 0x6a
mov dword [ebp - 0x58], 0x500e4f6a
mov word [ebp - 0x54], 0xe4f
mov byte [ebp - 0x52], 0
xor byte [ebp + ecx - 0x57], dl
inc ecx
cmp ecx, 5
jae 0x10020b8f
mov dl, byte [ebp - 0x58]
jmp 0x10020b80
sub esp, 0x1c
mov byte [ebp - 0x52], 0
mov edx, esp
lea ecx, [ebp - 0x57]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10020bc0
sub ecx, esi
lea eax, [ebp - 0x57]
push ecx
push eax
mov ecx, edx
call fcn.10003350
lea eax, [ebp - 0x138]
push eax
call fcn.1000d820
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x30]
cmp eax, esi
je 0x10020bfd
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x30]
call fcn.10007c30
lea ecx, [ebp - 0x138]
call fcn.10002f50
mov eax, dword [ebp - 0x138]
mov dword [ebp - 0x138], 0
push 8
push eax
call fcn.10046080
movaps xmm0, xmmword [0x1009fe00]
lea eax, [ebp - 0x2c]
add esp, 8
mov dword [ebp - 0xb8], 0x3c12443a
cmp dword [ebp - 0x18], 0xf
movups xmmword [ebp - 0xc8], xmm0
cmova eax, dword [ebp - 0x2c]
xor ecx, ecx
push eax
mov byte [ebp - 0xb4], 0
mov al, byte [ebp + ecx - 0xc7]
xor al, byte [ebp - 0xc8]
mov byte [ebp + ecx - 0xc7], al
inc ecx
cmp ecx, 0x13
jb 0x10020c50
sub esp, 0x1c
mov byte [ebp - 0xb4], 0
mov edx, esp
lea ecx, [ebp - 0xc7]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10020ca0
sub ecx, esi
lea eax, [ebp - 0xc7]
push ecx
push eax
mov ecx, edx
call fcn.10003350
lea eax, [ebp - 0x154]
push eax
call fcn.1000d820
add esp, 0x24
mov byte [ebp - 4], 2
mov edx, eax
mov ecx, dword [edi + 8]
call fcn.100141e0
lea ecx, [ebp - 0x154]
call fcn.10002f50
mov eax, dword [ebp - 0x154]
push 8
push eax
mov dword [ebp - 0x154], 0
call fcn.10046080
add esp, 8
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x30]
call fcn.10002f50
mov eax, dword [ebp - 0x30]
push 8
push eax
mov dword [ebp - 0x30], 0
call fcn.10046080
add esp, 8
cmp dword [edi + 0x24], 0
jg 0x10020d30
mov byte [edi + 0x20], 0
mov dword [edi + 0x24], 0
cmp byte [edi + 0x21], 0
je 0x100211e9
movzx eax, word [edi + 0x28]
mov ecx, eax
test ax, ax
jle 0x10020d4d
dec eax
mov word [edi + 0x28], ax
movzx ecx, ax
test cx, cx
js 0x100211d8
movsx esi, cx
mov ecx, 0xe10
mov eax, esi
cdq
idiv ecx
mov eax, 0x88888889
mov ecx, edx
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
movzx eax, cx
mov ecx, 0x3c
mov dword [ebp - 0x50], eax
mov eax, esi
cdq
idiv ecx
movzx esi, dx
mov dword [ebp - 4], 3
xorps xmm0, xmm0
push 8
mov dword [ebp - 0x4c], 0
movups xmmword [ebp - 0x48], xmm0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
call fcn.10045fe0
lea ecx, [ebp - 0x4c]
add esp, 4
mov dword [eax + 4], 0
mov dword [ebp - 0x4c], eax
mov dword [eax], ecx
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0xf
mov byte [ebp - 0x48], 0
mov edx, dword [ebp - 0x50]
mov dword [ebp - 4], 4
cmp dx, 0xa
jae 0x10020ec5
cmp esi, 0xa
jae 0x10020ec5
movzx eax, dx
xor ecx, ecx
push esi
push eax
mov dl, 0x7d
mov dword [ebp - 0x98], 0x19584d7d
mov dword [ebp - 0x94], 0x19584d47
mov byte [ebp - 0x90], 0
nop word [eax + eax]
xor byte [ebp + ecx - 0x97], dl
inc ecx
cmp ecx, 7
jae 0x10020e35
mov dl, byte [ebp - 0x98]
jmp 0x10020e20
sub esp, 0x1c
mov byte [ebp - 0x90], 0
mov edx, esp
lea ecx, [ebp - 0x97]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10020e65
sub ecx, esi
lea eax, [ebp - 0x97]
push ecx
push eax
mov ecx, edx
call fcn.10003350
lea eax, [ebp - 0x170]
push eax
call fcn.1000d820
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x4c]
cmp eax, esi
je 0x10020ea5
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x4c]
call fcn.10007c30
lea ecx, [ebp - 0x170]
call fcn.10002f50
mov eax, dword [ebp - 0x170]
mov dword [ebp - 0x170], 0
jmp 0x100210d8
mov eax, esi
movzx ecx, dx
push eax
push ecx
xor ecx, ecx
cmp dx, 0xa
jae 0x10020f7e
mov dl, 0x6f
mov dword [ebp - 0x78], 0xb4a5f6f
mov dword [ebp - 0x74], 0xb4a55
xor byte [ebp + ecx - 0x77], dl
inc ecx
cmp ecx, 6
jae 0x10020ef7
mov dl, byte [ebp - 0x78]
jmp 0x10020ee8
sub esp, 0x1c
mov byte [ebp - 0x71], 0
mov edx, esp
lea ecx, [ebp - 0x77]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10020f21
sub ecx, esi
lea eax, [ebp - 0x77]
push ecx
push eax
mov ecx, edx
call fcn.10003350
lea eax, [ebp - 0x18c]
push eax
call fcn.1000d820
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x4c]
cmp eax, esi
je 0x10020f5e
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x4c]
call fcn.10007c30
lea ecx, [ebp - 0x18c]
call fcn.10002f50
mov eax, dword [ebp - 0x18c]
mov dword [ebp - 0x18c], 0
jmp 0x100210d8
cmp esi, 0xa
jae 0x1002102d
mov dl, 0x21
mov dword [ebp - 0x80], 0x1b450421
mov dword [ebp - 0x7c], 0x450411
xor byte [ebp + ecx - 0x7f], dl
inc ecx
cmp ecx, 6
jae 0x10020fa6
mov dl, byte [ebp - 0x80]
jmp 0x10020f97
sub esp, 0x1c
mov byte [ebp - 0x79], 0
mov edx, esp
lea ecx, [ebp - 0x7f]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10020fd0
sub ecx, esi
lea eax, [ebp - 0x7f]
push ecx
push eax
mov ecx, edx
call fcn.10003350
lea eax, [ebp - 0x1a8]
push eax
call fcn.1000d820
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x4c]
cmp eax, esi
je 0x1002100d
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x4c]
call fcn.10007c30
lea ecx, [ebp - 0x1a8]
call fcn.10002f50
mov eax, dword [ebp - 0x1a8]
mov dword [ebp - 0x1a8], 0
jmp 0x100210d8
mov dl, 0x25
mov dword [ebp - 0x60], 0x1f410025
mov word [ebp - 0x5c], 0x4100
mov byte [ebp - 0x5a], 0
xor byte [ebp + ecx - 0x5f], dl
inc ecx
cmp ecx, 5
jae 0x1002104f
mov dl, byte [ebp - 0x60]
jmp 0x10021040
sub esp, 0x1c
mov byte [ebp - 0x5a], 0
mov edx, esp
lea ecx, [ebp - 0x5f]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10021080
sub ecx, esi
lea eax, [ebp - 0x5f]
push ecx
push eax
mov ecx, edx
call fcn.10003350
lea eax, [ebp - 0x1c4]
push eax
call fcn.1000d820
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x4c]
cmp eax, esi
je 0x100210bd
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x4c]
call fcn.10007c30
lea ecx, [ebp - 0x1c4]
call fcn.10002f50
mov eax, dword [ebp - 0x1c4]
mov dword [ebp - 0x1c4], 0
push 8
push eax
call fcn.10046080
movaps xmm0, xmmword [str._w_HDLKLKB]
lea eax, [ebp - 0x48]
add esp, 8
mov dword [ebp - 0xa0], 0x56007e05
cmp dword [ebp - 0x34], 0xf
movups xmmword [ebp - 0xb0], xmm0
cmova eax, dword [ebp - 0x48]
xor ecx, ecx
push eax
mov word [ebp - 0x9c], 0x78
mov al, byte [ebp + ecx - 0xaf]
xor al, byte [ebp - 0xb0]
mov byte [ebp + ecx - 0xaf], al
inc ecx
cmp ecx, 0x14
jb 0x10021112
sub esp, 0x1c
mov byte [ebp - 0x9b], 0
mov edx, esp
lea ecx, [ebp - 0xaf]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10021160
sub ecx, esi
lea eax, [ebp - 0xaf]
push ecx
push eax
mov ecx, edx
call fcn.10003350
lea eax, [ebp - 0x1e0]
push eax
call fcn.1000d820
add esp, 0x24
mov byte [ebp - 4], 5
mov edx, eax
mov ecx, dword [edi + 0xc]
call fcn.100141e0
lea ecx, [ebp - 0x1e0]
call fcn.10002f50
mov eax, dword [ebp - 0x1e0]
push 8
push eax
mov dword [ebp - 0x1e0], 0
call fcn.10046080
add esp, 8
lea ecx, [ebp - 0x4c]
call fcn.10002f50
mov eax, dword [ebp - 0x4c]
push 8
push eax
mov dword [ebp - 0x4c], 0
call fcn.10046080
add esp, 8
cmp word [edi + 0x28], 0
jg 0x100211e9
xor eax, eax
mov byte [edi + 0x21], 0
mov word [edi + 0x28], ax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.10045fd0
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret