Function at 0x40d2a0
Capabilities:
Compute adler32 checksum
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov eax, dword [ebp + 0x1c]
mov edi, dword [ebp + 0x14]
mov dword [esp + 0x68], ecx
call 0x40d2be
pop ebx
mov dword [esp + 0x6c], ebx
mov esi, eax
mov ecx, edi
mov dword [esp + 0xb8], eax
xor eax, eax
and esi, 4
sub ecx, 1
cmovb ecx, eax
mov dword [esp + 0x64], esi
cmp esi, 1
mov esi, 0
sbb esi, esi
not esi
or esi, ecx
lea ecx, [esi + 1]
mov dword [esp + 0x44], esi
test ecx, esi
jne 0x40ea18
cmp dword [ebp + 0x18], edi
ja 0x40ea18
mov eax, dword [edx + 0x34]
mov ebx, edx
mov dword [esp + 0xac], ecx
mov ecx, dword [edx]
mov edx, dword [edx + 0x1c]
mov esi, dword [ebx + 0x20]
mov edi, dword [ebx + 0x24]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], esi
mov esi, 0x102
mov dword [esp + 0x20], edi
test al, 1
sete cl
xor edx, edx
inc edx
test al, 2
mov eax, 0xfc02
cmove esi, eax
mov eax, 0xfc
cmovne eax, edx
lea edx, [ebx + 0xd48]
mov dword [esp + 0x28], esi
and esi, 0xfd00
add cl, cl
mov dword [esp + 0xb4], edx
lea edx, [ebx + 0xcb8]
mov dword [esp + 0x38], eax
mov dword [esp + 0xa4], esi
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
or cl, 1
mov dword [esp + 0x40], edx
lea edx, [ebx + 0xdb8]
mov byte [esp + 0x4b], cl
mov dword [esp + 0xb0], edx
lea edx, [ebx + 0x1a58]
mov dword [esp + 0x4c], edx
lea edx, [ebx + 0x291d]
mov dword [esp + 0x8c], edx
lea edx, [ebx + 0x27f8]
lea edi, [esi + eax]
mov ah, byte [ebx + 0x2918]
mov dword [esp], esi
mov dword [esp + 0xa8], edx
mov edx, dword [ebp + 0x18]
mov dword [esp + 8], edi
mov dword [esp + 4], edx
cmp ah, 0x18
ja 0x40eab5
movzx edx, ah
xor ecx, ecx
mov edx, dword [edx*4 + 0x40f25c]
add edx, dword [esp + 0x6c]
jmp edx
mov ecx, dword [esp + 0x68]
mov byte [ecx + 4], 0xfd
mov dword [ecx], eax
mov dword [ecx + 8], eax
jmp 0x40efc1
mov cl, 0xff
jmp 0x40eb1c
mov edx, dword [esp]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x38], ecx
sub edx, edi
mov ebx, esi
add edx, dword [ebp + 0xc]
shr ebx, 3
cmp ebx, edx
cmova ebx, edx
lea edx, [ebx*8]
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 4]
sub esi, edx
mov edx, dword [ebp + 0x14]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov byte [esi + 0x2918], ah
xor eax, eax
mov dword [esi], ecx
dec eax
shl eax, cl
mov ecx, dword [esp + 0x18]
not eax
and eax, dword [esp + 0x10]
mov dword [esi + 0x1c], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esi + 0x20], ecx
mov ecx, dword [esp + 0x20]
mov dword [esi + 0x24], ecx
mov dword [esi + 0x34], eax
mov eax, dword [ebp + 0x1c]
test al, 9
mov eax, dword [esp + 0x38]
je 0x40ef8f
test al, al
js 0x40ef8f
mov ecx, dword [ebp + 0x18]
mov edi, ebx
sub edi, ecx
jb 0x40f1cc
cmp ebx, edx
ja 0x40f1d5
mov eax, dword [esp + 0xc]
mov edx, edi
xorps xmm0, xmm0
movaps xmmword [esp + 0x90], xmm0
movaps xmmword [esp + 0x70], xmm0
mov esi, dword [eax + 0x18]
mov eax, edi
and eax, 3
sub edx, eax
mov dword [esp + 0x30], eax
jb 0x40f088
mov eax, dword [ebp + 0x10]
cmp edx, edi
mov dword [esp + 4], ebx
ja 0x40f1de
add ecx, eax
mov eax, esi
mov ebx, edx
mov edx, 0x5e6ea9af
mov dword [esp + 0x34], edi
shr eax, 0x10
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x28], eax
mov eax, ebx
mul edx
mov eax, ebx
shr edx, 0xd
imul edx, edx, 0x56c0
sub eax, edx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x4c], eax
mov eax, 0x56c0
cmp edx, eax
movzx eax, si
mov dword [esp + 0x2c], eax
jb 0x40ed42
imul eax, eax, 0x56c0
lea esi, [esp + 0x50]
mov edi, ecx
mov dword [esp + 0x24], eax
add edx, 0xffffa940
mov ebx, 0xffffa940
mov edi, esi
mov dword [esp + 0x44], edx
movzx eax, byte [ecx + ebx + 0x56c0]
movzx edx, byte [ecx + ebx + 0x56c1]
movzx esi, byte [ecx + ebx + 0x56c2]
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
movzx edx, byte [ecx + ebx + 0x56c3]
mov dword [esp + 0x58], esi
mov esi, ecx
lea ecx, [esp + 0x90]
mov dword [esp + 0x5c], edx
mov edx, edi
call fcn.004038e7
movaps xmm0, xmmword [esp + 0x90]
lea ecx, [esp + 0x70]
mov edx, edi
movaps xmmword [esp + 0x50], xmm0
call fcn.004038e7
mov ecx, esi
add ebx, 4
jne 0x40ec55
mov esi, edi
add ecx, 0x56c0
mov ebx, 0xfffffff0
mov edi, 0x80078071
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + ebx + 0xa0]
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
mov dword [esp + ebx + 0xa0], ecx
add ebx, 4
jne 0x40ecca
mov ebx, 0xfffffff0
mov ecx, dword [esp + ebx + 0x80]
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
mov dword [esp + ebx + 0x80], ecx
add ebx, 4
jne 0x40ecf1
mov ecx, dword [esp + 0x28]
add ecx, dword [esp + 0x24]
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
mov edx, dword [esp + 0x44]
sub ecx, eax
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x6c]
cmp edx, 0x56c0
jae 0x40ec44
test dword [esp + 0x4c], 0x7ffc
mov edi, dword [esp + 0x3c]
je 0x40edb4
mov esi, dword [esp + 0x4c]
add edi, dword [esp + 0x8c]
and esi, 0x7ffc
neg esi
movzx eax, byte [edi]
movzx ecx, byte [edi + 1]
movzx edx, byte [edi + 2]
movzx ebx, byte [edi + 3]
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], ebx
lea ebx, [esp + 0x50]
lea ecx, [esp + 0x90]
mov edx, ebx
call fcn.004038e7
movaps xmm0, xmmword [esp + 0x90]
lea ecx, [esp + 0x70]
mov edx, ebx
movaps xmmword [esp + 0x50], xmm0
call fcn.004038e7
add edi, 4
add esi, 4
jne 0x40ed63
mov ebx, dword [esp + 0x4c]
mov esi, 0xfffffff0
mov edi, 0x80078071
imul ebx, dword [esp + 0x2c]
mov ecx, dword [esp + esi + 0xa0]
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
mov dword [esp + esi + 0xa0], ecx
add esi, 4
jne 0x40edc7
mov esi, 0xfffffff0
mov edi, 0x80078071
mov ecx, dword [esp + esi + 0x80]
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
mov dword [esp + esi + 0x80], ecx
add esi, 4
jne 0x40edf3
mov esi, dword [esp + 0x28]
mov ecx, 0x80078071
mov edi, dword [esp + 8]
add esi, ebx
mov ebx, dword [ebp + 0x10]
mov eax, esi
mul ecx
mov ecx, 0xfffffff0
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
mov eax, 4
mul dword [esp + ecx + 0x80]
jo 0x40efc9
mov dword [esp + ecx + 0x80], eax
add ecx, 4
jne 0x40ee3b
mov eax, 0xfff1
sub eax, dword [esp + 0x94]
jb 0x40f099
add eax, dword [esp + 0x74]
jb 0x40f0aa
mov dword [esp + 0x74], eax
mov eax, 0xfff1
sub eax, dword [esp + 0x98]
jb 0x40f0be
add eax, eax
jb 0x40f0c5
add eax, dword [esp + 0x78]
jb 0x40f0d9
mov dword [esp + 0x78], eax
mov eax, 0xfff1
sub eax, dword [esp + 0x9c]
jb 0x40f0ed
mov ecx, 3
mul ecx
jo 0x40f0f4
add eax, dword [esp + 0x7c]
mov ecx, dword [esp + 4]
jb 0x40f108
mov edx, esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x7c], eax
mov eax, 0xfffffff0
add esi, dword [esp + eax + 0xa0]
jb 0x40efda
add eax, 4
jne 0x40eedd
mov eax, 0xfffffff0
add edx, dword [esp + eax + 0x80]
jb 0x40efeb
add eax, 4
jne 0x40eef4
mov eax, dword [esp + 0x64]
cmp eax, dword [esp + 0x34]
je 0x40ef31
add ebx, ecx
mov ecx, dword [esp + 0x30]
neg ecx
mov eax, esi
movzx esi, byte [ebx + ecx]
add esi, eax
jb 0x40f00c
add edx, esi
jb 0x40f01d
inc ecx
jne 0x40ef18
mov ecx, 0x80078071
mov eax, esi
mov ebx, edx
mul ecx
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
mov eax, ebx
mul ecx
mov ecx, dword [esp + 0xc]
shr edx, 0xf
imul eax, edx, 0xfff1
sub ebx, eax
shl ebx, 0x10
or ebx, esi
cmp byte [esp + 0x38], 0
mov dword [ecx + 0x18], ebx
jne 0x40ef9f
and dword [esp + 0xb8], 1
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x40]
je 0x40ef8a
cmp ebx, dword [ecx + 0xc]
sete cl
add cl, cl
add cl, 0xfe
mov dword [esp + 0x38], ecx
mov ecx, dword [esp]
jmp 0x40efaa
sub ebx, dword [ebp + 0x18]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp]
mov edx, dword [esp + 0x40]
jmp 0x40efae
mov eax, dword [esp + 0x68]
mov ecx, dword [esp]
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x34]
add ecx, dword [ebp + 0xc]
add edx, edi
sub ecx, edx
mov edx, dword [esp + 0x38]
mov byte [eax + 4], dl
mov dword [eax], ecx
mov dword [eax + 8], ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 0x439730
mov edx, 0x21
push 0x439714
jmp 0x40f02c
mov ecx, 0x439600
mov edx, 0x1c
push 0x43967c
jmp 0x40f02c
mov ecx, 0x439600
mov edx, 0x1c
push 0x43968c
jmp 0x40f02c
mov ecx, 0x439600
mov edx, 0x1c
push 0x43969c
jmp 0x40f02c
mov ecx, 0x439600
mov edx, 0x1c
push 0x4396ac
call fcn.00437f00
add esp, 4
ud2
mov ecx, 0x439590
mov edx, 0x21
push 0x439578
jmp 0x40f02c
mov ecx, 0x439590
mov edx, 0x21
push 0x43961c
jmp 0x40f02c
mov ecx, 0x439600
mov edx, 0x1c
push 0x43962c
jmp 0x40f02c
mov ecx, 0x439590
jmp 0x40f0ca
mov ecx, 0x4395d0
mov edx, 0x21
push 0x43963c
jmp 0x40f02c
mov ecx, 0x439600
mov edx, 0x1c
push 0x43964c
jmp 0x40f02c
mov ecx, 0x439590
jmp 0x40f0f9
mov ecx, 0x4395d0
mov edx, 0x21
push 0x43965c
jmp 0x40f02c
mov ecx, 0x439600
mov edx, 0x1c
push 0x43966c
jmp 0x40f02c
mov edx, ebx
push 0x43bf00
jmp 0x40f225
mov ecx, ebx
push 0x43bf00
jmp 0x40f23b
mov ecx, str.assertion_failed:_mid___self.len__C:UsersMarkus.cargo_registry_srcgithub.com_1285ae84e5963aaeminiz_oxide_0.4.4_srcinflate_stream.rs
mov edx, 0x23
push 0x4395b4
jmp 0x40f02c
call fcn.00437f50
jmp 0x40f031
call fcn.00437e90
jmp 0x40f031