Function at 0x439ed0
Capabilities:
Compute adler32 checksum

Disassembly:
sub esp, 0x14
push ebx
push ebp
push esi
mov esi, dword [esp + 0x28]
push edi
movzx ecx, byte [esi]
movzx eax, byte [esi + 1]
shl ecx, 8
add ecx, eax
movzx eax, byte [esi + 2]
shl ecx, 8
add ecx, eax
movzx eax, byte [esi + 3]
shl ecx, 8
add ecx, eax
cmp ecx, 0x57bc0000
jne 0x43a11d
movzx ecx, byte [esi + 4]
movzx eax, byte [esi + 5]
shl ecx, 8
add ecx, eax
movzx eax, byte [esi + 6]
shl ecx, 8
add ecx, eax
movzx eax, byte [esi + 7]
shl ecx, 8
add ecx, eax
jne 0x43a11d
movzx ecx, byte [esi + 8]
movzx eax, byte [esi + 9]
mov edi, dword [esp + 0x28]
shl ecx, 8
add ecx, eax
mov dword [0x531544], esi
movzx eax, byte [esi + 0xa]
shl ecx, 8
add ecx, eax
mov dword [0x531540], edi
movzx eax, byte [esi + 0xb]
add esi, 0x10
shl ecx, 8
add ecx, eax
mov dword [0x531548], edi
push esi
mov dword [esp + 0x20], ecx
lea ebx, [ecx + edi]
mov dword [0x53153c], ebx
call fcn.0043a130
mov ebp, eax
add esp, 4
mov dword [esp + 0x18], ebp
cmp ebp, esi
je 0x439fa3
cmp dword [0x531548], ebx
ja 0x43a11d
push ebp
mov esi, ebp
call fcn.0043a130
mov ebp, eax
mov dword [esp + 0x1c], eax
add esp, 4
cmp ebp, esi
jne 0x439f82
cmp byte [ebp], 5
jne 0x43a11d
cmp byte [ebp + 1], 0xfa
jne 0x43a11d
cmp dword [0x531548], ebx
jne 0x43a11d
mov esi, dword [esp + 0x1c]
mov eax, 0x5e6ea9af
mul esi
xor ebx, ebx
mov dword [esp + 0x14], esi
shr edx, 0xb
mov ecx, 1
imul eax, edx, 0x15b0
mov edx, esi
sub edx, eax
mov dword [esp + 0x2c], edx
test esi, esi
je 0x43a0e9
xor esi, esi
cmp edx, 7
jbe 0x43a04c
mov ebp, 7
sub ebp, edi
movzx eax, byte [edi]
add esi, 8
add ecx, eax
movzx eax, byte [edi + 1]
add ebx, ecx
add ecx, eax
movzx eax, byte [edi + 2]
add ebx, ecx
add ecx, eax
movzx eax, byte [edi + 3]
add ebx, ecx
add ecx, eax
movzx eax, byte [edi + 4]
add ebx, ecx
add ecx, eax
movzx eax, byte [edi + 5]
add ebx, ecx
add ecx, eax
movzx eax, byte [edi + 6]
add ebx, ecx
add ecx, eax
movzx eax, byte [edi + 7]
add edi, 8
add ebx, ecx
add ecx, eax
add ebx, ecx
lea eax, [edi + ebp]
cmp eax, edx
jb 0x43a000
mov eax, dword [esp + 0x2c]
xor ebp, ebp
xor edx, edx
cmp esi, eax
jae 0x43a0aa
sub eax, esi
cmp eax, 2
jb 0x43a097
mov edx, dword [esp + 0x2c]
sub edx, esi
sub edx, 2
shr edx, 1
inc edx
lea esi, [esi + edx*2]
mov dword [esp + 0x20], esi
mov esi, ebp
movzx eax, byte [edi]
add ecx, eax
movzx eax, byte [edi + 1]
add ebp, ecx
add edi, 2
add ecx, eax
add esi, ecx
sub edx, 1
jne 0x43a074
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
cmp esi, dword [esp + 0x2c]
jae 0x43a0a5
movzx eax, byte [edi]
add ecx, eax
add ebx, ecx
inc edi
lea eax, [edx + ebp]
add ebx, eax
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul ebx
shr edx, 0xf
imul eax, edx, 0xffff000f
mov edx, dword [esp + 0x2c]
add ebx, eax
sub dword [esp + 0x14], edx
mov edx, 0x15b0
mov dword [esp + 0x2c], edx
jne 0x439ff2
mov ebp, dword [esp + 0x18]
movzx esi, byte [ebp + 2]
movzx eax, byte [ebp + 3]
movzx edx, byte [ebp + 5]
shl esi, 8
add esi, eax
shl ebx, 0x10
movzx eax, byte [ebp + 4]
add ebx, ecx
shl esi, 8
add esi, eax
shl esi, 8
add esi, edx
cmp ebx, esi
jne 0x43a11d
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret