Function at 0x100f981b
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor edx, edx
cmp edi, edx
je 0x100f9fb2
mov esi, dword [edi + 0x1c]
cmp esi, edx
je 0x100f9fb2
mov ecx, dword [ebp + 0xc]
cmp ecx, 4
jg 0x100f9fb2
cmp ecx, edx
jl 0x100f9fb2
cmp dword [edi + 0xc], edx
je 0x100f9faa
cmp dword [edi], edx
jne 0x100f9864
cmp dword [edi + 4], edx
jne 0x100f9faa
mov eax, dword [esi + 4]
cmp eax, 0x29a
jne 0x100f9877
cmp ecx, 4
jne 0x100f9faa
cmp dword [edi + 0x10], edx
je 0x100f9df5
mov edx, dword [esi + 0x28]
cmp eax, 0x2a
mov dword [esi], edi
mov dword [ebp - 4], edx
mov dword [esi + 0x28], ecx
jne 0x100f9b2b
push 2
pop edx
cmp dword [esi + 0x18], edx
jne 0x100f9a94
xor ebx, ebx
push ebx
push ebx
push ebx
call fcn.100fc5e4
mov dword [edi + 0x30], eax
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x14]
add esp, 0xc
mov byte [eax + ecx], 0x1f
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov byte [ecx + eax], 0x8b
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov byte [ecx + eax], 8
mov eax, dword [esi + 0x1c]
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
cmp eax, ebx
jne 0x100f9967
mov eax, dword [esi + 8]
and byte [eax + ecx], bl
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
and byte [ecx + eax], bl
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
and byte [ecx + eax], bl
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
and byte [ecx + eax], bl
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
and byte [ecx + eax], bl
mov eax, dword [esi + 0x84]
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
cmp eax, 9
jne 0x100f9930
push 2
jmp 0x100f9944
cmp dword [esi + 0x88], 2
jge 0x100f9942
cmp eax, 2
jl 0x100f9942
xor eax, eax
jmp 0x100f9945
push 4
pop eax
mov edx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov byte [ecx + eax], 0xb
inc dword [esi + 0x14]
mov dword [esi + 4], 0x71
jmp 0x100f9b2b
mov edx, dword [eax + 0x24]
neg edx
sbb dl, dl
and edx, 0x10
cmp dword [eax + 0x2c], 0
sete bl
dec ebx
and ebx, 2
add dl, bl
mov ebx, dword [eax + 0x1c]
neg ebx
sbb bl, bl
and ebx, 8
add dl, bl
mov ebx, dword [eax + 0x10]
neg ebx
sbb bl, bl
and ebx, 4
add dl, bl
cmp dword [eax], 0
setne al
add dl, al
mov eax, dword [esi + 8]
mov byte [eax + ecx], dl
mov ecx, dword [esi + 0x1c]
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 8]
mov cl, byte [ecx + 4]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x1c]
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [ecx + 4]
mov edx, dword [esi + 8]
shr ecx, 8
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x1c]
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [ecx + 4]
mov edx, dword [esi + 8]
shr ecx, 0x10
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x1c]
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [ecx + 4]
mov edx, dword [esi + 8]
shr ecx, 0x18
mov byte [edx + eax], cl
mov eax, dword [esi + 0x84]
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
cmp eax, 9
jne 0x100f9a0a
push 2
jmp 0x100f9a1e
cmp dword [esi + 0x88], 2
jge 0x100f9a1c
cmp eax, 2
jl 0x100f9a1c
xor eax, eax
jmp 0x100f9a1f
push 4
pop eax
mov edx, dword [esi + 8]
xor ebx, ebx
mov byte [edx + ecx], al
mov ecx, dword [esi + 0x1c]
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 8]
mov cl, byte [ecx + 0xc]
mov byte [edx + eax], cl
mov eax, dword [esi + 0x1c]
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
cmp dword [eax + 0x10], ebx
je 0x100f9a6b
mov edx, dword [esi + 8]
mov al, byte [eax + 0x14]
mov byte [edx + ecx], al
mov ecx, dword [esi + 0x1c]
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [ecx + 0x14]
mov edx, dword [esi + 8]
shr ecx, 8
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], ebx
je 0x100f9a85
push ecx
push dword [esi + 8]
push dword [edi + 0x30]
call fcn.100fc5e4
add esp, 0xc
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], ebx
mov dword [esi + 4], 0x45
jmp 0x100f9b2b
mov ecx, dword [esi + 0x30]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [esi + 0x88], edx
jge 0x100f9aca
mov eax, dword [esi + 0x84]
cmp eax, edx
jl 0x100f9aca
cmp eax, 6
jge 0x100f9abc
push 1
pop eax
jmp 0x100f9acc
xor ebx, ebx
cmp eax, 6
setne bl
add ebx, edx
mov eax, ebx
jmp 0x100f9acc
xor eax, eax
shl eax, 6
or ecx, eax
cmp dword [esi + 0x6c], 0
je 0x100f9ada
or ecx, 0x20
push 0x1f
mov eax, ecx
xor edx, edx
pop ebx
div ebx
mov dword [esi + 4], 0x71
sub ecx, edx
add ecx, ebx
push ecx
push esi
call fcn.100f9fba
xor ebx, ebx
pop ecx
cmp dword [esi + 0x6c], ebx
pop ecx
je 0x100f9b1d
mov eax, dword [edi + 0x30]
shr eax, 0x10
push eax
push esi
call fcn.100f9fba
mov eax, dword [edi + 0x30]
and eax, 0xffff
push eax
push esi
call fcn.100f9fba
add esp, 0x10
push ebx
push ebx
push ebx
call fcn.100fc9a8
add esp, 0xc
mov dword [edi + 0x30], eax
cmp dword [esi + 4], 0x45
jne 0x100f9bfe
mov ecx, dword [esi + 0x1c]
cmp dword [ecx + 0x10], 0
je 0x100f9bf7
mov eax, dword [esi + 0x14]
mov dword [ebp + 8], eax
mov eax, dword [ecx + 0x14]
and eax, 0xffff
cmp dword [esi + 0x20], eax
jae 0x100f9bbe
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0xc]
jne 0x100f9b93
cmp dword [ecx + 0x2c], 0
je 0x100f9b81
cmp eax, dword [ebp + 8]
jbe 0x100f9b81
sub eax, dword [ebp + 8]
push eax
mov eax, dword [esi + 8]
add eax, dword [ebp + 8]
push eax
push dword [edi + 0x30]
call fcn.100fc5e4
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.100f9fe4
mov eax, dword [esi + 0x14]
pop ecx
cmp eax, dword [esi + 0xc]
mov dword [ebp + 8], eax
je 0x100f9bbe
mov ecx, dword [esi + 0x1c]
mov edx, dword [esi + 0x20]
mov ebx, dword [esi + 8]
mov ecx, dword [ecx + 0x10]
mov cl, byte [ecx + edx]
mov byte [ebx + eax], cl
mov ecx, dword [esi + 0x1c]
inc dword [esi + 0x14]
inc dword [esi + 0x20]
mov edx, dword [ecx + 0x14]
mov eax, dword [esi + 0x20]
and edx, 0xffff
cmp eax, edx
jb 0x100f9b55
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x100f9be8
mov eax, dword [esi + 0x14]
cmp eax, dword [ebp + 8]
jbe 0x100f9be8
sub eax, dword [ebp + 8]
push eax
mov eax, dword [esi + 8]
add eax, dword [ebp + 8]
push eax
push dword [edi + 0x30]
call fcn.100fc5e4
add esp, 0xc
mov dword [edi + 0x30], eax
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
cmp ecx, dword [eax + 0x14]
jne 0x100f9bfe
and dword [esi + 0x20], 0
mov dword [esi + 4], 0x49
cmp dword [esi + 4], 0x49
jne 0x100f9cad
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x1c], 0
je 0x100f9ca6
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0xc]
jne 0x100f9c55
mov ecx, dword [esi + 0x1c]
cmp dword [ecx + 0x2c], 0
je 0x100f9c44
cmp eax, edx
jbe 0x100f9c44
sub eax, edx
push eax
mov eax, dword [esi + 8]
add eax, edx
push eax
push dword [edi + 0x30]
call fcn.100fc5e4
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.100f9fe4
mov eax, dword [esi + 0x14]
pop ecx
cmp eax, dword [esi + 0xc]
mov edx, eax
je 0x100f9c75
mov ebx, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov ebx, dword [ebx + 0x1c]
movzx ebx, byte [ebx + ecx]
inc ecx
mov dword [esi + 0x20], ecx
mov ecx, dword [esi + 8]
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
test ebx, ebx
je 0x100f9c78
jmp 0x100f9c18
push 1
pop ebx
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x100f9c9f
mov eax, dword [esi + 0x14]
cmp eax, edx
jbe 0x100f9c9f
sub eax, edx
push eax
mov eax, dword [esi + 8]
add eax, edx
push eax
push dword [edi + 0x30]
call fcn.100fc5e4
add esp, 0xc
mov dword [edi + 0x30], eax
test ebx, ebx
jne 0x100f9cad
and dword [esi + 0x20], ebx
mov dword [esi + 4], 0x5b
cmp dword [esi + 4], 0x5b
jne 0x100f9d59
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x24], 0
je 0x100f9d52
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0xc]
jne 0x100f9d04
mov ecx, dword [esi + 0x1c]
cmp dword [ecx + 0x2c], 0
je 0x100f9cf3
cmp eax, edx
jbe 0x100f9cf3
sub eax, edx
push eax
mov eax, dword [esi + 8]
add eax, edx
push eax
push dword [edi + 0x30]
call fcn.100fc5e4
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.100f9fe4
mov eax, dword [esi + 0x14]
pop ecx
cmp eax, dword [esi + 0xc]
mov edx, eax
je 0x100f9d24
mov ebx, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov ebx, dword [ebx + 0x24]
movzx ebx, byte [ebx + ecx]
inc ecx
mov dword [esi + 0x20], ecx
mov ecx, dword [esi + 8]
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
test ebx, ebx
je 0x100f9d27
jmp 0x100f9cc7
push 1
pop ebx
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x100f9d4e
mov eax, dword [esi + 0x14]
cmp eax, edx
jbe 0x100f9d4e
sub eax, edx
push eax
mov eax, dword [esi + 8]
add eax, edx
push eax
push dword [edi + 0x30]
call fcn.100fc5e4
add esp, 0xc
mov dword [edi + 0x30], eax
test ebx, ebx
jne 0x100f9d59
mov dword [esi + 4], 0x67
cmp dword [esi + 4], 0x67
jne 0x100f9db9
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x100f9db2
mov eax, dword [esi + 0x14]
inc eax
inc eax
cmp eax, dword [esi + 0xc]
jbe 0x100f9d79
push edi
call fcn.100f9fe4
pop ecx
mov eax, dword [esi + 0x14]
lea ecx, [eax + 2]
cmp ecx, dword [esi + 0xc]
ja 0x100f9db9
mov ecx, dword [esi + 8]
mov dl, byte [edi + 0x30]
mov byte [ecx + eax], dl
inc dword [esi + 0x14]
mov ecx, dword [edi + 0x30]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 8]
shr ecx, 8
mov byte [edx + eax], cl
inc dword [esi + 0x14]
xor eax, eax
push eax
push eax
push eax
call fcn.100fc5e4
add esp, 0xc
mov dword [edi + 0x30], eax
mov dword [esi + 4], 0x71
xor ebx, ebx
cmp dword [esi + 0x14], ebx
je 0x100f9dd1
push edi
call fcn.100f9fe4
cmp dword [edi + 0x10], ebx
pop ecx
jne 0x100f9de3
jmp 0x100f9ea9
cmp dword [edi + 4], ebx
jne 0x100f9de3
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebp - 4]
jg 0x100f9de3
cmp eax, 4
jne 0x100f9df5
mov eax, dword [esi + 4]
mov ebx, 0x29a
cmp eax, ebx
jne 0x100f9e04
cmp dword [edi + 4], 0
je 0x100f9e04
mov eax, dword [0x1016badc]
push 0xfffffffffffffffb
mov dword [edi + 0x18], eax
jmp 0x100f9fb4
xor ecx, ecx
cmp dword [edi + 4], ecx
jne 0x100f9e21
cmp dword [esi + 0x74], ecx
jne 0x100f9e21
cmp dword [ebp + 0xc], ecx
je 0x100f9eaf
cmp eax, ebx
je 0x100f9eaf
mov eax, dword [esi + 0x84]
push dword [ebp + 0xc]
lea eax, [eax + eax*2]
push esi
call dword [eax*4 + 0x101691a0]
pop ecx
cmp eax, 2
pop ecx
je 0x100f9e41
cmp eax, 3
jne 0x100f9e44
mov dword [esi + 4], ebx
test eax, eax
je 0x100f9f9b
cmp eax, 2
je 0x100f9f9b
cmp eax, 1
jne 0x100f9eaf
cmp dword [ebp + 0xc], eax
jne 0x100f9e6a
push esi
call fcn.100fcdb1
pop ecx
xor ebx, ebx
jmp 0x100f9e9d
xor ebx, ebx
push ebx
push ebx
push ebx
push esi
call fcn.100fcd1c
add esp, 0x10
cmp dword [ebp + 0xc], 3
jne 0x100f9e9d
mov eax, dword [esi + 0x4c]
mov ecx, dword [esi + 0x44]
mov word [ecx + eax*2 - 2], bx
mov eax, dword [esi + 0x4c]
lea eax, [eax + eax - 2]
push eax
push ebx
push dword [esi + 0x44]
call fcn.101027c0
add esp, 0xc
push edi
call fcn.100f9fe4
cmp dword [edi + 0x10], ebx
pop ecx
jne 0x100f9eaf
or dword [esi + 0x28], 0xffffffff
jmp 0x100f9eb5
cmp dword [ebp + 0xc], 4
je 0x100f9ebc
xor eax, eax
jmp 0x100f9fb5
mov eax, dword [esi + 0x18]
test eax, eax
jg 0x100f9eca
push 1
jmp 0x100f9fb4
cmp eax, 2
jne 0x100f9f5f
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x14]
mov dl, byte [edi + 0x30]
mov byte [eax + ecx], dl
inc dword [esi + 0x14]
mov ecx, dword [edi + 0x30]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 8]
shr ecx, 8
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov ecx, dword [edi + 0x30]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 8]
shr ecx, 0x10
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov ecx, dword [edi + 0x30]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 8]
shr ecx, 0x18
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov dl, byte [edi + 8]
mov byte [ecx + eax], dl
inc dword [esi + 0x14]
mov ecx, dword [edi + 8]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 8]
shr ecx, 8
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov ecx, dword [edi + 8]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 8]
shr ecx, 0x10
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov ecx, dword [edi + 8]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 8]
shr ecx, 0x18
mov byte [edx + eax], cl
inc dword [esi + 0x14]
jmp 0x100f9f7e
mov eax, dword [edi + 0x30]
shr eax, 0x10
push eax
push esi
call fcn.100f9fba
mov eax, dword [edi + 0x30]
and eax, 0xffff
push eax
push esi
call fcn.100f9fba
add esp, 0x10
push edi
call fcn.100f9fe4
mov eax, dword [esi + 0x18]
pop ecx
test eax, eax
jle 0x100f9f91
neg eax
mov dword [esi + 0x18], eax
xor eax, eax
cmp dword [esi + 0x14], eax
sete al
jmp 0x100f9fb5
cmp dword [edi + 0x10], 0
jne 0x100f9eb5
jmp 0x100f9ea9
mov eax, dword [0x1016bad0]
mov dword [edi + 0x18], eax
push 0xfffffffffffffffe
pop eax
pop edi
pop esi
pop ebx
leave
ret