Function at 0x438eb1
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, ecx
mov ebx, eax
shr edi, 0x10
and ecx, 0xffff
mov esi, edx
cmp ebx, 1
jne 0x438f01
movzx eax, byte [esi]
add ecx, eax
cmp ecx, 0xfff1
jb 0x438edf
sub ecx, 0xfff1
add edi, ecx
cmp edi, 0xfff1
jb 0x439110
sub edi, 0xfff1
mov eax, edi
pop edi
shl eax, 0x10
pop esi
or eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret
test esi, esi
jne 0x438f0f
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ebx, 0x10
jae 0x438f50
test ebx, ebx
je 0x438f23
movzx edx, byte [esi]
add ecx, edx
inc esi
add edi, ecx
dec ebx
jne 0x438f18
cmp ecx, 0xfff1
jb 0x438f31
sub ecx, 0xfff1
mov eax, 0x80078071
mul edi
shr edx, 0xf
mov eax, edx
shl eax, 4
sub eax, edx
add eax, edi
pop edi
shl eax, 0x10
pop esi
or eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret
cmp ebx, 0x15b0
jb 0x439037
mov eax, 0x5e6ea9af
mul ebx
shr edx, 0xb
mov dword [ebp - 4], edx
jmp 0x438f71
sub ebx, 0x15b0
mov eax, 0x15b
jmp 0x438f81
movzx edx, byte [esi]
add ecx, edx
movzx edx, byte [esi + 1]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 2]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 3]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 4]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 5]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 6]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 7]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 8]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 9]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xa]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xb]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xc]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xd]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xe]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xf]
add edi, ecx
add ecx, edx
add edi, ecx
add esi, 0x10
dec eax
jne 0x438f81
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
mov eax, 0x80078071
mul edi
shr edx, 0xf
imul edx, edx, 0xffff000f
add edi, edx
dec dword [ebp - 4]
jne 0x438f71
test ebx, ebx
je 0x439110
cmp ebx, 0x10
jb 0x4390dd
mov eax, ebx
shr eax, 4
lea esp, [esp]
movzx edx, byte [esi]
add ecx, edx
movzx edx, byte [esi + 1]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 2]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 3]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 4]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 5]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 6]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 7]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 8]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 9]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xa]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xb]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xc]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xd]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xe]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xf]
add edi, ecx
add ecx, edx
sub ebx, 0x10
add edi, ecx
add esi, 0x10
dec eax
jne 0x439051
test ebx, ebx
je 0x4390ec
movzx eax, byte [esi]
add ecx, eax
inc esi
add edi, ecx
dec ebx
jne 0x4390e1
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
mov eax, 0x80078071
mul edi
shr edx, 0xf
imul edx, edx, 0xffff000f
add edi, edx
mov eax, edi
pop edi
shl eax, 0x10
pop esi
or eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret