Function at 0x403b70
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
push ebx
push edi
push esi
push eax
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
movzx esi, cx
shr ecx, 0x10
cmp ebx, 1
je 0x403e40
mov eax, 1
test edi, edi
je 0x403cda
cmp ebx, 0x10
jb 0x403e73
cmp ebx, 0x15b0
jae 0x403ce2
mov edx, ebx
add ebx, 0xfffffff0
mov ebp, edi
mov eax, ebx
and eax, 0xfffffff0
mov dword [esp], eax
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx eax, byte [ebp]
add edx, 0xfffffff0
add eax, esi
movzx esi, byte [ebp + 1]
add ecx, eax
add esi, eax
movzx eax, byte [ebp + 2]
add ecx, esi
add eax, esi
movzx esi, byte [ebp + 3]
add ecx, eax
add esi, eax
movzx eax, byte [ebp + 4]
add ecx, esi
add eax, esi
movzx esi, byte [ebp + 5]
add ecx, eax
add esi, eax
movzx eax, byte [ebp + 6]
add ecx, esi
add eax, esi
movzx esi, byte [ebp + 7]
add ecx, eax
add esi, eax
movzx eax, byte [ebp + 8]
add ecx, esi
add eax, esi
movzx esi, byte [ebp + 9]
add ecx, eax
add esi, eax
movzx eax, byte [ebp + 0xa]
add ecx, esi
add eax, esi
movzx esi, byte [ebp + 0xb]
add ecx, eax
add esi, eax
movzx eax, byte [ebp + 0xc]
add ecx, esi
add eax, esi
movzx esi, byte [ebp + 0xd]
add ecx, eax
add esi, eax
movzx eax, byte [ebp + 0xe]
add ecx, esi
add eax, esi
movzx esi, byte [ebp + 0xf]
add ebp, 0x10
add ecx, eax
add esi, eax
add ecx, esi
cmp edx, 0xf
ja 0x403bd0
mov eax, dword [esp]
sub ebx, eax
je 0x403cb0
lea edi, [eax + edi + 0x10]
mov eax, esi
movzx esi, byte [edi]
add esi, eax
add ecx, esi
cmp ebx, 1
je 0x403cb0
movzx eax, byte [edi + 1]
add esi, eax
add ecx, esi
cmp ebx, 2
je 0x403cb0
movzx eax, byte [edi + 2]
add esi, eax
add ecx, esi
cmp ebx, 3
je 0x403cb0
movzx eax, byte [edi + 3]
add esi, eax
add ecx, esi
cmp ebx, 4
je 0x403cb0
movzx eax, byte [edi + 4]
add esi, eax
add ecx, esi
cmp ebx, 5
jne 0x403e05
mov edi, 0x80078071
mov eax, esi
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
shl ecx, 0x10
or ecx, esi
mov eax, ecx
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebp, 0x80078071
mov eax, 0xffffea50
nop dword [eax]
movzx edx, byte [edi + eax + 0x15b0]
add edx, esi
movzx esi, byte [edi + eax + 0x15b1]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15b2]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15b3]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15b4]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15b5]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15b6]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15b7]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15b8]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15b9]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15ba]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15bb]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15bc]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15bd]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15be]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15bf]
add ecx, edx
add esi, edx
add ecx, esi
add eax, 0x10
jne 0x403cf0
mov eax, esi
add ebx, 0xffffea50
add edi, 0x15b0
mul ebp
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
mov eax, ecx
mul ebp
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
cmp ebx, 0x15af
ja 0x403ce7
test ebx, ebx
je 0x403cd3
cmp ebx, 0xf
ja 0x403bb2
jmp 0x403c6a
movzx eax, byte [edi + 5]
add esi, eax
add ecx, esi
cmp ebx, 6
je 0x403cb0
movzx eax, byte [edi + 6]
add esi, eax
add ecx, esi
add ebx, 0xfffffff9
je 0x403cb0
add edi, 7
nop word [eax + eax]
movzx eax, byte [edi]
inc edi
add esi, eax
add ecx, esi
dec ebx
jne 0x403e30
jmp 0x403cb0
movzx eax, byte [edi]
lea edx, [esi + eax]
lea esi, [esi + eax - 0xfff1]
cmp edx, 0xfff0
cmovbe esi, edx
add ecx, esi
mov edx, ecx
shl edx, 0x10
cmp ecx, 0xfff0
lea eax, [edx + 0xf0000]
cmovbe eax, edx
or eax, esi
jmp 0x403cda
test ebx, ebx
je 0x403e82
movzx eax, byte [edi]
inc edi
add esi, eax
add ecx, esi
dec ebx
jne 0x403e77
lea edi, [esi - 0xfff1]
cmp esi, 0xfff0
mov edx, 0x80078071
mov eax, ecx
cmovbe edi, esi
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
shl ecx, 0x10
or ecx, edi
jmp 0x403cd8