Function at 0x4a9c80
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.004aab10
mov edx, esi
mov ebx, eax
movzx eax, byte [esi + 0x10]
mov dword [esp], 2
test al, 1
jne 0x4a9d28
lea ecx, [ebx + 1]
cmp ecx, 0x56
ja case.default.0x4a9cb4
jmp dword [ecx*4 + 0xa38cd0]
test al, 8
jne 0x4a9d08
mov dword [esp], 0
cmp ebx, 0x62
ja case.0x4a9e16.1001
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0xa392c0]
mov dword [esp + 4], eax
mov dword [esp], 0
jmp 0x4a9d4f
lea ecx, [ebx - 0x3e8]
cmp ecx, 8
ja case.0x4a9cb4.0
mov edx, 0x1c1
bt edx, ecx
mov edx, dword [esp + 0x40]
jae case.0x4a9cb4.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 0x4a9dfe
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0xa392c0]
mov dword [esp + 4], eax
mov eax, 2
cmp dword [esp], 2
je 0x4a9edf
mov eax, ebx
shl eax, 4
lea esi, [eax + 0xa392c8]
mov edi, 0x63
jmp 0x4a9d7c
dec edi
add esi, 0x10
cmp ebx, edi
je 0x4a9edc
cmp dword [esi], ebx
jne 0x4a9edc
mov ebp, dword [esi - 8]
lea ecx, [ebp*4]
mov eax, dword [ecx + ecx*8 + 0x8b43c4]
cmp eax, dword [edx + 0xc]
jne 0x4a9d70
test eax, eax
je 0x4a9dbe
lea ecx, [ecx + ecx*8]
add ecx, 0x8b43bc
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 0x4a9d70
cmp ebp, 0xffffffff
je 0x4a9ed4
mov ecx, dword [esp + 0x38]
mov edx, 0xc0
mov eax, dword [esp + 0x2c]
push dword [eax + 0x18]
push 6
push 0
push ebp
jmp 0x4aa20c
test al, 8
sete al
cmp ebx, 0x3e8
setae cl
mov dword [esp], 0
test cl, al
je 0x4a9d08
lea eax, [ebx - 0x3e8]
cmp eax, 8
ja case.0x4a9e16.1001
mov esi, 0xaffea56f
mov dword [esp + 4], 0xffffffff
jmp dword [eax*4 + 0xa38e2c]
mov esi, 0x3c453eb2
jmp case.0x4a9e16.1000
mov dword [esp + 4], 0xffffffff
test edi, edi
je 0x4a9e5a
mov eax, edi
and eax, 3
cmp edi, 4
jae 0x4a9e64
mov esi, 0x811c9dc5
xor ecx, ecx
jmp 0x4a9eab
mov esi, 0x4345b83d
jmp case.0x4a9e16.1000
mov esi, 0x94e4e309
jmp case.0x4a9e16.1000
mov esi, 0x811c9dc5
jmp case.0x4a9e16.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 0x4a9e70
test eax, eax
je case.0x4a9e16.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 0x4a9ec0
jmp case.0x4a9e16.1000
mov dword [esp + 4], 0xffffffff
mov eax, dword [esp]
mov ecx, ebx
shl ecx, 4
mov esi, dword [ecx + 0xa392cc]
mov dword [esp], eax
mov ebp, dword [esp + 0x2c]
lea eax, [ebp + 0x140]
push eax
call fcn.004a7e60
add esp, 4
cmp eax, 0x7cf
ja 0x4aa05c
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.004ab680
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 0x4aa099
cmp dword [esp + 0xc], 0
je 0x4aa099
cmp dword [esp + 0x4c], 0
je 0x4aa181
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 0x4aa619
mov esi, ebp
not esi
add eax, esi
adc ecx, 0xffffffff
cmp eax, dword [ebx + 0x14]
sbb ecx, 0
jae 0x4aa62e
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.004a7380
add esp, 8
mov eax, dword [eax]
mov ecx, dword [ebx + 0x20]
sub ecx, dword [eax + 0x14]
cmp ecx, edi
jbe 0x4aa181
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x34]
xor edx, edx
cmp ebp, eax
sbb edx, ecx
jae 0x4aa619
add eax, esi
adc ecx, 0xffffffff
cmp eax, dword [ebx + 0x14]
sbb ecx, 0
jae 0x4aa62e
mov ecx, dword [esp + 0x34]
mov esi, dword [ecx]
mov edi, dword [ecx + 4]
push eax
push ebx
call fcn.004a7380
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.004b1010
add esp, 8
test eax, eax
je 0x4aa181
push 0
push ebp
push dword [esp + 0x44]
push ebx
call fcn.004ab8c0
add esp, 0x10
test eax, eax
jne 0x4aa611
push 0
push ebp
push ebx
call fcn.004aba20
add esp, 0xc
test eax, eax
jne 0x4aa611
push ebx
call fcn.004abae0
add esp, 4
mov ebx, dword [eax + 0x18]
jmp 0x4aa183
mov ebx, dword [esp + 4]
cmp ebx, 0xffffffff
mov edx, dword [esp + 0x40]
je 0x4aa5ed
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.004ac140
add esp, 0x14
jmp 0x4aa611
cmp dword [esp + 4], 0xffffffff
je 0x4aa219
test al, al
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 4]
lea edi, [esp + 8]
jne 0x4aa06d
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.004b1010
mov edx, dword [esp + 0x48]
add esp, 8
test eax, eax
je 0x4aa06d
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.004ac140
add esp, 0x14
test eax, eax
jne 0x4aa611
lea eax, [esp + 0xc]
push dword [ebx + 0x18]
push dword [ebp + 0xc]
push dword [ebp + 4]
push eax
call fcn.0049e6b0
add esp, 0x10
test eax, eax
jne 0x4aa611
mov ebp, dword [esp + 4]
cmp ebp, 0x63
jae 0x4aa643
lea eax, [ebp*4]
lea ecx, [eax + eax*8]
add ecx, 0x8b43ac
mov dword [esp + 8], ecx
mov eax, dword [eax + eax*8 + 0x8b43cc]
mov dword [esp + 0x10], eax
mov byte [esp + 0x14], 0
lea eax, [ebx + 0x40]
push esi
push eax
push edi
push ebx
call fcn.004aca40
add esp, 0x10
mov ebx, eax
push dword [esp + 0xc]
call fcn.0049e740
add esp, 4
test ebx, ebx
je 0x4aa4f6
mov eax, ebx
jmp 0x4aa611
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 0x4aa1f4
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 0x4aa20b
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.004aa960
add esp, 0x28
jmp 0x4aa614
cmp ebp, 0xffffffff
lea edi, [esp + 8]
je 0x4aa247
test al, al
mov ebx, dword [esp + 0x2c]
jne 0x4aa457
cmp dword [esp + 0x4c], 0
je 0x4aa2f6
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx]
mov edi, dword [ecx + 4]
jmp 0x4aa31c
test al, al
mov edx, dword [esp + 0x40]
jne 0x4aa5ed
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.004b1010
mov edx, dword [esp + 0x48]
add esp, 8
test eax, eax
je 0x4aa5ed
mov eax, dword [esp + 0x2c]
mov ebp, dword [eax + 0x18]
push ebp
push dword [edx + 8]
push dword [edx]
push edi
call fcn.0049e6b0
add esp, 0x10
test eax, eax
jne 0x4aa611
lea eax, [esp + 0xc]
push ebp
mov ecx, dword [esp + 0x44]
push dword [ecx + 0xc]
push dword [ecx + 4]
push eax
call fcn.0049e6b0
add esp, 0x10
test eax, eax
je 0x4aa587
push dword [esp + 8]
mov esi, eax
call fcn.0049e740
mov eax, esi
add esp, 4
jmp 0x4aa611
cmp dword [edx + 0xc], 0x14
jae 0x4a9d08
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0xa392c0]
mov dword [esp + 4], eax
mov eax, 2
jmp 0x4a9edf
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.004b1010
add esp, 8
test eax, eax
je 0x4aa457
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.004ac140
add esp, 0x14
test eax, eax
jne 0x4aa611
cmp dword [esp + 0x4c], 0
je 0x4aa40f
push esi
push dword [esp + 0x44]
push 0
push ebp
push ebx
call fcn.004abcc0
add esp, 0x14
test eax, eax
jne 0x4aa611
push ebx
call fcn.004abae0
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.004abb10
add esp, 0x30
jmp 0x4aa614
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.004abcc0
add esp, 0x14
test eax, eax
jne 0x4aa611
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 0x4aa4cf
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 0x4aa4e7
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.004ac140
add esp, 0x2c
jmp 0x4aa614
cmp dword [esp + 0x4c], 0
mov edx, dword [esp + 0x40]
mov ebx, ebp
je 0x4aa06d
mov ebp, dword [esp + 0x2c]
push ebp
call fcn.004abae0
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.004abb10
add esp, 0x18
jmp 0x4aa611
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.004aca40
add esp, 0x10
mov ebx, eax
push dword [esp + 0xc]
call fcn.0049e740
add esp, 4
push dword [esp + 8]
call fcn.0049e740
add esp, 4
test ebx, ebx
jne 0x4aa17a
mov ecx, ebp
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
push esi
push 5
push 0x40
call fcn.004ac4b0
add esp, 0xc
test eax, eax
jne 0x4aa611
cmp dword [esp + 0x4c], 0
mov edx, esi
jne 0x4aa507
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.004ac4b0
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]