Function at 0x10091ef0
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 8
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
test edi, edi
je 0x10091f20
cmp ebx, 0x40
jb 0x10091f20
cmp dword [0x101ce64c], 0
je 0x10091f20
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
jmp fcn.10039f80
mov esi, eax
shr esi, 0x10
movzx ecx, ax
cmp ebx, 1
jne 0x10091f60
movzx eax, byte [edi]
lea edx, [ecx + eax]
cmp edx, 0xfff1
lea eax, [ecx + eax - 0xfff1]
cmovb eax, edx
add esi, eax
mov ecx, esi
shl ecx, 0x10
cmp esi, 0xfff1
lea esi, [ecx + 0xf0000]
cmovb esi, ecx
or esi, eax
jmp 0x100922a2
test edi, edi
je 0x10091fb4
cmp ebx, 0x10
jae 0x10091fda
test ebx, ebx
je 0x1009227a
mov eax, ebx
and eax, 3
je 0x10092244
xor edx, edx
mov dword [ebp - 0x10], eax
nop word cs:[eax + eax]
movzx eax, byte [edi + edx]
add ecx, eax
mov eax, dword [ebp - 0x10]
add esi, ecx
inc edx
cmp eax, edx
jne 0x10091f90
add edi, edx
mov eax, ebx
sub eax, edx
cmp ebx, 4
jae 0x1009224b
jmp 0x1009227a
mov esi, 1
test ebx, ebx
jne 0x100922a2
push 0
push 0
push 0x100d63a0
push 0x101ce654
call dword [sym.imp.KERNEL32.dll_InitOnceExecuteOnce]
jmp 0x100922a2
cmp ebx, 0x15b0
jb 0x10092120
nop word cs:[eax + eax]
mov dword [ebp - 0x10], ebx
mov eax, 0xffffea50
nop dword [eax + eax]
movzx edx, byte [edi + eax + 0x15b0]
add edx, ecx
add esi, edx
movzx ecx, byte [edi + eax + 0x15b1]
add ecx, edx
add esi, ecx
movzx edx, byte [edi + eax + 0x15b2]
add edx, ecx
add esi, edx
movzx ecx, byte [edi + eax + 0x15b3]
add ecx, edx
add esi, ecx
movzx edx, byte [edi + eax + 0x15b4]
add edx, ecx
add esi, edx
movzx ecx, byte [edi + eax + 0x15b5]
add ecx, edx
add esi, ecx
movzx edx, byte [edi + eax + 0x15b6]
add edx, ecx
add esi, edx
movzx ecx, byte [edi + eax + 0x15b7]
add ecx, edx
add esi, ecx
movzx edx, byte [edi + eax + 0x15b8]
add edx, ecx
add esi, edx
movzx ecx, byte [edi + eax + 0x15b9]
add ecx, edx
add esi, ecx
movzx edx, byte [edi + eax + 0x15ba]
add edx, ecx
add esi, edx
movzx ecx, byte [edi + eax + 0x15bb]
add ecx, edx
add esi, ecx
movzx edx, byte [edi + eax + 0x15bc]
add edx, ecx
add esi, edx
movzx ecx, byte [edi + eax + 0x15bd]
add ecx, edx
add esi, ecx
movzx edx, byte [edi + eax + 0x15be]
add edx, ecx
add esi, edx
movzx ecx, byte [edi + eax + 0x15bf]
add ecx, edx
add esi, ecx
add eax, 0x10
jne 0x10092000
mov eax, ecx
mov edx, 0x80078071
mul edx
shr edx, 0xf
imul ebx, edx, 0xfff1
mov eax, esi
mov edx, 0x80078071
mul edx
sub ecx, ebx
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
mov ebx, dword [ebp - 0x10]
add ebx, 0xffffea50
add edi, 0x15b0
cmp ebx, 0x15af
ja 0x10091ff0
test ebx, ebx
je 0x1009223d
cmp ebx, 0xf
jbe 0x100921b2
nop dword [eax]
add ebx, 0xfffffff0
movzx eax, byte [edi]
add eax, ecx
add esi, eax
movzx ecx, byte [edi + 1]
add ecx, eax
add esi, ecx
movzx eax, byte [edi + 2]
add eax, ecx
add esi, eax
movzx ecx, byte [edi + 3]
add ecx, eax
add esi, ecx
movzx eax, byte [edi + 4]
add eax, ecx
add esi, eax
movzx ecx, byte [edi + 5]
add ecx, eax
add esi, ecx
movzx eax, byte [edi + 6]
add eax, ecx
add esi, eax
movzx ecx, byte [edi + 7]
add ecx, eax
add esi, ecx
movzx eax, byte [edi + 8]
add eax, ecx
add esi, eax
movzx ecx, byte [edi + 9]
add ecx, eax
add esi, ecx
movzx eax, byte [edi + 0xa]
add eax, ecx
add esi, eax
movzx ecx, byte [edi + 0xb]
add ecx, eax
add esi, ecx
movzx eax, byte [edi + 0xc]
add eax, ecx
add esi, eax
movzx ecx, byte [edi + 0xd]
add ecx, eax
add esi, ecx
movzx eax, byte [edi + 0xe]
add eax, ecx
add esi, eax
movzx ecx, byte [edi + 0xf]
add ecx, eax
add esi, ecx
add edi, 0x10
cmp ebx, 0xf
ja 0x10092120
test ebx, ebx
je 0x1009221a
lea edx, [ebx - 1]
mov eax, ebx
and eax, 3
je 0x100921e7
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x10], ebx
xor edx, edx
nop word cs:[eax + eax]
movzx ebx, byte [edi + edx]
add ecx, ebx
add esi, ecx
inc edx
cmp eax, edx
jne 0x100921d0
add edi, edx
mov ebx, dword [ebp - 0x10]
sub ebx, edx
mov edx, dword [ebp - 0x14]
cmp edx, 3
jb 0x1009221a
xor eax, eax
nop
movzx edx, byte [edi + eax]
add edx, ecx
add esi, edx
movzx ecx, byte [edi + eax + 1]
add ecx, edx
add esi, ecx
movzx edx, byte [edi + eax + 2]
add edx, ecx
add esi, edx
movzx ecx, byte [edi + eax + 3]
add ecx, edx
add esi, ecx
add eax, 4
cmp ebx, eax
jne 0x100921f0
mov edi, 0x80078071
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
mov eax, esi
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
shl esi, 0x10
or esi, ecx
jmp 0x100922a2
mov eax, ebx
cmp ebx, 4
jb 0x1009227a
xor edx, edx
nop dword [eax]
movzx ebx, byte [edi + edx]
add ebx, ecx
add esi, ebx
movzx ecx, byte [edi + edx + 1]
add ecx, ebx
add esi, ecx
movzx ebx, byte [edi + edx + 2]
add ebx, ecx
add esi, ebx
movzx ecx, byte [edi + edx + 3]
add ecx, ebx
add esi, ecx
add edx, 4
cmp eax, edx
jne 0x10092250
lea edi, [ecx - 0xfff1]
cmp ecx, 0xfff1
cmovb edi, ecx
mov ecx, 0x80078071
mov eax, esi
mul ecx
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
shl esi, 0x10
or esi, edi
mov eax, esi
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret