Function at 0x21b840
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov esi, dword [esp + 0x40]
mov ebp, dword [esi]
mov edi, dword [esi + 8]
mov ecx, ebp
mov edx, edi
call fcn.0021c6d0
mov edx, esi
mov ebx, eax
movzx eax, byte [esi + 0x10]
mov dword [esp], 2
test al, 1
jne 0x21b8e8
lea ecx, [ebx + 1]
cmp ecx, 0x56
ja case.default.0x21b874
jmp dword [ecx*4 + 0x76c950]
test al, 8
jne 0x21b8c8
mov dword [esp], 0
cmp ebx, 0x62
ja case.0x21b9d6.1001
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0x76cf40]
mov dword [esp + 4], eax
mov dword [esp], 0
jmp 0x21b90f
lea ecx, [ebx - 0x3e8]
cmp ecx, 8
ja case.0x21b874.0
mov edx, 0x1c1
bt edx, ecx
mov edx, dword [esp + 0x40]
jae case.0x21b874.0
mov eax, dword [edx + 0xc]
lea esi, [edi + eax]
add esi, 0x20
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx + 0x28]
lea ecx, [ecx + ecx*2]
shr ecx, 2
xor eax, eax
cmp esi, ecx
setbe al
mov dword [esp], eax
cmp ebx, 0x63
jae 0x21b9be
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0x76cf40]
mov dword [esp + 4], eax
mov eax, 2
cmp dword [esp], 2
je 0x21ba9f
mov eax, ebx
shl eax, 4
lea esi, [eax + 0x76cf48]
mov edi, 0x63
jmp 0x21b93c
dec edi
add esi, 0x10
cmp ebx, edi
je 0x21ba9c
cmp dword [esi], ebx
jne 0x21ba9c
mov ebp, dword [esi - 8]
lea ecx, [ebp*4]
mov eax, dword [ecx + ecx*8 + 0x5f36e4]
cmp eax, dword [edx + 0xc]
jne 0x21b930
test eax, eax
je 0x21b97e
lea ecx, [ecx + ecx*8]
add ecx, 0x5f36dc
push eax
push dword [edx + 4]
push dword [ecx + 4]
call fcn.004f8d78
mov edx, dword [esp + 0x4c]
add esp, 0xc
test eax, eax
jne 0x21b930
cmp ebp, 0xffffffff
je 0x21ba94
mov ecx, dword [esp + 0x38]
mov edx, 0xc0
mov eax, dword [esp + 0x2c]
push dword [eax + 0x18]
push 6
push 0
push ebp
jmp 0x21bdcc
test al, 8
sete al
cmp ebx, 0x3e8
setae cl
mov dword [esp], 0
test cl, al
je 0x21b8c8
lea eax, [ebx - 0x3e8]
cmp eax, 8
ja case.0x21b9d6.1001
mov esi, 0xaffea56f
mov dword [esp + 4], 0xffffffff
jmp dword [eax*4 + 0x76caac]
mov esi, 0x3c453eb2
jmp case.0x21b9d6.1000
mov dword [esp + 4], 0xffffffff
test edi, edi
je 0x21ba1a
mov eax, edi
and eax, 3
cmp edi, 4
jae 0x21ba24
mov esi, 0x811c9dc5
xor ecx, ecx
jmp 0x21ba6b
mov esi, 0x4345b83d
jmp case.0x21b9d6.1000
mov esi, 0x94e4e309
jmp case.0x21b9d6.1000
mov esi, 0x811c9dc5
jmp case.0x21b9d6.1000
and edi, 0xfffffffc
mov esi, 0x811c9dc5
xor ecx, ecx
nop
movzx edx, byte [ebp + ecx]
xor edx, esi
imul edx, edx, 0x1000193
movzx esi, byte [ebp + ecx + 1]
xor esi, edx
imul edx, esi, 0x1000193
movzx esi, byte [ebp + ecx + 2]
xor esi, edx
imul edx, esi, 0x1000193
movzx esi, byte [ebp + ecx + 3]
xor esi, edx
imul esi, esi, 0x1000193
add ecx, 4
cmp edi, ecx
jne 0x21ba30
test eax, eax
je case.0x21b9d6.1000
add ebp, ecx
xor ecx, ecx
nop word cs:[eax + eax]
movzx edx, byte [ebp + ecx]
xor edx, esi
imul esi, edx, 0x1000193
inc ecx
cmp eax, ecx
jne 0x21ba80
jmp case.0x21b9d6.1000
mov dword [esp + 4], 0xffffffff
mov eax, dword [esp]
mov ecx, ebx
shl ecx, 4
mov esi, dword [ecx + 0x76cf4c]
mov dword [esp], eax
mov ebp, dword [esp + 0x2c]
lea eax, [ebp + 0x140]
push eax
call fcn.00219a20
add esp, 4
cmp eax, 0x7cf
ja 0x21bc1c
lea eax, [esp + 8]
push dword [esp + 0x4c]
push dword [ebp + 0x1a4]
push dword [ebp + 0x1a0]
mov edi, dword [esp + 0xc]
push edi
push esi
push ebx
push dword [esp + 0x58]
push ebp
push eax
call fcn.0021d240
add esp, 0x24
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x10]
xor edi, 1
not eax
or eax, edi
setne al
mov ebp, ecx
cmp ecx, 0xffffffff
je 0x21bc59
cmp dword [esp + 0xc], 0
je 0x21bc59
cmp dword [esp + 0x4c], 0
je 0x21bd41
mov ebx, dword [esp + 0x2c]
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x34]
xor edx, edx
cmp ebp, eax
sbb edx, ecx
jae 0x21c1d9
mov esi, ebp
not esi
add eax, esi
adc ecx, 0xffffffff
cmp eax, dword [ebx + 0x14]
sbb ecx, 0
jae 0x21c1ee
mov edi, dword [ebx + 0x28]
mov ecx, edi
shr ecx, 3
cmp ecx, 0x200
mov edx, 0x200
cmovb edx, ecx
sub edi, edx
push eax
push ebx
call fcn.00218f40
add esp, 8
mov eax, dword [eax]
mov ecx, dword [ebx + 0x20]
sub ecx, dword [eax + 0x14]
cmp ecx, edi
jbe 0x21bd41
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x34]
xor edx, edx
cmp ebp, eax
sbb edx, ecx
jae 0x21c1d9
add eax, esi
adc ecx, 0xffffffff
cmp eax, dword [ebx + 0x14]
sbb ecx, 0
jae 0x21c1ee
mov ecx, dword [esp + 0x34]
mov esi, dword [ecx]
mov edi, dword [ecx + 4]
push eax
push ebx
call fcn.00218f40
add esp, 8
mov eax, dword [eax]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ecx + 8]
mov eax, dword [eax + 8]
lea edx, [ecx + eax + 0x20]
mov ecx, ebx
push edi
push esi
call fcn.00222bd0
add esp, 8
test eax, eax
je 0x21bd41
push 0
push ebp
push dword [esp + 0x44]
push ebx
call fcn.0021d480
add esp, 0x10
test eax, eax
jne 0x21c1d1
push 0
push ebp
push ebx
call fcn.0021d5e0
add esp, 0xc
test eax, eax
jne 0x21c1d1
push ebx
call fcn.0021d6a0
add esp, 4
mov ebx, dword [eax + 0x18]
jmp 0x21bd43
mov ebx, dword [esp + 4]
cmp ebx, 0xffffffff
mov edx, dword [esp + 0x40]
je 0x21c1ad
movzx eax, byte [edx + 0x10]
shl al, 5
and al, 0x20
or al, 0x50
movzx eax, al
mov ecx, dword [esp + 0x2c]
mov esi, edx
mov edx, dword [esp + 0x38]
push esi
push 4
push 0
push ebx
push eax
call fcn.0021dd00
add esp, 0x14
jmp 0x21c1d1
cmp dword [esp + 4], 0xffffffff
je 0x21bdd9
test al, al
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 4]
lea edi, [esp + 8]
jne 0x21bc2d
mov eax, dword [edx + 8]
mov ecx, dword [edx + 0xc]
lea edx, [eax + ecx]
add edx, 0x20
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
push dword [eax + 4]
push dword [eax]
call fcn.00222bd0
mov edx, dword [esp + 0x48]
add esp, 8
test eax, eax
je 0x21bc2d
mov eax, ebx
mov ebx, dword [esp + 0x2c]
mov ecx, ebx
mov ebp, edx
mov edx, dword [esp + 0x3c]
push ebp
push 6
push 0
push eax
push 0xc0
call fcn.0021dd00
add esp, 0x14
test eax, eax
jne 0x21c1d1
lea eax, [esp + 0xc]
push dword [ebx + 0x18]
push dword [ebp + 0xc]
push dword [ebp + 4]
push eax
call fcn.00210270
add esp, 0x10
test eax, eax
jne 0x21c1d1
mov ebp, dword [esp + 4]
cmp ebp, 0x63
jae 0x21c203
lea eax, [ebp*4]
lea ecx, [eax + eax*8]
add ecx, 0x5f36cc
mov dword [esp + 8], ecx
mov eax, dword [eax + eax*8 + 0x5f36ec]
mov dword [esp + 0x10], eax
mov byte [esp + 0x14], 0
lea eax, [ebx + 0x40]
push esi
push eax
push edi
push ebx
call fcn.0021e600
add esp, 0x10
mov ebx, eax
push dword [esp + 0xc]
call fcn.00210300
add esp, 4
test ebx, ebx
je 0x21c0b6
mov eax, ebx
jmp 0x21c1d1
mov ebx, ebp
mov ebp, dword [esp + 0x30]
mov edx, dword [ebp]
mov esi, dword [ebp + 4]
lea eax, [ebx + 1]
mov ecx, eax
sar ecx, 0x1f
cmp eax, edx
mov edi, ecx
sbb edi, esi
cmovae edx, eax
cmovae esi, ecx
mov dword [ebp + 4], esi
mov dword [ebp], edx
mov ebp, dword [esp + 0x34]
mov edx, dword [ebp + 4]
mov esi, dword [ebp]
cmp esi, eax
mov edi, edx
sbb edi, ecx
cmovb eax, esi
cmovb ecx, edx
mov dword [ebp + 4], ecx
mov dword [ebp], eax
xor eax, eax
mov edx, dword [esp + 0x44]
cmp ebx, edx
mov ecx, 0
mov esi, dword [esp + 0x48]
sbb ecx, esi
jae 0x21bdb4
not ebx
add ebx, edx
adc esi, 0xffffffff
mov ecx, dword [esp + 0x38]
mov edx, pe_nt_image_headers32
mov eax, dword [esp + 0x2c]
push dword [eax + 0x18]
push 6
push esi
jmp 0x21bdcb
sub ebx, edx
sbb eax, esi
mov ecx, dword [esp + 0x38]
mov edx, 0x10
mov esi, dword [esp + 0x2c]
push dword [esi + 0x18]
push 4
push eax
push ebx
call fcn.0021c520
add esp, 0x28
jmp 0x21c1d4
cmp ebp, 0xffffffff
lea edi, [esp + 8]
je 0x21be07
test al, al
mov ebx, dword [esp + 0x2c]
jne 0x21c017
cmp dword [esp + 0x4c], 0
je 0x21beb6
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx]
mov edi, dword [ecx + 4]
jmp 0x21bedc
test al, al
mov edx, dword [esp + 0x40]
jne 0x21c1ad
mov eax, dword [edx + 8]
mov ecx, dword [edx + 0xc]
lea edx, [eax + ecx]
add edx, 0x20
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
push dword [eax + 4]
push dword [eax]
call fcn.00222bd0
mov edx, dword [esp + 0x48]
add esp, 8
test eax, eax
je 0x21c1ad
mov eax, dword [esp + 0x2c]
mov ebp, dword [eax + 0x18]
push ebp
push dword [edx + 8]
push dword [edx]
push edi
call fcn.00210270
add esp, 0x10
test eax, eax
jne 0x21c1d1
lea eax, [esp + 0xc]
push ebp
mov ecx, dword [esp + 0x44]
push dword [ecx + 0xc]
push dword [ecx + 4]
push eax
call fcn.00210270
add esp, 0x10
test eax, eax
je 0x21c147
push dword [esp + 8]
mov esi, eax
call fcn.00210300
mov eax, esi
add esp, 4
jmp 0x21c1d1
cmp dword [edx + 0xc], 0x14
jae 0x21b8c8
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0x76cf40]
mov dword [esp + 4], eax
mov eax, 2
jmp 0x21ba9f
mov edi, ebp
sar edi, 0x1f
mov eax, ebp
add eax, 1
adc edi, 0
mov edx, dword [esp + 0x34]
mov ecx, dword [edx]
mov edx, dword [edx + 4]
cmp eax, ecx
mov ebx, edi
sbb ebx, edx
mov ebx, dword [esp + 0x2c]
cmovae edi, edx
cmovae eax, ecx
mov edx, dword [esp + 0x40]
mov ecx, dword [edx + 8]
mov edx, dword [edx + 0xc]
add edx, ecx
add edx, 0x20
mov ecx, ebx
push edi
push eax
call fcn.00222bd0
add esp, 8
test eax, eax
je 0x21c017
mov edi, dword [ebx + 0x34]
mov eax, ebp
not eax
add eax, dword [ebx + 0x30]
adc edi, 0xffffffff
mov ecx, ebx
mov edx, dword [esp + 0x3c]
push dword [esp + 0x40]
push 6
push edi
push eax
push pe_nt_image_headers32
call fcn.0021dd00
add esp, 0x14
test eax, eax
jne 0x21c1d1
cmp dword [esp + 0x4c], 0
je 0x21bfcf
push esi
push dword [esp + 0x44]
push 0
push ebp
push ebx
call fcn.0021d880
add esp, 0x14
test eax, eax
jne 0x21c1d1
push ebx
call fcn.0021d6a0
add esp, 4
mov ebp, dword [esp + 0x30]
mov ecx, dword [ebp]
mov edx, dword [ebp + 4]
mov esi, dword [eax + 0x18]
mov edi, dword [eax + 0x1c]
add esi, 1
adc edi, 0
cmp esi, ecx
mov ebx, edi
sbb ebx, edx
cmovb esi, ecx
cmovb edi, edx
mov dword [ebp + 4], edi
mov dword [ebp], esi
mov ebp, dword [esp + 0x34]
mov ecx, dword [ebp + 4]
mov edx, dword [ebp]
mov esi, dword [eax + 0x1c]
mov edi, dword [eax + 0x18]
add edi, 1
adc esi, 0
cmp edx, edi
mov ebx, ecx
sbb ebx, esi
cmovb esi, ecx
cmovb edi, edx
mov dword [ebp], edi
mov dword [ebp + 4], esi
push dword [esp + 0x48]
push dword [esp + 0x48]
push dword [eax + 0x1c]
push dword [eax + 0x18]
push dword [esp + 0x48]
push dword [esp + 0x40]
call fcn.0021d6d0
add esp, 0x30
jmp 0x21c1d4
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov edx, ebp
sar edx, 0x1f
mov edi, ebp
add edi, 1
adc edx, 0
cmp eax, edi
mov ebx, ecx
sbb ebx, edx
mov ebx, dword [esp + 0x2c]
cmovb edx, ecx
cmovb edi, eax
mov eax, dword [esp + 0x34]
mov dword [eax], edi
mov dword [eax + 4], edx
push esi
push dword [esp + 0x44]
push 0
push ebp
push ebx
call fcn.0021d880
add esp, 0x14
test eax, eax
jne 0x21c1d1
mov ebx, dword [esp + 0x30]
mov edx, dword [ebx]
mov esi, dword [ebx + 4]
lea eax, [ebp + 1]
mov ecx, eax
sar ecx, 0x1f
cmp eax, edx
mov edi, ecx
sbb edi, esi
cmovae edx, eax
cmovae esi, ecx
mov dword [ebx + 4], esi
mov dword [ebx], edx
mov ebx, dword [esp + 0x34]
mov edx, dword [ebx + 4]
mov esi, dword [ebx]
cmp esi, eax
mov edi, edx
sbb edi, ecx
cmovb eax, esi
cmovb ecx, edx
mov dword [ebx + 4], ecx
mov dword [ebx], eax
xor esi, esi
mov ecx, dword [esp + 0x44]
cmp ebp, ecx
mov eax, 0
mov ebx, dword [esp + 0x48]
sbb eax, ebx
mov edi, dword [esp + 0x40]
movzx eax, byte [edi + 0x10]
jae 0x21c08f
shl al, 5
and al, 0x20
or al, 0x40
not ebp
add ebp, ecx
adc ebx, 0xffffffff
movzx eax, al
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x38]
push edi
push 4
push ebx
jmp 0x21c0a7
shl al, 3
and al, 8
sub ebp, ecx
sbb esi, ebx
movzx eax, al
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x38]
push edi
push 3
push esi
push ebp
push eax
call fcn.0021dd00
add esp, 0x2c
jmp 0x21c1d4
cmp dword [esp + 0x4c], 0
mov edx, dword [esp + 0x40]
mov ebx, ebp
je 0x21bc2d
mov ebp, dword [esp + 0x2c]
push ebp
call fcn.0021d6a0
add esp, 4
mov ebp, dword [esp + 0x30]
mov ecx, dword [ebp]
mov edx, dword [ebp + 4]
mov esi, dword [eax + 0x18]
mov edi, dword [eax + 0x1c]
add esi, 1
adc edi, 0
cmp esi, ecx
mov ebx, edi
sbb ebx, edx
cmovb esi, ecx
cmovb edi, edx
mov dword [ebp + 4], edi
mov dword [ebp], esi
mov ebp, dword [esp + 0x34]
mov ecx, dword [ebp + 4]
mov edx, dword [ebp]
mov esi, dword [eax + 0x1c]
mov edi, dword [eax + 0x18]
add edi, 1
adc esi, 0
cmp edx, edi
mov ebx, ecx
sbb ebx, esi
cmovb esi, ecx
cmovb edi, edx
mov dword [ebp], edi
mov dword [ebp + 4], esi
push dword [esp + 0x48]
push dword [esp + 0x48]
push dword [eax + 0x1c]
push dword [eax + 0x18]
push dword [esp + 0x48]
push dword [esp + 0x40]
call fcn.0021d6d0
add esp, 0x18
jmp 0x21c1d1
mov dword [esp + 0x10], ebx
mov byte [esp + 0x14], 0
mov ebp, dword [esp + 0x2c]
lea eax, [ebp + 0x40]
push esi
push eax
push edi
push ebp
call fcn.0021e600
add esp, 0x10
mov ebx, eax
push dword [esp + 0xc]
call fcn.00210300
add esp, 4
push dword [esp + 8]
call fcn.00210300
add esp, 4
test ebx, ebx
jne 0x21bd3a
mov ecx, ebp
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
push esi
push 5
push 0x40
call fcn.0021e070
add esp, 0xc
test eax, eax
jne 0x21c1d1
cmp dword [esp + 0x4c], 0
mov edx, esi
jne 0x21c0c7
movzx eax, byte [edx + 0x10]
shl al, 4
and al, 0x10
or al, 0x20
movzx eax, al
mov ecx, dword [esp + 0x2c]
mov esi, edx
mov edx, dword [esp + 0x38]
push esi
push 3
push eax
call fcn.0021e070
add esp, 0xc
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x8b6
push 0x76cf2e
push 0x76d640
nop
call reloc.ucrtbase.dll__assert
push 0x8b7
push 0x76cf2e
push 0x76d65a
nop
call reloc.ucrtbase.dll__assert
push 0x850
push 0x76cf2e
push 0x76d61e
call reloc.ucrtbase.dll__assert
nop
nop dword [eax + eax]