Function at 0x20001b30
Capabilities:
Encode data using xor
Hash data using crc32b

Disassembly:
push 0xffffffffffffffff
push 0x20032028
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x20043b94]
xor eax, esp
push eax
lea eax, [esp + 0x40]
mov dword fs:[0], eax
call fcn.2000e120
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x20001b71
push 0x80004005
call fcn.20001720
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov dword [esp + 0x48], 0
call fcn.2000e120
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x20001ba3
push 0x80004005
call fcn.20001720
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
push 6
push str.Loader
lea ecx, [esp + 0x1c]
mov byte [esp + 0x50], 1
call fcn.20002400
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x24]
push 0x2005ce1c
push edx
call fcn.20002090
add esp, 0xc
push str..data
push eax
lea eax, [esp + 0x24]
mov bl, 2
push eax
mov byte [esp + 0x54], bl
call fcn.20002150
add esp, 0xc
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x4c], 3
call fcn.20002380
mov byte [esp + 0x48], bl
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
or ebp, 0xffffffff
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x20001c2d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x48], 1
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x20001c51
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x2c]
call fcn.20010986
mov byte [esp + 0x48], 4
mov edi, dword [esp + 0x18]
lea ebx, [esp + 0x2c]
mov eax, edi
call fcn.2000ba80
mov ebx, eax
test ebx, ebx
je 0x20001ce3
xor esi, esi
lea ecx, [esp + 0x2c]
or esi, 0x7760
mov byte [esp + 0x48], 1
call fcn.2001099d
lea eax, [edi - 0x10]
mov byte [esp + 0x48], 0
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x20001caa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x48], ebp
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], ebp
dec ebp
test ebp, ebp
jg 0x20001ccb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, ebx
mov edx, esi
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov eax, dword [esp + 0x34]
cmp eax, 0x64
jge 0x20001d56
lea ecx, [esp + 0x2c]
mov byte [esp + 0x48], 1
call fcn.2001099d
lea eax, [edi - 0x10]
mov byte [esp + 0x48], 0
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x20001d1a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x48], ebp
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], ebp
dec ebp
test ebp, ebp
jg 0x20001d3b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov edx, 0x7760
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov edi, dword [esp + 0x30]
movzx ebp, word [edi + 2]
movzx ecx, word [edi]
xor ebx, ebx
xor esi, esi
test eax, eax
mov edx, edi
mov dword [esp + 0x24], eax
jle 0x20001da6
nop
mov eax, 0xc543065
imul ecx
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, eax
imul edx, edx, 0x29875
sub ecx, edx
add ebx, ebp
mov dl, bl
add dl, al
xor byte [esi + edi], dl
shl ecx, 8
test ecx, ecx
je 0x20001da4
add esi, 1
cmp esi, dword [esp + 0x24]
jl 0x20001d70
mov edx, edi
cmp dword [edx + 8], 0x6a4cf30d
je 0x20001dea
mov byte [esp + 0x48], 1
lea ecx, [esp + 0x2c]
call fcn.2001099d
lea ecx, [esp + 0x18]
call fcn.20001970
lea ecx, [esp + 0x14]
call fcn.20001970
xor eax, eax
mov edx, 0x7760
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
cmp word [edx + 4], 0x101
lea ecx, [esp + 0x2c]
je 0x20001dfd
mov byte [esp + 0x48], 1
jmp 0x20001db8
mov eax, dword [edx + 0xc]
push 0x10
push 0
mov dword [esp + 0x30], eax
call fcn.20010abd
mov ebx, 1
test byte [0x2005e4fc], bl
jne 0x20001f20
or dword [0x2005e4fc], ebx
xor edi, edi
mov esi, 0x2005e500
jmp 0x20001e30
mov edx, edi
xor eax, eax
mov ecx, 0x80
lea esp, [esp]
test bl, dl
je 0x20001e46
or eax, ecx
shr ecx, 1
shr edx, 1
test ecx, ecx
jne 0x20001e40
shl eax, 8
mov word [esi], ax
movzx eax, ax
mov ecx, 8
lea esp, [esp]
mov edx, eax
and edx, 0x8000
neg edx
sbb edx, edx
add eax, eax
and edx, 0x1021
xor dx, ax
sub ecx, ebx
movzx eax, dx
jne 0x20001e60
mov word [esi], ax
movzx ecx, ax
xor edx, edx
mov eax, 0x8000
jmp 0x20001e90
test bl, cl
je 0x20001e96
or edx, eax
shr eax, 1
shr ecx, 1
test eax, eax
jne 0x20001e90
mov word [esi], dx
add esi, 2
add edi, ebx
cmp esi, 0x2005e6fe
jle 0x20001e30
xor edi, edi
mov esi, 0x2005e700
mov edx, edi
xor eax, eax
mov ecx, 0x80
mov edi, edi
test bl, dl
je 0x20001ec6
or eax, ecx
shr ecx, 1
shr edx, 1
test ecx, ecx
jne 0x20001ec0
shl eax, 0x18
mov dword [esi], eax
mov ecx, 8
jmp 0x20001ee0
mov edx, eax
and edx, 0x80000000
neg edx
sbb edx, edx
and edx, 0x4c11db7
add eax, eax
xor eax, edx
sub ecx, ebx
jne 0x20001ee0
mov dword [esi], eax
xor edx, edx
mov ecx, SysReAllocStringLen
test bl, al
je 0x20001f09
or edx, ecx
shr ecx, 1
shr eax, 1
test ecx, ecx
jne 0x20001f03
mov dword [esi], edx
add esi, 4
add edi, ebx
cmp esi, 0x2005eafc
jle 0x20001eb5
mov edx, dword [esp + 0x34]
or eax, 0xffffffff
xor ecx, ecx
test edx, edx
jbe 0x20001f4a
mov esi, dword [esp + 0x30]
movzx edi, byte [esi + ecx]
movzx ebp, al
xor edi, ebp
shr eax, 8
xor eax, dword [edi*4 + 0x2005e700]
add ecx, ebx
cmp ecx, edx
jb 0x20001f31
not eax
cmp dword [esp + 0x28], eax
je 0x20001f5b
mov byte [esp + 0x48], bl
jmp 0x20001db4
call fcn.20007360
mov edi, eax
test edi, edi
je 0x20001fa5
xor esi, esi
lea ecx, [esp + 0x2c]
or esi, 0x7761
mov byte [esp + 0x48], bl
call fcn.2001099d
lea ecx, [esp + 0x18]
call fcn.20001970
lea ecx, [esp + 0x14]
call fcn.20001970
mov eax, edi
mov edx, esi
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
push 0x2005ce14
push ecx
push edx
call fcn.20007a60
mov edi, eax
add esp, 0xc
test edi, edi
je 0x20002001
xor esi, esi
lea ecx, [esp + 0x2c]
or esi, 0x7762
mov byte [esp + 0x48], bl
call fcn.2001099d
lea ecx, [esp + 0x18]
call fcn.20001970
lea ecx, [esp + 0x14]
call fcn.20001970
mov eax, edi
mov edx, esi
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov eax, dword [esp + 0x34]
test eax, eax
jle 0x20002019
push eax
mov eax, dword [esp + 0x34]
push 0
push eax
call fcn.2001af00
add esp, 0xc
lea ecx, [esp + 0x2c]
mov byte [esp + 0x48], bl
call fcn.2001099d
mov byte [esp + 0x48], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x2000204b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x48], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x20002073
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
xor edx, edx
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret