Function at 0x4ab840
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.004ac6d0
mov edx, esi
mov ebx, eax
movzx eax, byte [esi + 0x10]
mov dword [esp], 2
test al, 1
jne 0x4ab8e8
lea ecx, [ebx + 1]
cmp ecx, 0x56
ja case.default.0x4ab874
jmp dword [ecx*4 + 0x9b2930]
test al, 8
jne 0x4ab8c8
mov dword [esp], 0
cmp ebx, 0x62
ja case.0x4ab9d6.1001
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0x9b2f20]
mov dword [esp + 4], eax
mov dword [esp], 0
jmp 0x4ab90f
lea ecx, [ebx - 0x3e8]
cmp ecx, 8
ja case.0x4ab874.0
mov edx, 0x1c1
bt edx, ecx
mov edx, dword [esp + 0x40]
jae case.0x4ab874.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 0x4ab9be
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0x9b2f20]
mov dword [esp + 4], eax
mov eax, 2
cmp dword [esp], 2
je 0x4aba9f
mov eax, ebx
shl eax, 4
lea esi, [eax + 0x9b2f28]
mov edi, 0x63
jmp 0x4ab93c
dec edi
add esi, 0x10
cmp ebx, edi
je 0x4aba9c
cmp dword [esi], ebx
jne 0x4aba9c
mov ebp, dword [esi - 8]
lea ecx, [ebp*4]
mov eax, dword [ecx + ecx*8 + 0x8bf324]
cmp eax, dword [edx + 0xc]
jne 0x4ab930
test eax, eax
je 0x4ab97e
lea ecx, [ecx + ecx*8]
add ecx, 0x8bf31c
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 0x4ab930
cmp ebp, 0xffffffff
je 0x4aba94
mov ecx, dword [esp + 0x38]
mov edx, 0xc0
mov eax, dword [esp + 0x2c]
push dword [eax + 0x18]
push 6
push 0
push ebp
jmp 0x4abdcc
test al, 8
sete al
cmp ebx, 0x3e8
setae cl
mov dword [esp], 0
test cl, al
je 0x4ab8c8
lea eax, [ebx - 0x3e8]
cmp eax, 8
ja case.0x4ab9d6.1001
mov esi, 0xaffea56f
mov dword [esp + 4], 0xffffffff
jmp dword [eax*4 + 0x9b2a8c]
mov esi, 0x3c453eb2
jmp case.0x4ab9d6.1000
mov dword [esp + 4], 0xffffffff
test edi, edi
je 0x4aba1a
mov eax, edi
and eax, 3
cmp edi, 4
jae 0x4aba24
mov esi, 0x811c9dc5
xor ecx, ecx
jmp 0x4aba6b
mov esi, 0x4345b83d
jmp case.0x4ab9d6.1000
mov esi, 0x94e4e309
jmp case.0x4ab9d6.1000
mov esi, 0x811c9dc5
jmp case.0x4ab9d6.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 0x4aba30
test eax, eax
je case.0x4ab9d6.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 0x4aba80
jmp case.0x4ab9d6.1000
mov dword [esp + 4], 0xffffffff
mov eax, dword [esp]
mov ecx, ebx
shl ecx, 4
mov esi, dword [ecx + 0x9b2f2c]
mov dword [esp], eax
mov ebp, dword [esp + 0x2c]
lea eax, [ebp + 0x140]
push eax
call fcn.004a9a20
add esp, 4
cmp eax, 0x7cf
ja 0x4abc1c
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.004ad240
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 0x4abc59
cmp dword [esp + 0xc], 0
je 0x4abc59
cmp dword [esp + 0x4c], 0
je 0x4abd41
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 0x4ac1d9
mov esi, ebp
not esi
add eax, esi
adc ecx, 0xffffffff
cmp eax, dword [ebx + 0x14]
sbb ecx, 0
jae 0x4ac1ee
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.004a8f40
add esp, 8
mov eax, dword [eax]
mov ecx, dword [ebx + 0x20]
sub ecx, dword [eax + 0x14]
cmp ecx, edi
jbe 0x4abd41
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x34]
xor edx, edx
cmp ebp, eax
sbb edx, ecx
jae 0x4ac1d9
add eax, esi
adc ecx, 0xffffffff
cmp eax, dword [ebx + 0x14]
sbb ecx, 0
jae 0x4ac1ee
mov ecx, dword [esp + 0x34]
mov esi, dword [ecx]
mov edi, dword [ecx + 4]
push eax
push ebx
call fcn.004a8f40
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.004b2bd0
add esp, 8
test eax, eax
je 0x4abd41
push 0
push ebp
push dword [esp + 0x44]
push ebx
call fcn.004ad480
add esp, 0x10
test eax, eax
jne 0x4ac1d1
push 0
push ebp
push ebx
call fcn.004ad5e0
add esp, 0xc
test eax, eax
jne 0x4ac1d1
push ebx
call fcn.004ad6a0
add esp, 4
mov ebx, dword [eax + 0x18]
jmp 0x4abd43
mov ebx, dword [esp + 4]
cmp ebx, 0xffffffff
mov edx, dword [esp + 0x40]
je 0x4ac1ad
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.004add00
add esp, 0x14
jmp 0x4ac1d1
cmp dword [esp + 4], 0xffffffff
je 0x4abdd9
test al, al
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 4]
lea edi, [esp + 8]
jne 0x4abc2d
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.004b2bd0
mov edx, dword [esp + 0x48]
add esp, 8
test eax, eax
je 0x4abc2d
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.004add00
add esp, 0x14
test eax, eax
jne 0x4ac1d1
lea eax, [esp + 0xc]
push dword [ebx + 0x18]
push dword [ebp + 0xc]
push dword [ebp + 4]
push eax
call fcn.004a0270
add esp, 0x10
test eax, eax
jne 0x4ac1d1
mov ebp, dword [esp + 4]
cmp ebp, 0x63
jae 0x4ac203
lea eax, [ebp*4]
lea ecx, [eax + eax*8]
add ecx, 0x8bf30c
mov dword [esp + 8], ecx
mov eax, dword [eax + eax*8 + 0x8bf32c]
mov dword [esp + 0x10], eax
mov byte [esp + 0x14], 0
lea eax, [ebx + 0x40]
push esi
push eax
push edi
push ebx
call fcn.004ae600
add esp, 0x10
mov ebx, eax
push dword [esp + 0xc]
call fcn.004a0300
add esp, 4
test ebx, ebx
je 0x4ac0b6
mov eax, ebx
jmp 0x4ac1d1
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 0x4abdb4
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 0x4abdcb
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.004ac520
add esp, 0x28
jmp 0x4ac1d4
cmp ebp, 0xffffffff
lea edi, [esp + 8]
je 0x4abe07
test al, al
mov ebx, dword [esp + 0x2c]
jne 0x4ac017
cmp dword [esp + 0x4c], 0
je 0x4abeb6
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx]
mov edi, dword [ecx + 4]
jmp 0x4abedc
test al, al
mov edx, dword [esp + 0x40]
jne 0x4ac1ad
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.004b2bd0
mov edx, dword [esp + 0x48]
add esp, 8
test eax, eax
je 0x4ac1ad
mov eax, dword [esp + 0x2c]
mov ebp, dword [eax + 0x18]
push ebp
push dword [edx + 8]
push dword [edx]
push edi
call fcn.004a0270
add esp, 0x10
test eax, eax
jne 0x4ac1d1
lea eax, [esp + 0xc]
push ebp
mov ecx, dword [esp + 0x44]
push dword [ecx + 0xc]
push dword [ecx + 4]
push eax
call fcn.004a0270
add esp, 0x10
test eax, eax
je 0x4ac147
push dword [esp + 8]
mov esi, eax
call fcn.004a0300
mov eax, esi
add esp, 4
jmp 0x4ac1d1
cmp dword [edx + 0xc], 0x14
jae 0x4ab8c8
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0x9b2f20]
mov dword [esp + 4], eax
mov eax, 2
jmp 0x4aba9f
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.004b2bd0
add esp, 8
test eax, eax
je 0x4ac017
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.004add00
add esp, 0x14
test eax, eax
jne 0x4ac1d1
cmp dword [esp + 0x4c], 0
je 0x4abfcf
push esi
push dword [esp + 0x44]
push 0
push ebp
push ebx
call fcn.004ad880
add esp, 0x14
test eax, eax
jne 0x4ac1d1
push ebx
call fcn.004ad6a0
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.004ad6d0
add esp, 0x30
jmp 0x4ac1d4
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.004ad880
add esp, 0x14
test eax, eax
jne 0x4ac1d1
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 0x4ac08f
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 0x4ac0a7
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.004add00
add esp, 0x2c
jmp 0x4ac1d4
cmp dword [esp + 0x4c], 0
mov edx, dword [esp + 0x40]
mov ebx, ebp
je 0x4abc2d
mov ebp, dword [esp + 0x2c]
push ebp
call fcn.004ad6a0
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.004ad6d0
add esp, 0x18
jmp 0x4ac1d1
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.004ae600
add esp, 0x10
mov ebx, eax
push dword [esp + 0xc]
call fcn.004a0300
add esp, 4
push dword [esp + 8]
call fcn.004a0300
add esp, 4
test ebx, ebx
jne 0x4abd3a
mov ecx, ebp
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
push esi
push 5
push 0x40
call fcn.004ae070
add esp, 0xc
test eax, eax
jne 0x4ac1d1
cmp dword [esp + 0x4c], 0
mov edx, esi
jne 0x4ac0c7
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.004ae070
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]