Function at 0x4aa230
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.004ab0c0
mov edx, esi
mov ebx, eax
movzx eax, byte [esi + 0x10]
mov dword [esp], 2
test al, 1
jne 0x4aa2d8
lea ecx, [ebx + 1]
cmp ecx, 0x56
ja case.default.0x4aa264
jmp dword [ecx*4 + 0x988610]
test al, 8
jne 0x4aa2b8
mov dword [esp], 0
cmp ebx, 0x62
ja case.0x4aa3c6.1001
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0x988c00]
mov dword [esp + 4], eax
mov dword [esp], 0
jmp 0x4aa2ff
lea ecx, [ebx - 0x3e8]
cmp ecx, 8
ja case.0x4aa264.0
mov edx, 0x1c1
bt edx, ecx
mov edx, dword [esp + 0x40]
jae case.0x4aa264.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 0x4aa3ae
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0x988c00]
mov dword [esp + 4], eax
mov eax, 2
cmp dword [esp], 2
je 0x4aa48f
mov eax, ebx
shl eax, 4
lea esi, [eax + 0x988c08]
mov edi, 0x63
jmp 0x4aa32c
dec edi
add esi, 0x10
cmp ebx, edi
je 0x4aa48c
cmp dword [esi], ebx
jne 0x4aa48c
mov ebp, dword [esi - 8]
lea ecx, [ebp*4]
mov eax, dword [ecx + ecx*8 + 0x8c1004]
cmp eax, dword [edx + 0xc]
jne 0x4aa320
test eax, eax
je 0x4aa36e
lea ecx, [ecx + ecx*8]
add ecx, 0x8c0ffc
push eax
push dword [edx + 4]
push dword [ecx + 4]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcmp
mov edx, dword [esp + 0x4c]
add esp, 0xc
test eax, eax
jne 0x4aa320
cmp ebp, 0xffffffff
je 0x4aa484
mov ecx, dword [esp + 0x38]
mov edx, 0xc0
mov eax, dword [esp + 0x2c]
push dword [eax + 0x18]
push 6
push 0
push ebp
jmp 0x4aa7bc
test al, 8
sete al
cmp ebx, 0x3e8
setae cl
mov dword [esp], 0
test cl, al
je 0x4aa2b8
lea eax, [ebx - 0x3e8]
cmp eax, 8
ja case.0x4aa3c6.1001
mov esi, 0xaffea56f
mov dword [esp + 4], 0xffffffff
jmp dword [eax*4 + 0x98876c]
mov esi, 0x3c453eb2
jmp case.0x4aa3c6.1000
mov dword [esp + 4], 0xffffffff
test edi, edi
je 0x4aa40a
mov eax, edi
and eax, 3
cmp edi, 4
jae 0x4aa414
mov esi, 0x811c9dc5
xor ecx, ecx
jmp 0x4aa45b
mov esi, 0x4345b83d
jmp case.0x4aa3c6.1000
mov esi, 0x94e4e309
jmp case.0x4aa3c6.1000
mov esi, 0x811c9dc5
jmp case.0x4aa3c6.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 0x4aa420
test eax, eax
je case.0x4aa3c6.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 0x4aa470
jmp case.0x4aa3c6.1000
mov dword [esp + 4], 0xffffffff
mov eax, dword [esp]
mov ecx, ebx
shl ecx, 4
mov esi, dword [ecx + 0x988c0c]
mov dword [esp], eax
mov ebp, dword [esp + 0x2c]
lea eax, [ebp + 0x140]
push eax
call fcn.004a8410
add esp, 4
cmp eax, 0x7cf
ja 0x4aa60c
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.004abc30
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 0x4aa649
cmp dword [esp + 0xc], 0
je 0x4aa649
cmp dword [esp + 0x4c], 0
je 0x4aa731
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 0x4aabc9
mov esi, ebp
not esi
add eax, esi
adc ecx, 0xffffffff
cmp eax, dword [ebx + 0x14]
sbb ecx, 0
jae 0x4aabde
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.004a7930
add esp, 8
mov eax, dword [eax]
mov ecx, dword [ebx + 0x20]
sub ecx, dword [eax + 0x14]
cmp ecx, edi
jbe 0x4aa731
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x34]
xor edx, edx
cmp ebp, eax
sbb edx, ecx
jae 0x4aabc9
add eax, esi
adc ecx, 0xffffffff
cmp eax, dword [ebx + 0x14]
sbb ecx, 0
jae 0x4aabde
mov ecx, dword [esp + 0x34]
mov esi, dword [ecx]
mov edi, dword [ecx + 4]
push eax
push ebx
call fcn.004a7930
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.004b15c0
add esp, 8
test eax, eax
je 0x4aa731
push 0
push ebp
push dword [esp + 0x44]
push ebx
call fcn.004abe70
add esp, 0x10
test eax, eax
jne 0x4aabc1
push 0
push ebp
push ebx
call fcn.004abfd0
add esp, 0xc
test eax, eax
jne 0x4aabc1
push ebx
call fcn.004ac090
add esp, 4
mov ebx, dword [eax + 0x18]
jmp 0x4aa733
mov ebx, dword [esp + 4]
cmp ebx, 0xffffffff
mov edx, dword [esp + 0x40]
je 0x4aab9d
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.004ac6f0
add esp, 0x14
jmp 0x4aabc1
cmp dword [esp + 4], 0xffffffff
je 0x4aa7c9
test al, al
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 4]
lea edi, [esp + 8]
jne 0x4aa61d
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.004b15c0
mov edx, dword [esp + 0x48]
add esp, 8
test eax, eax
je 0x4aa61d
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.004ac6f0
add esp, 0x14
test eax, eax
jne 0x4aabc1
lea eax, [esp + 0xc]
push dword [ebx + 0x18]
push dword [ebp + 0xc]
push dword [ebp + 4]
push eax
call fcn.0049ec60
add esp, 0x10
test eax, eax
jne 0x4aabc1
mov ebp, dword [esp + 4]
cmp ebp, 0x63
jae 0x4aabf3
lea eax, [ebp*4]
lea ecx, [eax + eax*8]
add ecx, 0x8c0fec
mov dword [esp + 8], ecx
mov eax, dword [eax + eax*8 + 0x8c100c]
mov dword [esp + 0x10], eax
mov byte [esp + 0x14], 0
lea eax, [ebx + 0x40]
push esi
push eax
push edi
push ebx
call fcn.004acff0
add esp, 0x10
mov ebx, eax
push dword [esp + 0xc]
call fcn.0049ecf0
add esp, 4
test ebx, ebx
je 0x4aaaa6
mov eax, ebx
jmp 0x4aabc1
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 0x4aa7a4
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 0x4aa7bb
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.004aaf10
add esp, 0x28
jmp 0x4aabc4
cmp ebp, 0xffffffff
lea edi, [esp + 8]
je 0x4aa7f7
test al, al
mov ebx, dword [esp + 0x2c]
jne 0x4aaa07
cmp dword [esp + 0x4c], 0
je 0x4aa8a6
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx]
mov edi, dword [ecx + 4]
jmp 0x4aa8cc
test al, al
mov edx, dword [esp + 0x40]
jne 0x4aab9d
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.004b15c0
mov edx, dword [esp + 0x48]
add esp, 8
test eax, eax
je 0x4aab9d
mov eax, dword [esp + 0x2c]
mov ebp, dword [eax + 0x18]
push ebp
push dword [edx + 8]
push dword [edx]
push edi
call fcn.0049ec60
add esp, 0x10
test eax, eax
jne 0x4aabc1
lea eax, [esp + 0xc]
push ebp
mov ecx, dword [esp + 0x44]
push dword [ecx + 0xc]
push dword [ecx + 4]
push eax
call fcn.0049ec60
add esp, 0x10
test eax, eax
je 0x4aab37
push dword [esp + 8]
mov esi, eax
call fcn.0049ecf0
mov eax, esi
add esp, 4
jmp 0x4aabc1
cmp dword [edx + 0xc], 0x14
jae 0x4aa2b8
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0x988c00]
mov dword [esp + 4], eax
mov eax, 2
jmp 0x4aa48f
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.004b15c0
add esp, 8
test eax, eax
je 0x4aaa07
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.004ac6f0
add esp, 0x14
test eax, eax
jne 0x4aabc1
cmp dword [esp + 0x4c], 0
je 0x4aa9bf
push esi
push dword [esp + 0x44]
push 0
push ebp
push ebx
call fcn.004ac270
add esp, 0x14
test eax, eax
jne 0x4aabc1
push ebx
call fcn.004ac090
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.004ac0c0
add esp, 0x30
jmp 0x4aabc4
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.004ac270
add esp, 0x14
test eax, eax
jne 0x4aabc1
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 0x4aaa7f
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 0x4aaa97
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.004ac6f0
add esp, 0x2c
jmp 0x4aabc4
cmp dword [esp + 0x4c], 0
mov edx, dword [esp + 0x40]
mov ebx, ebp
je 0x4aa61d
mov ebp, dword [esp + 0x2c]
push ebp
call fcn.004ac090
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.004ac0c0
add esp, 0x18
jmp 0x4aabc1
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.004acff0
add esp, 0x10
mov ebx, eax
push dword [esp + 0xc]
call fcn.0049ecf0
add esp, 4
push dword [esp + 8]
call fcn.0049ecf0
add esp, 4
test ebx, ebx
jne 0x4aa72a
mov ecx, ebp
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
push esi
push 5
push 0x40
call fcn.004aca60
add esp, 0xc
test eax, eax
jne 0x4aabc1
cmp dword [esp + 0x4c], 0
mov edx, esi
jne 0x4aaab7
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.004aca60
add esp, 0xc
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x8b6
push str.nghttp3_qpack.c
push str.ctx__next_absidx___absidx
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__assert]
push 0x8b7
push str.nghttp3_qpack.c
push str.ctx__next_absidx___absidx___1___nghttp3_ringbuf_len_ctx__dtable_
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__assert]
push 0x850
push str.nghttp3_qpack.c
push str.nghttp3_arraylen_stable____absidx
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__assert]
nop dword [eax + eax]