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

Disassembly:
sub esp, 0xc
push ebx
push ebp
mov ebp, dword [esp + 0x1c]
push esi
push edi
mov edi, dword [esp + 0x20]
push edi
call fcn.6703a24a
pop ecx
test eax, eax
jne 0x6703b363
cmp ebp, 5
ja 0x6703b363
mov esi, dword [edi + 0x1c]
xor ecx, ecx
cmp dword [edi + 0xc], ecx
je 0x6703b35b
cmp dword [edi + 4], ecx
je 0x6703ab4f
cmp dword [edi], ecx
je 0x6703b35b
cmp dword [esi + 4], 0x29a
jne 0x6703ab61
cmp ebp, 4
jne 0x6703b35b
cmp dword [edi + 0x10], ecx
je 0x6703abcf
mov edx, dword [esi + 0x28]
mov dword [esi + 0x28], ebp
cmp dword [esi + 0x14], ecx
je 0x6703ab88
push edi
call fcn.6703a7e0
pop ecx
xor ecx, ecx
cmp dword [edi + 0x10], ecx
je 0x6703b353
mov ebx, dword [esi + 4]
jmp 0x6703abbe
mov ebx, dword [esi + 4]
cmp dword [edi + 4], ecx
jne 0x6703abbe
xor eax, eax
cmp edx, 4
push 9
pop ecx
cmovg eax, ecx
add edx, edx
sub edx, eax
xor ecx, ecx
cmp ebp, 4
push 9
pop eax
cmovg ecx, eax
lea eax, [ebp*2]
sub eax, ecx
cmp eax, edx
jg 0x6703abbc
cmp ebp, 4
jne 0x6703abcf
xor ecx, ecx
cmp ebx, 0x29a
jne 0x6703abde
cmp dword [edi + 4], ecx
je 0x6703ac96
mov eax, dword [str.buffer_error]
mov dword [edi + 0x18], eax
push 0xfffffffffffffffb
jmp 0x6703b365
cmp ebx, 0x2a
jne 0x6703ac96
mov eax, dword [esi + 0x30]
shl eax, 0xc
sub eax, 0x7800
cmp dword [esi + 0x88], 2
jge 0x6703ac28
mov ecx, dword [esi + 0x84]
cmp ecx, 2
jl 0x6703ac28
cmp ecx, 6
jge 0x6703ac12
push 0x40
pop edx
push 0x60
jmp 0x6703ac2c
jne 0x6703ac1e
mov edx, 0x80
lea ecx, [edx + 0x20]
jmp 0x6703ac2d
mov edx, 0xc0
lea ecx, [edx + 0x20]
jmp 0x6703ac2d
xor edx, edx
push 0x20
pop ecx
cmp dword [esi + 0x6c], 0
push 0x1f
cmove ecx, edx
xor edx, edx
or ecx, eax
mov eax, ecx
pop ebx
div ebx
sub ecx, edx
add ecx, ebx
push ecx
push esi
call fcn.6703aa20
cmp dword [esi + 0x6c], 0
pop ecx
pop ecx
je 0x6703ac6b
movzx eax, word [edi + 0x32]
push eax
push esi
call fcn.6703aa20
movzx eax, word [edi + 0x30]
push eax
push esi
call fcn.6703aa20
add esp, 0x10
push 0
push 0
push 0
call fcn.6703906a
mov dword [edi + 0x30], eax
push edi
mov dword [esi + 4], 0x71
call fcn.6703a7e0
xor ecx, ecx
add esp, 0x10
cmp dword [esi + 0x14], ecx
jne 0x6703b353
jmp 0x6703ac99
push 0x1f
pop ebx
mov eax, dword [esi + 4]
cmp eax, 0x39
jne 0x6703aea3
push ecx
push ecx
push ecx
call fcn.670397b7
mov dword [edi + 0x30], eax
add esp, 0xc
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], 0x8b
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], 8
mov edx, dword [esi + 0x14]
mov ebx, dword [esi + 0x1c]
inc edx
mov dword [esi + 0x14], edx
test ebx, ebx
jne 0x6703ad7d
mov eax, dword [esi + 8]
push 9
mov byte [edx + eax], bl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], bl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x84]
inc edx
pop ecx
mov dword [esi + 0x14], edx
cmp eax, ecx
jne 0x6703ad36
mov cl, 2
jmp 0x6703ad48
cmp dword [esi + 0x88], 2
jge 0x6703ad46
mov cl, bl
cmp eax, 2
jge 0x6703ad48
mov cl, 4
mov eax, dword [esi + 8]
push edi
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], 0xa
inc dword [esi + 0x14]
mov dword [esi + 4], 0x71
call fcn.6703a7e0
pop ecx
cmp dword [esi + 0x14], ebx
jne 0x6703b353
mov eax, dword [esi + 4]
jmp 0x6703aea5
cmp dword [ebx + 0x24], 0
push 9
sete cl
dec cl
and cl, 0x10
cmp dword [ebx + 0x2c], 0
sete al
dec al
and al, 2
add cl, al
cmp dword [ebx + 0x1c], 0
sete al
dec al
and al, 8
add cl, al
cmp dword [ebx + 0x10], 0
sete al
dec al
and al, 4
add cl, al
cmp dword [ebx], 0
setne al
add cl, al
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 8]
mov al, byte [eax + 4]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 8]
mov al, byte [eax + 5]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [eax + 6]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [eax + 7]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x84]
inc edx
pop ecx
mov dword [esi + 0x14], edx
cmp eax, ecx
jne 0x6703ae1e
mov cl, 2
jmp 0x6703ae34
cmp dword [esi + 0x88], 2
jge 0x6703ae32
cmp eax, 2
jl 0x6703ae32
xor ebx, ebx
mov cl, bl
jmp 0x6703ae36
mov cl, 4
xor ebx, ebx
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [eax + 0xc]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov dword [esi + 0x14], edx
cmp dword [eax + 0x10], ebx
je 0x6703ae81
mov al, byte [eax + 0x14]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [eax + 0x15]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], ebx
je 0x6703ae98
push edx
push dword [esi + 8]
push dword [edi + 0x30]
call fcn.670397b7
add esp, 0xc
mov dword [edi + 0x30], eax
push 0x45
pop eax
mov dword [esi + 0x20], ebx
mov dword [esi + 4], eax
jmp 0x6703aea5
xor ebx, ebx
cmp eax, 0x45
jne 0x6703afb2
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x10], ebx
je 0x6703afa8
movzx edx, word [eax + 0x14]
sub edx, dword [esi + 0x20]
mov ebx, dword [esi + 0x14]
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x10], edx
lea eax, [ebx + edx]
cmp eax, ecx
jbe 0x6703af5a
mov eax, ebx
mov dword [esp + 0x18], ebx
sub ecx, eax
mov eax, dword [esi + 0x1c]
push ecx
mov dword [esp + 0x18], ecx
mov eax, dword [eax + 0x10]
add eax, dword [esi + 0x20]
push eax
mov eax, dword [esi + 8]
add eax, dword [esp + 0x20]
push eax
call fcn.671a4d7a
mov eax, dword [esi + 0x1c]
add esp, 0xc
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x6703af27
cmp ecx, ebx
jbe 0x6703af27
mov eax, dword [esi + 8]
sub ecx, ebx
push ecx
add eax, ebx
push eax
push dword [edi + 0x30]
call fcn.670397b7
add esp, 0xc
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x14]
add dword [esi + 0x20], eax
push edi
call fcn.6703a7e0
cmp dword [esi + 0x14], 0
pop ecx
jne 0x6703b353
mov edx, dword [esp + 0x10]
xor eax, eax
sub edx, dword [esp + 0x14]
xor ebx, ebx
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], eax
cmp edx, ecx
ja 0x6703aedc
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
push edx
mov eax, dword [eax + 0x10]
add eax, ecx
push eax
mov eax, dword [esi + 8]
add eax, ebx
push eax
call fcn.671a4d7a
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [esi + 0x1c]
add ecx, dword [esi + 0x14]
mov dword [esi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x6703afa3
cmp ecx, ebx
jbe 0x6703afa3
mov eax, dword [esi + 8]
sub ecx, ebx
push ecx
add eax, ebx
push eax
push dword [edi + 0x30]
call fcn.670397b7
add esp, 0xc
mov dword [edi + 0x30], eax
xor ebx, ebx
mov dword [esi + 0x20], ebx
push 0x49
mov dword [esi + 4], 0x49
pop eax
cmp eax, 0x49
jne 0x6703b071
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x1c], ebx
je 0x6703b067
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [esp + 0x10], ecx
cmp ebx, dword [esi + 0xc]
jne 0x6703b011
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x6703aff9
cmp ebx, ecx
jbe 0x6703aff9
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.670397b7
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.6703a7e0
cmp dword [esi + 0x14], 0
pop ecx
jne 0x6703b353
and dword [esp + 0x10], 0
xor ebx, ebx
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [eax + 0x1c]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [esi + 0x14]
inc ebx
mov dword [esi + 0x14], ebx
test dl, dl
je 0x6703b03a
mov ecx, dword [esp + 0x10]
jmp 0x6703afd0
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x6703b062
mov ecx, dword [esp + 0x10]
cmp ebx, ecx
jbe 0x6703b062
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.670397b7
add esp, 0xc
mov dword [edi + 0x30], eax
xor ebx, ebx
mov dword [esi + 0x20], ebx
push 0x5b
mov dword [esi + 4], 0x5b
pop eax
cmp eax, 0x5b
jne 0x6703b12d
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x24], ebx
je 0x6703b123
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [esp + 0x10], ecx
cmp ebx, dword [esi + 0xc]
jne 0x6703b0d0
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x6703b0b8
cmp ebx, ecx
jbe 0x6703b0b8
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.670397b7
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.6703a7e0
cmp dword [esi + 0x14], 0
pop ecx
jne 0x6703b353
and dword [esp + 0x10], 0
xor ebx, ebx
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [eax + 0x24]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [esi + 0x14]
inc ebx
mov dword [esi + 0x14], ebx
test dl, dl
je 0x6703b0f9
mov ecx, dword [esp + 0x10]
jmp 0x6703b08f
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x6703b121
mov ecx, dword [esp + 0x10]
cmp ebx, ecx
jbe 0x6703b121
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.670397b7
add esp, 0xc
mov dword [edi + 0x30], eax
xor ebx, ebx
push 0x67
mov dword [esi + 4], 0x67
pop eax
cmp eax, 0x67
jne 0x6703b197
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], ebx
je 0x6703b180
mov edx, dword [esi + 0x14]
lea eax, [edx + 2]
cmp eax, dword [esi + 0xc]
jbe 0x6703b157
push edi
call fcn.6703a7e0
mov edx, dword [esi + 0x14]
pop ecx
test edx, edx
jne 0x6703b353
mov ecx, dword [esi + 8]
mov al, byte [edi + 0x30]
push ebx
push ebx
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [edi + 0x31]
push ebx
mov byte [edx + ecx], al
inc dword [esi + 0x14]
call fcn.670397b7
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
mov dword [esi + 4], 0x71
call fcn.6703a7e0
pop ecx
cmp dword [esi + 0x14], ebx
jne 0x6703b353
cmp dword [edi + 4], ebx
jne 0x6703b1b6
cmp dword [esi + 0x74], ebx
jne 0x6703b1b6
test ebp, ebp
je 0x6703b281
cmp dword [esi + 4], 0x29a
je 0x6703b281
mov ecx, dword [esi + 0x84]
push ebp
push esi
test ecx, ecx
jne 0x6703b1c9
call fcn.670397e4
jmp 0x6703b1f0
mov eax, dword [esi + 0x88]
cmp eax, 2
jne 0x6703b1db
call fcn.6703a29d
jmp 0x6703b1f0
cmp eax, 3
jne 0x6703b1e7
call fcn.6703a3e8
jmp 0x6703b1f0
imul eax, ecx, 0xc
call dword [eax + 0x671c6ee0]
pop ecx
pop ecx
cmp eax, 2
je 0x6703b1fc
cmp eax, 3
jne 0x6703b203
mov dword [esi + 4], 0x29a
test eax, eax
je 0x6703b34e
cmp eax, 2
je 0x6703b34e
cmp eax, 1
jne 0x6703b281
cmp ebp, eax
jne 0x6703b226
push esi
call fcn.67041bb0
pop ecx
jmp 0x6703b271
cmp ebp, 5
je 0x6703b271
push ebx
push ebx
push ebx
push esi
call fcn.67041efa
add esp, 0x10
cmp ebp, 3
jne 0x6703b271
mov eax, dword [esi + 0x44]
xor edx, edx
mov ecx, dword [esi + 0x4c]
mov word [eax + ecx*2 - 2], dx
mov eax, dword [esi + 0x4c]
lea eax, [eax*2 - 2]
push eax
push ebx
push dword [esi + 0x44]
call fcn.671a4d9e
add esp, 0xc
cmp dword [esi + 0x74], ebx
jne 0x6703b271
mov dword [esi + 0x6c], ebx
mov dword [esi + 0x5c], ebx
mov dword [esi + 0x16b4], ebx
push edi
call fcn.6703a7e0
pop ecx
cmp dword [edi + 0x10], ebx
je 0x6703b353
cmp ebp, 4
jne 0x6703b357
cmp dword [esi + 0x18], 0
jg 0x6703b298
xor eax, eax
inc eax
jmp 0x6703b366
cmp dword [esi + 0x18], 2
jne 0x6703b318
mov edx, dword [esi + 0x14]
mov al, byte [edi + 0x30]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov al, byte [edi + 0x31]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov al, byte [edi + 0x32]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov al, byte [edi + 0x33]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov al, byte [edi + 8]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [edi + 9]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [edi + 0xa]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [edi + 0xb]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
jmp 0x6703b331
movzx eax, word [edi + 0x32]
push eax
push esi
call fcn.6703aa20
movzx eax, word [edi + 0x30]
push eax
push esi
call fcn.6703aa20
add esp, 0x10
push edi
call fcn.6703a7e0
mov eax, dword [esi + 0x18]
pop ecx
test eax, eax
jle 0x6703b344
neg eax
mov dword [esi + 0x18], eax
xor eax, eax
cmp dword [esi + 0x14], ebx
sete al
jmp 0x6703b366
cmp dword [edi + 0x10], ebx
jne 0x6703b357
or dword [esi + 0x28], 0xffffffff
xor eax, eax
jmp 0x6703b366
mov eax, dword [str.stream_error]
mov dword [edi + 0x18], eax
push 0xfffffffffffffffe
pop eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret