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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x60
mov edx, dword [ebp + 8]
mov eax, dword [0x7a9040]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], 0xffffffff
mov esi, 0xfffffffe
test edx, edx
je 0x5c33a5
cmp dword [edx + 0x20], 0
je 0x5c33a5
cmp dword [edx + 0x24], 0
je 0x5c33a5
mov ebx, dword [edx + 0x1c]
test ebx, ebx
je 0x5c33a5
cmp dword [ebx], edx
jne 0x5c33a5
mov eax, dword [ebx + 4]
lea ecx, [eax - 0x3f34]
cmp ecx, 0x1f
ja 0x5c33a5
mov ecx, dword [edx + 0xc]
test ecx, ecx
je 0x5c33a5
mov edi, edx
mov edx, dword [edx]
mov dword [ebp - 0x24], edx
test edx, edx
je 0x5c4417
mov dword [ebp - 0x30], ecx
cmp eax, 0x3f3f
je 0x5c448c
mov edx, dword [edi + 4]
mov esi, dword [edi + 0x10]
mov edi, dword [ebx + 0x3c]
mov dword [ebp - 0x1c], edi
mov edi, dword [ebx + 0x40]
mov dword [ebp - 0x18], edi
lea edi, [ebx + 0x74]
mov dword [ebp - 0x50], edi
lea edi, [ebx + 0x534]
mov dword [ebp - 0x5c], edi
lea edi, [ebx + 0x70]
mov dword [ebp - 0x54], edi
lea edi, [ebx + 0x58]
mov dword [ebp - 0x58], edi
lea ecx, [ebx + 0x2f4]
lea edi, [ebx + 0x5c]
mov dword [ebp - 0x64], edi
mov edi, ecx
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffffb
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x20], edx
mov edx, dword [ebp + 8]
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x34], edi
jmp 0x5c2cf0
mov eax, dword [ebx + 0xc]
test eax, eax
jne 0x5c3b6c
mov dword [ebx + 4], 0x3f40
jmp 0x5c2cb2
mov ecx, dword [ebx + 0x2c]
sub ecx, edx
add ecx, dword [ebx + 0x38]
jmp 0x5c2be7
cmp eax, dword [ebx + 0x30]
ja 0x5c43c5
mov ecx, dword [ebx + 0x34]
mov edx, eax
sub edx, ecx
ja 0x5c2bc4
sub ecx, eax
add ecx, dword [ebx + 0x38]
mov edx, eax
mov eax, dword [ebx + 0x44]
cmp edx, eax
cmovb eax, edx
cmp eax, esi
cmovae eax, esi
cmp esi, 0xf
jle 0x5c38d4
lea edx, [eax - 1]
mov esi, edx
and esi, 0xf
movdqu xmm0, xmmword [ecx]
mov edi, dword [ebp - 0x30]
movdqu xmmword [edi], xmm0
add edi, esi
inc edi
mov dword [ebp - 0x30], edi
cmp edx, 0x10
jb 0x5c30b0
inc esi
shr edx, 4
add ecx, esi
mov esi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x34]
movdqu xmm0, xmmword [ecx]
movdqu xmmword [esi], xmm0
add esi, 0x10
add ecx, 0x10
dec edx
jne 0x5c2c2b
mov dword [ebp - 0x30], esi
mov esi, dword [ebp - 0x28]
mov edx, dword [ebp + 8]
sub esi, eax
sub dword [ebx + 0x44], eax
jne 0x5c2cb2
mov dword [ebx + 4], 0x3f48
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov ecx, dword [ebp - 0x30]
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], esi
mov ecx, dword [ebp - 0x24]
mov dword [edx], ecx
mov ecx, dword [ebp - 0x20]
mov dword [edx + 4], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebx + 0x3c], ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebx + 0x40], ecx
push eax
push edx
mov esi, edx
call fcn.005c2230
mov edx, esi
add esp, 8
mov eax, dword [esi + 0xc]
mov dword [ebp - 0x30], eax
mov esi, dword [esi + 0x10]
mov eax, dword [edx]
mov dword [ebp - 0x24], eax
mov eax, dword [edx + 4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebx + 0x3c]
mov dword [ebp - 0x1c], eax
cmp dword [ebx + 4], 0x3f3f
mov eax, dword [ebx + 0x40]
mov dword [ebp - 0x18], eax
je 0x5c2cb7
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov dword [ebx + 0x2348], 0xffffffff
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
test esi, esi
je 0x5c31d1
movzx eax, byte [ebx + 0x44]
mov ecx, dword [ebp - 0x30]
mov byte [ecx], al
inc ecx
mov dword [ebp - 0x30], ecx
dec esi
mov dword [ebx + 4], 0x3f48
mov eax, dword [ebx + 4]
add eax, 0xffffc0cc
cmp eax, 0x1e
ja case.default.0x5c2d01
mov dword [ebp - 0x28], esi
jmp dword [eax*4 + 0x73b034]
mov eax, dword [ebp - 0x48]
cmp dword [ebp - 0x20], 6
jb 0x5c2d1d
cmp esi, 0x102
jae 0x5c2c5b
mov dword [ebx + 0x2348], 0
movzx ecx, byte [ebx + 0x58]
mov edi, 0xffffffff
shl edi, cl
mov eax, dword [ebx + 0x50]
not edi
mov ecx, dword [ebp - 0x1c]
and ecx, edi
mov dword [ebp - 0x40], eax
movzx ebx, byte [eax + ecx*4 + 1]
movzx eax, bl
mov edx, dword [ebp - 0x18]
cmp edx, eax
jae 0x5c2df3
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x38], eax
mov esi, dword [ebp - 0x24]
sub dword [ebp - 0x38], 1
jb 0x5c313d
movzx eax, byte [esi]
inc esi
mov ecx, edx
shl eax, cl
mov ecx, dword [ebp - 0x1c]
add ecx, eax
add edx, 8
mov dword [ebp - 0x1c], ecx
mov eax, ecx
and eax, edi
mov ebx, dword [ebp - 0x40]
lea ecx, [ebx + eax*4]
movzx ebx, byte [ebx + eax*4 + 1]
movzx eax, bl
cmp edx, eax
jb 0x5c2d5b
movzx edi, word [ecx + 2]
mov ch, byte [ecx]
mov cl, ch
dec cl
cmp cl, 0xe
jbe 0x5c39e3
xor eax, eax
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x38]
mov dword [ebp - 0x20], esi
movzx esi, bl
sub edx, esi
mov dword [ebp - 0x18], edx
add eax, esi
mov edx, dword [ebp - 0x2c]
mov dword [edx + 0x2348], eax
movzx eax, di
mov dword [edx + 0x44], eax
mov cl, bl
mov eax, dword [ebp - 0x1c]
shr eax, cl
test ch, ch
mov dword [ebp - 0x1c], eax
jne 0x5c2e80
mov dword [edx + 4], 0x3f4d
mov edi, dword [ebp + 8]
mov ebx, edx
mov edx, edi
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 0x34]
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov esi, dword [ebp - 0x40]
lea ecx, [esi + ecx*4]
mov esi, dword [ebp - 0x24]
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x38], edi
jmp 0x5c2d8e
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x1c], ebx
sub edi, 1
jb 0x5c313d
movzx ebx, byte [esi]
mov ecx, edx
shl ebx, cl
mov ecx, dword [ebp - 0x1c]
add ecx, ebx
mov ebx, ecx
inc esi
add edx, 8
cmp edx, eax
jae 0x5c2e41
jmp 0x5c2e0d
mov edx, dword [ebp - 0x18]
cmp edx, eax
jb 0x5c2e04
mov esi, dword [ebp - 0x24]
mov edi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x20], esi
xor esi, esi
dec esi
mov ecx, eax
shl esi, cl
not esi
and esi, ebx
mov edi, ebx
mov ebx, dword [ebp - 0x2c]
add esi, dword [ebx + 0x44]
shr edi, cl
mov dword [ebp - 0x1c], edi
mov dword [ebx + 0x44], esi
add dword [ebx + 0x2348], eax
sub edx, eax
mov eax, dword [ebp - 0x20]
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x18], edx
jmp 0x5c2eb9
movzx eax, ch
test al, 0x20
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 0x28]
jne 0x5c4024
test al, 0x40
mov ebx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x34]
jne 0x5c4357
and eax, 0xf
mov dword [ebx + 0x4c], eax
mov dword [ebx + 4], 0x3f49
test eax, eax
jne 0x5c2e31
mov esi, dword [ebx + 0x44]
mov eax, dword [ebp - 0x24]
mov edi, dword [ebp - 0x20]
mov dword [ebx + 0x234c], esi
mov dword [ebx + 4], 0x3f4a
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x3c], edi
movzx ecx, byte [ebx + 0x5c]
mov eax, 0xffffffff
shl eax, cl
mov ebx, dword [ebx + 0x54]
not eax
mov esi, dword [ebp - 0x1c]
mov ecx, esi
and ecx, eax
movzx edx, byte [ebx + ecx*4 + 1]
mov dword [ebp - 0x40], edx
movzx edx, dl
mov edi, dword [ebp - 0x18]
cmp edi, edx
jae 0x5c2f4c
mov dword [ebp - 0x38], edi
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x24], ecx
sub dword [ebp - 0x20], 1
jb 0x5c4043
mov ecx, dword [ebp - 0x24]
movzx edx, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov edi, ebx
mov ebx, dword [ebp - 0x38]
mov ecx, ebx
shl edx, cl
add esi, edx
add ebx, 8
mov ecx, esi
and ecx, eax
lea ecx, [edi + ecx*4]
mov dl, byte [ecx + 1]
mov dword [ebp - 0x40], edx
movzx edx, dl
mov dword [ebp - 0x38], ebx
cmp ebx, edx
mov ebx, edi
jae 0x5c2f5e
jmp 0x5c2f04
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x18]
jmp 0x5c302e
lea ecx, [ebx + ecx*4]
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x38], edi
movzx edi, word [ecx + 2]
movzx eax, byte [ecx]
cmp eax, 0x10
jb 0x5c407d
mov word [ebp - 0x44], di
mov edi, esi
mov ebx, dword [ebp - 0x2c]
mov edx, dword [ebx + 0x2348]
mov ecx, dword [ebp - 0x40]
movzx esi, cl
add edx, esi
mov dword [ebx + 0x2348], edx
shr edi, cl
mov dword [ebp - 0x1c], edi
mov ecx, dword [ebp - 0x38]
sub ecx, esi
mov dword [ebp - 0x18], ecx
movzx eax, al
test al, 0x40
jne 0x5c438b
movzx ecx, word [ebp - 0x44]
mov dword [ebx + 0x48], ecx
and eax, 0xf
mov dword [ebx + 0x4c], eax
mov dword [ebx + 4], 0x3f4b
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 0x34]
test eax, eax
je 0x5c30a8
mov edx, dword [ebp - 0x18]
cmp edx, eax
jae 0x5c418e
mov esi, dword [ebp - 0x20]
mov edi, dword [ebp - 0x24]
sub esi, 1
jb 0x5c313d
movzx ebx, byte [edi]
mov ecx, edx
shl ebx, cl
add dword [ebp - 0x1c], ebx
inc edi
add edx, 8
cmp edx, eax
jb 0x5c2fd6
mov dword [ebp - 0x20], esi
mov ebx, 0xffffffff
mov ecx, eax
shl ebx, cl
not ebx
mov esi, dword [ebp - 0x1c]
and ebx, esi
mov ecx, dword [ebp - 0x2c]
add dword [ecx + 0x48], ebx
mov ebx, ecx
mov ecx, eax
shr esi, cl
mov dword [ebp - 0x1c], esi
add dword [ebx + 0x2348], eax
sub edx, eax
mov dword [ebp - 0x24], edi
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 0x34]
mov dword [ebx + 4], 0x3f4c
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x18], edx
test esi, esi
je 0x5c323e
sub ecx, esi
mov edx, dword [ebx + 0x48]
mov eax, edx
sub eax, ecx
ja 0x5c2bce
mov eax, dword [ebx + 0x44]
cmp eax, esi
cmovae eax, esi
cmp esi, 0x2f
jle 0x5c30bb
cmp edx, 0xf
ja 0x5c3062
cmp edx, eax
jb 0x5c30e5
mov esi, dword [ebp - 0x30]
sub esi, edx
lea ecx, [eax - 1]
movdqu xmm0, xmmword [esi]
mov esi, ecx
and esi, 0xf
mov edi, dword [ebp - 0x30]
movdqu xmmword [edi], xmm0
mov edi, dword [ebp - 0x30]
add edi, esi
inc edi
mov dword [ebp - 0x30], edi
mov esi, dword [ebp - 0x30]
cmp ecx, 0x10
jb 0x5c30b0
neg edx
shr ecx, 4
mov edi, dword [ebp - 0x34]
movdqu xmm0, xmmword [esi + edx]
movdqu xmmword [esi], xmm0
add esi, 0x10
dec ecx
je 0x5c2c3c
jmp 0x5c3093
mov edx, dword [ebp - 0x18]
jmp 0x5c3024
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 0x34]
jmp 0x5c2c42
test eax, eax
mov esi, dword [ebp - 0x30]
je 0x5c4187
neg edx
mov ecx, eax
nop word [eax + eax]
movzx ebx, byte [esi + edx]
mov byte [esi], bl
inc esi
dec ecx
jne 0x5c30d0
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x2c]
jmp 0x5c2c3f
lea ecx, [eax - 1]
and ecx, 0xf
lea esi, [ecx + 1]
cmp edx, 1
jne 0x5c3cb8
mov edi, dword [ebp - 0x30]
movzx edx, byte [edi - 1]
movd xmm0, edx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqu xmmword [edi], xmm0
add edi, esi
mov dword [ebp - 0x30], edi
cmp eax, esi
je 0x5c30b0
sub ecx, eax
inc ecx
mov esi, dword [ebp - 0x28]
mov edx, dword [ebp - 0x30]
mov edi, dword [ebp - 0x34]
movdqu xmmword [edx], xmm0
add edx, 0x10
add ecx, 0x10
jne 0x5c3129
mov dword [ebp - 0x30], edx
jmp 0x5c2c42
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x18]
lea ecx, [ecx + eax*8]
mov dword [ebp - 0x18], ecx
add dword [ebp - 0x24], eax
mov dword [ebp - 0x20], 0
mov edx, dword [ebp + 8]
mov ebx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x28]
jmp 0x5c3243
cmp dword [ebx + 0x14], 0
je 0x5c3189
jmp 0x5c3e06
xor eax, eax
cmp dword [ebx + 0xc], 0
jne 0x5c3a95
mov ecx, dword [ebp - 0x1c]
mov dword [ebx + 4], 0x3f4f
mov dword [ebp - 0x1c], ecx
test eax, eax
jne 0x5c3161
mov dword [ebx + 4], 0x3f50
xor eax, eax
inc eax
mov dword [ebp - 0x4c], eax
jmp 0x5c3243
mov cl, byte [esi + 0x28]
xor esi, esi
inc esi
shl esi, cl
add esi, 0x10
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
mov edi, dword [eax + 0x28]
call dword [0x7a29f4]
push 1
push esi
mov esi, dword [ebp - 0x20]
push edi
call ecx
add esp, 0xc
mov dword [esi + 0x38], eax
test eax, eax
jne 0x5c3287
jmp 0x5c4303
xor esi, esi
jmp 0x5c3243
cmp dword [ebp - 0x48], ebx
je 0x5c32e7
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 4]
cmp eax, 0x3f50
jg 0x5c32e7
cmp eax, 0x3f4e
setge al
cmp dword [ebp + 0xc], 4
sete cl
test cl, al
je 0x5c3270
jmp 0x5c32e7
sub edx, ebx
push ebx
push edx
push eax
call fcn.00654250
add esp, 0xc
mov dword [esi + 0x34], 0
mov eax, dword [esi + 0x2c]
mov dword [esi + 0x30], eax
mov edx, dword [ebp + 8]
jmp 0x5c32e7
mov cl, byte [esi + 0x28]
xor ebx, ebx
inc ebx
shl ebx, cl
mov dword [esi + 0x2c], ebx
xor ecx, ecx
mov dword [esi + 0x34], ecx
mov dword [esi + 0x30], ecx
jmp 0x5c3293
xor esi, esi
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x30]
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], esi
mov eax, dword [ebp - 0x24]
mov dword [edx], eax
mov eax, dword [ebp - 0x20]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebx + 0x3c], eax
mov eax, dword [ebp - 0x18]
mov dword [ebx + 0x40], eax
cmp dword [ebx + 0x2c], 0
mov ebx, dword [edx + 0x10]
je 0x5c31d5
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x1c], eax
mov esi, dword [edx + 0x1c]
mov eax, dword [esi + 0x38]
test eax, eax
mov dword [ebp - 0x20], esi
je 0x5c319b
mov edi, dword [ebp - 0x48]
sub edi, ebx
mov ebx, dword [esi + 0x2c]
test ebx, ebx
je 0x5c3229
cmp ebx, edi
mov edx, dword [ebp - 0x1c]
jbe 0x5c3207
mov ecx, dword [esi + 0x34]
sub ebx, ecx
cmp ebx, edi
mov esi, edi
cmovb esi, ebx
add eax, ecx
mov ecx, edx
sub ecx, edi
push esi
push ecx
push eax
call fcn.00654250
add esp, 0xc
cmp ebx, edi
jb 0x5c3b4d
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebx + 0x34]
add eax, esi
mov ecx, dword [ebx + 0x2c]
xor edx, edx
cmp eax, ecx
cmovne edx, eax
mov eax, dword [ebx + 0x30]
mov dword [ebx + 0x34], edx
cmp eax, ecx
mov edx, dword [ebp + 8]
jae 0x5c32e7
add eax, esi
mov dword [ebx + 0x30], eax
mov ecx, edx
mov edx, dword [edx + 4]
mov esi, dword [ecx + 0x10]
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x1c], edx
sub eax, edx
add dword [ecx + 8], eax
mov edi, dword [ebp - 0x48]
mov eax, edi
sub eax, esi
add dword [ecx + 0x14], eax
mov ebx, dword [ebp - 0x2c]
add dword [ebx + 0x20], eax
test byte [ebx + 0xc], 4
je 0x5c3340
cmp edi, esi
je 0x5c3340
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0xc]
sub ecx, eax
cmp dword [ebx + 0x14], 0
mov edx, dword [ebx + 0x1c]
jne 0x5c447f
push eax
push ecx
push edx
call fcn.005f03f0
add esp, 0xc
mov dword [ebx + 0x1c], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
mov edi, dword [ebp - 0x48]
xor eax, eax
cmp dword [ebx + 8], 0
setne al
shl eax, 6
add eax, dword [ebx + 0x40]
mov edx, dword [ebx + 4]
xor ecx, ecx
cmp edx, 0x3f3f
sete cl
shl ecx, 7
cmp edx, 0x3f47
sete bl
cmp edx, 0x3f42
sete dl
or dl, bl
movzx edx, dl
shl edx, 8
add edx, ecx
add edx, eax
mov ebx, dword [ebp - 0x60]
xor ebx, dword [ebp - 0x1c]
xor edi, esi
mov esi, dword [ebp - 0x4c]
test esi, esi
mov eax, 0xfffffffb
cmovne eax, esi
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x2c], edx
or edi, ebx
cmove esi, eax
cmp dword [ebp + 0xc], 4
cmove esi, eax
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00650d60
mov eax, esi
add esp, 0x60
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [ebp - 0x18]
cmp eax, 0xd
ja 0x5c33e8
mov dword [ebp - 0x18], eax
sub dword [ebp - 0x20], 1
jb 0x5c43b9
mov ecx, dword [ebp - 0x24]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x1c], eax
lea eax, [ecx + 8]
cmp ecx, 6
jb 0x5c33c1
mov esi, dword [ebp - 0x1c]
mov edx, esi
and edx, 0x1f
mov edi, eax
lea eax, [edx + 0x101]
mov dword [ebx + 0x64], eax
mov ecx, esi
shr ecx, 5
and ecx, 0x1f
lea eax, [ecx + 1]
mov dword [ebx + 0x68], eax
mov eax, edi
mov edi, esi
shr edi, 0xa
and edi, 0xf
add edi, 4
mov dword [ebp - 0x38], edi
mov dword [ebx + 0x60], edi
shr esi, 0xe
mov dword [ebp - 0x1c], esi
add eax, 0xfffffff2
cmp edx, 0x1d
ja 0x5c437c
cmp ecx, 0x1e
jae 0x5c437c
mov dword [ebx + 0x6c], 0
mov dword [ebx + 4], 0x3f45
xor ecx, ecx
mov edx, ecx
jmp 0x5c347c
mov edi, dword [ebp - 0x1c]
mov esi, edi
and esi, 7
lea ecx, [edx + 1]
mov dword [ebx + 0x6c], ecx
movzx edx, word [edx + edx + 0x73a610]
mov word [ebx + edx*2 + 0x74], si
shr edi, 3
mov dword [ebp - 0x1c], edi
add eax, 0xfffffffd
mov edx, ecx
cmp ecx, dword [ebp - 0x38]
mov esi, dword [ebp - 0x54]
mov edi, dword [ebp - 0x34]
jae 0x5c34b0
cmp eax, 2
ja 0x5c344b
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x5c406e
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x20], ecx
movzx esi, byte [eax]
mov ecx, dword [ebp - 0x18]
shl esi, cl
mov edi, dword [ebp - 0x1c]
add edi, esi
or ecx, 8
dec dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x24], eax
mov eax, ecx
jmp 0x5c344e
mov dword [ebp - 0x18], eax
cmp ecx, 0x12
mov edx, dword [ebp - 0x50]
ja 0x5c34d2
movzx eax, word [ecx + ecx + 0x73a610]
inc ecx
mov word [edx + eax*2], 0
cmp ecx, 0x13
jne 0x5c34bb
mov dword [ebx + 0x6c], ecx
mov eax, dword [ebp - 0x5c]
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x50], eax
mov dword [ebx + 0x58], 7
push edi
push dword [ebp - 0x58]
push esi
push 0x13
push edx
push 0
call fcn.005ee360
add esp, 0x18
test eax, eax
jne 0x5c436d
mov dword [ebx + 0x6c], 0
mov dword [ebx + 4], 0x3f46
xor ecx, ecx
mov dword [ebp - 0x4c], 0
mov eax, dword [ebx + 0x64]
mov edi, dword [ebx + 0x68]
add edi, eax
cmp ecx, edi
jb 0x5c36d4
jmp 0x5c3756
sub eax, 1
mov dword [ebp - 0x3c], eax
jb 0x5c41e4
mov eax, dword [ebp - 0x38]
movzx ebx, byte [eax]
shl ebx, cl
add dword [ebp - 0x1c], ebx
inc eax
mov dword [ebp - 0x38], eax
add ecx, 8
cmp ecx, esi
mov eax, dword [ebp - 0x3c]
jae 0x5c35b6
jmp 0x5c3528
lea esi, [edx + 7]
mov ecx, dword [ebp - 0x40]
cmp ecx, esi
jae 0x5c3584
mov dword [ebp - 0x20], esi
sub eax, 1
mov dword [ebp - 0x3c], eax
jb 0x5c41e4
mov eax, dword [ebp - 0x38]
movzx ebx, byte [eax]
shl ebx, cl
add dword [ebp - 0x1c], ebx
inc eax
mov dword [ebp - 0x38], eax
add ecx, 8
mov esi, dword [ebp - 0x20]
cmp ecx, esi
mov eax, dword [ebp - 0x3c]
jb 0x5c3559
mov dword [ebp - 0x3c], eax
mov eax, ecx
mov ecx, edx
mov esi, dword [ebp - 0x1c]
shr esi, cl
mov ecx, esi
and ecx, 0x7f
add ecx, 0xb
shr esi, 7
mov dword [ebp - 0x1c], esi
sub eax, edx
add eax, 0xfffffff9
jmp 0x5c3649
lea esi, [edx + 2]
mov ecx, dword [ebp - 0x40]
cmp ecx, esi
jb 0x5c3528
mov dword [ebp - 0x3c], eax
mov eax, ecx
mov ecx, edx
mov esi, dword [ebp - 0x1c]
shr esi, cl
sub eax, edx
mov ebx, dword [ebp - 0x44]
test ebx, ebx
je 0x5c44f7
mov ecx, dword [ebp - 0x50]
movzx edx, word [ecx + ebx*2 - 2]
mov ecx, esi
and ecx, 3
add ecx, 3
shr esi, 2
mov dword [ebp - 0x1c], esi
add eax, 0xfffffffe
mov dword [ebp - 0x18], eax
jmp 0x5c3651
cmp ecx, 0x10
je 0x5c35a8
cmp ecx, 0x11
jne 0x5c354f
lea esi, [edx + 3]
mov ecx, dword [ebp - 0x40]
cmp ecx, esi
jae 0x5c362a
sub eax, 1
mov dword [ebp - 0x3c], eax
jb 0x5c41e4
mov eax, dword [ebp - 0x38]
movzx ebx, byte [eax]
shl ebx, cl
add dword [ebp - 0x1c], ebx
inc eax
mov dword [ebp - 0x38], eax
add ecx, 8
cmp ecx, esi
mov eax, dword [ebp - 0x3c]
jb 0x5c3605
mov dword [ebp - 0x3c], eax
mov eax, ecx
mov ecx, edx
mov esi, dword [ebp - 0x1c]
shr esi, cl
mov ecx, esi
and ecx, 7
add ecx, 3
shr esi, 3
mov dword [ebp - 0x1c], esi
sub eax, edx
add eax, 0xfffffffd
xor edx, edx
mov dword [ebp - 0x18], eax
mov ebx, dword [ebp - 0x44]
add ebx, ecx
cmp ebx, edi
mov ebx, dword [ebp - 0x2c]
ja 0x5c4443
nop
mov eax, dword [ebx + 0x6c]
lea esi, [eax + 1]
mov dword [ebx + 0x6c], esi
mov word [ebx + eax*2 + 0x74], dx
dec ecx
jne 0x5c3660
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x20], eax
jmp 0x5c36c5
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x20]
mov dword [ebp - 0x40], eax
mov eax, ebx
movzx ecx, word [esi + ecx*4 + 2]
cmp ecx, 0xf
ja 0x5c35ed
mov edi, dword [ebp - 0x44]
lea esi, [edi + 1]
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x6c], esi
mov word [ebx + edi*2 + 0x74], cx
mov ecx, edx
shr dword [ebp - 0x1c], cl
mov esi, eax
mov eax, dword [ebp - 0x40]
sub eax, edx
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x18], eax
mov eax, dword [ebx + 0x64]
mov ecx, dword [ebx + 0x6c]
mov edi, dword [ebx + 0x68]
add edi, eax
cmp ecx, edi
jae 0x5c3749
mov dword [ebp - 0x44], ecx
mov esi, dword [ebx + 0x50]
movzx ecx, byte [ebx + 0x58]
mov ebx, 0xffffffff
shl ebx, cl
not ebx
mov ecx, dword [ebp - 0x1c]
and ecx, ebx
movzx edx, byte [esi + ecx*4 + 1]
mov eax, dword [ebp - 0x18]
cmp eax, edx
jae 0x5c3680
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x38], ecx
sub eax, 1
jb 0x5c313d
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x6c], edi
mov edi, dword [ebp - 0x38]
movzx edx, byte [edi]
mov eax, dword [ebp - 0x40]
mov ecx, eax
shl edx, cl
inc edi
mov dword [ebp - 0x38], edi
mov edi, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x1c]
add ecx, edx
add eax, 8
mov dword [ebp - 0x1c], ecx
and ecx, ebx
movzx edx, byte [esi + ecx*4 + 1]
mov dword [ebp - 0x40], eax
cmp eax, edx
mov eax, dword [ebp - 0x3c]
jae 0x5c368e
jmp 0x5c3704
cmp dword [ebx + 4], 0x3f51
je 0x5c44a8
cmp word [ebx + 0x274], 0
mov ecx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x54]
je 0x5c43a1
mov edx, dword [ebp - 0x5c]
mov dword [ebx + 0x70], edx
mov dword [ebx + 0x50], edx
mov dword [ebx + 0x58], 0xa
mov edi, dword [ebp - 0x34]
push edi
push dword [ebp - 0x58]
push esi
push eax
push ecx
push 1
call fcn.005ee360
add esp, 0x18
test eax, eax
mov ecx, esi
mov esi, dword [ebp - 0x28]
jne 0x5c4522
mov eax, dword [ebx + 0x70]
mov dword [ebx + 0x54], eax
mov dword [ebx + 0x5c], 9
mov eax, dword [ebx + 0x64]
mov edx, dword [ebp - 0x50]
lea eax, [edx + eax*2]
push edi
push dword [ebp - 0x64]
push ecx
push dword [ebx + 0x68]
push eax
push 2
call fcn.005ee360
add esp, 0x18
test eax, eax
jne 0x5c453e
mov dword [ebp - 0x4c], 0
mov dword [ebx + 4], 0x3f47
cmp dword [ebp + 0xc], 6
mov eax, dword [ebp - 0x48]
mov edx, dword [ebp + 8]
je 0x5c3243
mov dword [ebx + 4], 0x3f48
jmp 0x5c2d0b
mov eax, dword [ebp - 0x48]
jmp 0x5c37ea
mov ecx, eax
and cl, 7
shr dword [ebp - 0x1c], cl
and eax, 0xfffffff8
mov dword [ebp - 0x18], eax
mov dword [ebx + 4], 0x3f4e
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov ecx, dword [ebp - 0x1c]
jmp 0x5c3864
cmp dword [ebp - 0x68], 2
jb 0x5c3243
cmp dword [ebx + 8], 0
mov eax, dword [ebp - 0x18]
jne 0x5c37fb
cmp eax, 2
ja 0x5c3818
mov edi, dword [ebp - 0x20]
test edi, edi
je 0x5c43ad
mov edx, dword [ebp - 0x24]
movzx eax, byte [edx]
mov ecx, dword [ebp - 0x18]
shl eax, cl
mov ecx, dword [ebp - 0x1c]
add ecx, eax
mov eax, dword [ebp - 0x18]
or eax, 8
dec edi
mov dword [ebp - 0x20], edi
inc edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x18], eax
mov edi, dword [ebp - 0x34]
mov eax, ecx
and eax, 1
mov dword [ebx + 8], eax
mov edx, ecx
shr ecx, 1
and ecx, 3
mov eax, 0x3f41
jmp dword [ecx*4 + 0x73b0b0]
test al, 8
je 0x5c38ec
movq xmm0, qword [ecx]
mov edx, dword [ebp - 0x30]
movq qword [edx], xmm0
add edx, 8
mov dword [ebp - 0x30], edx
add ecx, 8
test al, 4
je 0x5c3903
mov edx, dword [ecx]
mov edi, dword [ebp - 0x30]
mov dword [edi], edx
add edi, 4
mov dword [ebp - 0x30], edi
mov edi, dword [ebp - 0x34]
add ecx, 4
mov edx, dword [ebp + 8]
test al, 2
jne 0x5c391f
test al, 1
je 0x5c2c45
mov cl, byte [ecx]
mov edx, dword [ebp - 0x30]
mov byte [edx], cl
inc edx
jmp 0x5c3135
movzx edx, word [ecx]
mov edi, dword [ebp - 0x30]
mov word [edi], dx
mov edx, dword [ebp + 8]
add edi, 2
mov dword [ebp - 0x30], edi
mov edi, dword [ebp - 0x34]
add ecx, 2
jmp 0x5c390a
mov eax, dword [ebp - 0x18]
mov ecx, eax
and cl, 7
shr dword [ebp - 0x1c], cl
and eax, 0xfffffff8
mov dword [ebp - 0x18], eax
cmp eax, 0x1f
ja 0x5c4178
sub dword [ebp - 0x20], 1
jb 0x5c43b9
mov ecx, dword [ebp - 0x24]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x1c], eax
lea eax, [ecx + 8]
cmp ecx, 0x18
mov dword [ebp - 0x18], eax
jb 0x5c3953
mov edi, edx
mov edx, dword [ebp - 0x1c]
movzx ecx, dx
not edx
shr edx, 0x10
cmp ecx, edx
jne 0x5c471e
mov dword [ebp - 0x1c], 0
mov dword [ebx + 0x44], ecx
mov dword [ebx + 4], 0x3f42
mov eax, 0
cmp dword [ebp + 0xc], 6
mov edx, edi
je 0x5c43eb
mov dword [ebx + 4], 0x3f43
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x18], eax
mov esi, dword [ebx + 0x44]
test esi, esi
jne 0x5c4199
mov dword [ebx + 4], 0x3f3f
mov esi, dword [ebp - 0x28]
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov eax, dword [ebx + 0x4c]
jmp 0x5c2fbd
movzx ecx, ch
add ecx, eax
xor ebx, ebx
dec ebx
shl ebx, cl
movzx ecx, di
mov dword [ebp - 0x20], ecx
not ebx
mov edi, dword [ebp - 0x1c]
mov dword [ebp - 0x44], ebx
and edi, ebx
mov ecx, eax
shr edi, cl
mov ecx, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x20]
lea ecx, [ecx + ebx*4]
mov dword [ebp - 0x40], ecx
movzx ebx, byte [ecx + edi*4 + 1]
lea ecx, [eax + ebx]
cmp ecx, edx
ja 0x5c3a42
mov ecx, dword [ebp - 0x40]
lea edi, [ecx + edi*4]
mov dword [ebp - 0x24], esi
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x18], edx
mov ecx, eax
shr dword [ebp - 0x1c], cl
mov ecx, edi
movzx edi, word [edi + 2]
mov ch, byte [ecx]
mov edx, dword [ebp - 0x18]
sub edx, eax
jmp 0x5c2dac
mov dword [ebp - 0x18], edx
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x24], esi
mov ebx, dword [ebp - 0x18]
sub dword [ebp - 0x20], 1
jb 0x5c4465
mov ecx, dword [ebp - 0x24]
movzx edi, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, ebx
shl edi, cl
mov ecx, dword [ebp - 0x1c]
add ecx, edi
add ebx, 8
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x1c], ecx
mov edi, ecx
and edi, dword [ebp - 0x44]
mov ecx, eax
shr edi, cl
mov ecx, dword [ebp - 0x40]
lea edi, [ecx + edi*4]
movzx ebx, byte [edi + 1]
mov ecx, ebx
add ecx, eax
cmp ecx, dword [ebp - 0x18]
jbe 0x5c3a2b
jmp 0x5c3a4e
mov eax, dword [ebp - 0x18]
cmp eax, 0x1f
ja 0x5c4180
mov dword [ebp - 0x18], eax
sub dword [ebp - 0x20], 1
jb 0x5c4426
mov ecx, dword [ebp - 0x24]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x1c], eax
lea esi, [ecx + 8]
cmp ecx, 0x18
mov eax, esi
jb 0x5c3aa1
mov edi, dword [ebp - 0x48]
mov ecx, edi
sub ecx, dword [ebp - 0x28]
add dword [edx + 0x14], ecx
add dword [ebx + 0x20], ecx
mov eax, dword [ebx + 0xc]
mov edx, eax
and edx, 4
je 0x5c3b11
cmp edi, dword [ebp - 0x28]
je 0x5c3b11
mov eax, dword [ebp - 0x30]
sub eax, ecx
cmp dword [ebx + 0x14], 0
mov edx, dword [ebx + 0x1c]
jne 0x5c3b43
push ecx
push eax
push edx
call fcn.005f03f0
add esp, 0xc
mov dword [ebx + 0x1c], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
mov eax, dword [ebx + 0xc]
mov edx, eax
and edx, 4
xor ecx, ecx
test edx, edx
je 0x5c3b2e
cmp dword [ebx + 0x14], 0
mov edi, dword [ebp - 0x1c]
mov edx, edi
bswap edx
cmovne edx, edi
cmp edx, dword [ebx + 0x1c]
jne 0x5c4790
mov dword [ebp - 0x18], 0
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0x48], esi
mov edx, dword [ebp + 8]
jmp 0x5c317b
push ecx
push eax
push edx
call fcn.005f03d0
jmp 0x5c3afd
sub edi, esi
mov eax, dword [ebp - 0x1c]
sub eax, edi
push edi
push eax
mov esi, dword [ebp - 0x20]
push dword [esi + 0x38]
call fcn.00654250
add esp, 0xc
mov dword [esi + 0x34], edi
jmp 0x5c321b
mov edi, edx
cmp dword [ebp - 0x18], 0xf
ja 0x5c3b9b
sub dword [ebp - 0x20], 1
jb 0x5c43fa
mov ecx, dword [ebp - 0x24]
movzx edx, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x18]
shl edx, cl
add dword [ebp - 0x1c], edx
lea edx, [ecx + 8]
cmp ecx, 8
mov dword [ebp - 0x18], edx
jb 0x5c3b74
test al, 2
je 0x5c3bac
cmp dword [ebp - 0x1c], 0x8b1f
je 0x5c3c65
mov ecx, dword [ebx + 0x24]
test ecx, ecx
jne 0x5c4773
test al, 1
mov edx, dword [ebp - 0x1c]
je 0x5c473c
mov eax, edx
shl eax, 8
movzx eax, ax
mov ecx, edx
shr ecx, 8
add ecx, eax
imul eax, ecx, 0xbdef7bdf
cmp eax, 0x8421085
jae 0x5c473c
mov eax, edx
and eax, 0xf
cmp eax, 8
jne 0x5c4782
mov eax, edx
shr eax, 4
mov ecx, eax
and ecx, 0xf
lea edx, [ecx + 8]
mov esi, dword [ebx + 0x28]
test esi, esi
je 0x5c3c5e
cmp ecx, 7
ja 0x5c4757
cmp edx, esi
ja 0x5c4757
mov eax, 0x100
shl eax, cl
mov dword [ebx + 0x18], eax
xor eax, eax
mov dword [ebx + 0x14], eax
push eax
push eax
mov dword [ebp - 0x18], 0
push eax
call fcn.005f03f0
add esp, 0xc
mov dword [ebx + 0x1c], eax
mov edx, edi
mov dword [edi + 0x30], eax
xor eax, eax
bt dword [ebp - 0x1c], 0xd
setae al
lea eax, [eax*2 + 0x3f3d]
mov dword [ebx + 4], eax
mov dword [ebp - 0x1c], 0
jmp 0x5c2de5
mov dword [ebx + 0x28], edx
mov esi, edx
jmp 0x5c3c04
cmp dword [ebx + 0x28], 0
je 0x5c48ba
xor eax, eax
push eax
push eax
mov dword [ebp - 0x1c], 0
push eax
call fcn.005f03d0
add esp, 0xc
mov dword [ebx + 0x1c], eax
lea ecx, [ebp - 0x14]
mov word [ecx], 0x8b1f
push 2
push ecx
push eax
call fcn.005f03d0
add esp, 0xc
mov dword [ebx + 0x1c], eax
mov dword [ebx + 4], 0x3f35
mov dword [ebp - 0x18], 0
mov edx, edi
mov edi, dword [ebp - 0x34]
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
cmp edx, 4
jne 0x5c3d00
mov edx, dword [ebp - 0x30]
movd xmm0, dword [edx - 4]
pshufd xmm0, xmm0, 0
movdqu xmmword [edx], xmm0
add edx, esi
mov dword [ebp - 0x30], edx
cmp eax, esi
je 0x5c2c3f
mov edx, dword [ebp - 0x30]
movd xmm0, dword [edx - 4]
pshufd xmm0, xmm0, 0
sub ecx, eax
inc ecx
mov esi, dword [ebp - 0x28]
movdqu xmmword [edx], xmm0
add edx, 0x10
add ecx, 0x10
je 0x5c3135
jmp 0x5c3cee
cmp edx, 2
je 0x5c3d5e
cmp edx, 8
je 0x5c3d89
mov edi, edx
neg edi
mov ebx, dword [ebp - 0x30]
mov esi, ebx
mov ecx, eax
movdqu xmm0, xmmword [ebx + edi]
movdqu xmmword [esi], xmm0
add esi, edx
sub ecx, edx
cmp edx, 7
lea edx, [edx + edx]
ja 0x5c3d2e
cmp edx, ecx
jb 0x5c3d15
mov ebx, edx
neg ebx
dec ecx
mov edi, ecx
and edi, 0xf
movdqu xmm0, xmmword [esi + ebx]
movdqu xmmword [esi], xmm0
lea ebx, [esi + edi]
inc ebx
mov dword [ebp - 0x30], ebx
cmp ecx, 0x10
jae 0x5c3dcb
mov edx, dword [ebp + 8]
mov ebx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 0x34]
jmp 0x5c2c45
mov edi, dword [ebp - 0x30]
movzx edx, word [edi - 2]
movd xmm0, edx
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqu xmmword [edi], xmm0
add edi, esi
mov dword [ebp - 0x30], edi
cmp eax, esi
je 0x5c30b0
jmp 0x5c41fb
mov edx, dword [ebp - 0x30]
movq xmm0, qword [edx - 8]
pshufd xmm0, xmm0, 0x44
movdqu xmmword [edx], xmm0
add edx, esi
mov dword [ebp - 0x30], edx
cmp eax, esi
je 0x5c2c3f
mov edx, dword [ebp - 0x30]
movq xmm0, qword [edx - 8]
pshufd xmm0, xmm0, 0x44
sub ecx, eax
inc ecx
mov esi, dword [ebp - 0x28]
movdqu xmmword [edx], xmm0
add edx, 0x10
add ecx, 0x10
jne 0x5c3dba
jmp 0x5c3135
sub esi, edx
inc edi
add edi, esi
shr ecx, 4
mov ebx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x30]
movdqu xmm0, xmmword [edi]
movdqu xmmword [edx], xmm0
add edx, 0x10
mov dword [ebp - 0x30], edx
add edi, 0x10
dec ecx
jne 0x5c3dd6
mov edx, dword [ebp + 8]
jmp 0x5c3d53
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x3c], eax
jmp 0x5c2ecc
mov edi, edx
cmp dword [ebp - 0x18], 0x1f
ja 0x5c422b
sub dword [ebp - 0x20], 1
jb 0x5c43fa
mov ecx, dword [ebp - 0x24]
movzx edx, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x18]
shl edx, cl
add dword [ebp - 0x1c], edx
lea edx, [ecx + 8]
cmp ecx, 0x18
mov dword [ebp - 0x18], edx
jb 0x5c3e12
mov dword [ebp - 0x18], 0
test al, 4
je 0x5c3e50
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebx + 0x20]
jne 0x5c48f5
mov dword [ebp - 0x1c], 0
mov edx, edi
jmp 0x5c3189
mov eax, dword [ebp - 0x18]
cmp eax, 0xf
ja 0x5c3e8d
mov dword [ebp - 0x18], eax
sub dword [ebp - 0x20], 1
jb 0x5c43b9
mov ecx, dword [ebp - 0x24]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x1c], eax
lea eax, [ecx + 8]
cmp ecx, 8
jb 0x5c3e66
mov ecx, dword [ebp - 0x1c]
mov dword [ebx + 0x14], ecx
cmp cl, 8
jne 0x5c490b
test ecx, 0xe000
jne 0x5c4924
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x5c493d
bt ecx, 9
jb 0x5c49c1
mov dword [ebx + 4], 0x3f36
xor eax, eax
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], eax
sub dword [ebp - 0x20], 1
jb 0x5c43b9
mov ecx, dword [ebp - 0x24]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x1c], eax
lea eax, [ecx + 8]
cmp ecx, 0x18
jb 0x5c3ecd
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x5c48ea
test byte [ebx + 0x15], 2
jne 0x5c4968
mov dword [ebx + 4], 0x3f37
xor eax, eax
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], eax
sub dword [ebp - 0x20], 1
jb 0x5c43b9
mov ecx, dword [ebp - 0x24]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x1c], eax
lea eax, [ecx + 8]
cmp ecx, 8
jb 0x5c3f19
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x5c49f1
test byte [ebx + 0x15], 2
jne 0x5c4994
mov dword [ebx + 4], 0x3f38
mov eax, dword [ebx + 0x14]
xor edi, edi
bt eax, 0xa
mov dword [ebp - 0x18], 0
mov ecx, ebx
mov ebx, 0
jb 0x5c47c1
mov eax, dword [ecx + 0x24]
test eax, eax
jne 0x5c48c6
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 4], 0x3f39
mov dword [ebp - 0x1c], ebx
mov eax, dword [ecx + 0x14]
bt eax, 0xa
mov ebx, ecx
jb 0x5c455a
mov ecx, dword [ebp - 0x18]
mov dword [ebx + 0x44], 0
mov dword [ebx + 4], 0x3f3a
test byte [ebx + 0x15], 8
jne 0x5c45f5
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x5c48d2
mov dword [ebx + 0x44], 0
mov dword [ebx + 4], 0x3f3b
test byte [ebx + 0x15], 0x10
jne 0x5c4686
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x5c48de
mov dword [ebx + 4], 0x3f3c
mov eax, dword [ebx + 0x14]
bt eax, 9
jb 0x5c4843
mov dword [ebp - 0x18], ecx
mov edi, edx
mov ecx, dword [ebx + 0x24]
test ecx, ecx
jne 0x5c4950
xor eax, eax
push eax
push eax
push eax
call fcn.005f03d0
add esp, 0xc
mov dword [ebx + 0x1c], eax
mov edx, edi
mov dword [edi + 0x30], eax
jmp 0x5c4031
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x2348], 0xffffffff
mov dword [ebx + 4], 0x3f3f
mov edi, dword [ebp - 0x34]
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov dword [ebp - 0x1c], esi
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x3c]
lea eax, [eax + ecx*8]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x44]
add eax, ecx
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], eax
jmp 0x5c3153
mov eax, dword [ebx + 0x4c]
jmp 0x5c2eac
mov dword [ebp - 0x20], 0
mov esi, dword [ebp - 0x28]
jmp 0x5c3240
add eax, edx
mov ecx, eax
xor eax, eax
dec eax
shl eax, cl
movzx ecx, di
mov dword [ebp - 0x1c], ecx
not eax
mov edi, esi
mov dword [ebp - 0x44], eax
and edi, eax
mov ecx, edx
shr edi, cl
mov eax, dword [ebp - 0x1c]
lea ebx, [ebx + eax*4]
movzx eax, byte [ebx + edi*4 + 1]
mov dword [ebp - 0x40], eax
lea ecx, [edx + eax]
mov eax, dword [ebp - 0x38]
cmp ecx, eax
mov ecx, eax
ja 0x5c40f5
lea eax, [ebx + edi*4]
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x1c], edi
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x18], edi
mov ebx, ecx
mov ecx, edx
shr esi, cl
mov edi, esi
movzx esi, word [eax + 2]
mov word [ebp - 0x44], si
sub ebx, edx
mov ecx, ebx
mov ebx, dword [ebp - 0x2c]
add edx, dword [ebx + 0x2348]
mov al, byte [eax]
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x38], ecx
jmp 0x5c2f7d
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
sub dword [ebp - 0x18], 1
jb 0x5c4435
movzx edi, byte [eax]
mov dword [ebp - 0x40], edi
inc eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
shl eax, cl
add esi, eax
add dword [ebp - 0x3c], 8
mov eax, esi
and eax, dword [ebp - 0x44]
mov ecx, edx
shr eax, cl
lea eax, [ebx + eax*4]
movzx ecx, byte [eax + 1]
mov dword [ebp - 0x40], ecx
add ecx, edx
cmp ecx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x3c]
jbe 0x5c40c2
jmp 0x5c4101
mov ecx, dword [ebx + 0x6c]
jmp 0x5c3513
mov eax, dword [ebp - 0x18]
jmp 0x5c39bb
mov eax, dword [ebx + 0x60]
mov ecx, dword [ebx + 0x6c]
mov dword [ebp - 0x38], eax
cmp ecx, eax
mov esi, dword [ebp - 0x54]
mov eax, dword [ebp - 0x18]
jb 0x5c3447
jmp 0x5c34b0
mov eax, dword [ebp - 0x18]
jmp 0x5c397a
mov esi, eax
jmp 0x5c3aca
xor eax, eax
jmp 0x5c30dd
mov edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x20]
jmp 0x5c2ff1
mov edi, dword [ebp - 0x20]
cmp esi, edi
cmovae esi, edi
mov eax, dword [ebp - 0x28]
cmp esi, eax
cmovae esi, eax
test esi, esi
je 0x5c4075
push esi
push dword [ebp - 0x24]
mov eax, dword [ebp - 0x30]
push eax
call fcn.00654250
add esp, 0xc
sub edi, esi
mov dword [ebp - 0x20], edi
add dword [ebp - 0x24], esi
mov eax, dword [ebp - 0x28]
sub eax, esi
add dword [ebp - 0x30], esi
sub dword [ebx + 0x44], esi
mov esi, eax
mov edi, dword [ebp - 0x34]
mov edx, dword [ebp + 8]
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov dword [ebp - 0x20], 0
mov eax, ecx
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x18], eax
jmp 0x5c3153
mov edx, dword [ebp - 0x30]
movzx edx, word [edx - 2]
movd xmm0, edx
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
sub ecx, eax
inc ecx
mov edx, dword [ebp - 0x30]
movdqu xmmword [edx], xmm0
add edx, 0x10
mov dword [ebp - 0x30], edx
add ecx, 0x10
je 0x5c3d4d
jmp 0x5c4213
mov edx, dword [ebp - 0x18]
jmp 0x5c3e39
cmp dword [ebp - 0x18], 0x1f
ja 0x5c4260
sub dword [ebp - 0x20], 1
jb 0x5c314c
mov ecx, dword [ebp - 0x24]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x1c], eax
lea eax, [ecx + 8]
cmp ecx, 0x18
mov dword [ebp - 0x18], eax
jb 0x5c4239
mov edx, dword [ebp - 0x1c]
bswap edx
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x1c], edx
mov eax, dword [ebp + 8]
mov dword [eax + 0x30], edx
mov dword [ecx + 4], 0x3f3e
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x2c]
cmp dword [eax + 0x10], 0
je 0x5c44c4
xor eax, eax
push eax
push eax
push eax
call fcn.005f03f0
add esp, 0xc
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x1c], eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x30], eax
mov dword [ebx + 4], 0x3f3f
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 0x34]
jmp case.0x5c2d01.16191
mov eax, dword [ebx + 0xc]
jmp 0x5c3185
mov esi, 0xfffffffe
jmp 0x5c33a5
mov ecx, dword [ebp - 0x18]
jmp 0x5c3fb1
mov ecx, dword [ebp - 0x18]
jmp 0x5c3fd4
mov ecx, dword [ebp - 0x18]
jmp 0x5c3ff0
mov ecx, ebx
jmp 0x5c3f91
mov eax, dword [ebp - 0x18]
jmp 0x5c39b1
mov dword [ebp - 0x4c], 0xfffffffd
jmp 0x5c3243
mov eax, dword [ebp - 0x2c]
mov dword [eax + 4], 0x3f52
mov esi, 0xfffffffc
jmp 0x5c33a5
mov eax, dword [ebp - 0x18]
cmp eax, 0x1f
ja 0x5c3ef4
jmp 0x5c3ecd
mov eax, dword [ebp - 0x18]
cmp eax, 0xf
ja 0x5c3f40
jmp 0x5c3f19
mov eax, dword [ebx + 0x14]
bt eax, 0xa
jb 0x5c47b5
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x28]
jmp 0x5c3f79
mov dword [edx + 0x18], str.invalid_literal_length_code
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov dword [ebp - 0x4c], eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_code_lengths_set
jmp 0x5c4395
mov dword [ebp - 0x18], eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.too_many_length_or_distance_symbols
jmp 0x5c4395
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_distance_code
mov dword [ebx + 4], 0x3f51
jmp 0x5c2de5
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_code____missing_end_of_block
jmp 0x5c4395
mov dword [ebp - 0x20], 0
jmp 0x5c3240
mov dword [ebp - 0x20], 0
jmp 0x5c3243
cmp dword [ebx + 0x2344], 0
je 0x5c2bd7
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_distance_too_far_back
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov dword [ebp - 0x18], 0
mov esi, dword [ebp - 0x28]
jmp 0x5c3243
mov dword [ebp - 0x20], 0
mov edx, edi
jmp 0x5c3243
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x18], esi
jmp 0x5c3153
cmp dword [edi + 4], 0
jne 0x5c33a5
jmp 0x5c2b3d
mov dword [ebp - 0x20], 0
mov esi, dword [ebp - 0x28]
jmp 0x5c3243
mov dword [ebp - 0x1c], esi
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x38]
jmp 0x5c3143
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_bit_length_repeat
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x20], eax
jmp 0x5c2de5
mov ecx, dword [ebp - 0x38]
lea eax, [edx + ecx*8]
mov dword [ebp - 0x18], eax
add esi, ecx
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], esi
jmp 0x5c3153
push eax
push ecx
push edx
call fcn.005f03d0
jmp 0x5c3331
mov dword [ebx + 4], 0x3f40
mov eax, dword [edi]
mov dword [ebp - 0x24], eax
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x30], eax
mov eax, 0x3f40
jmp 0x5c2b4b
mov edx, dword [ebp + 8]
jmp 0x5c2de5
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x30]
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x28]
mov dword [eax + 0x10], ecx
mov ecx, dword [ebp - 0x24]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x20]
mov dword [eax + 4], ecx
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 0x3c], ecx
mov ecx, dword [ebp - 0x18]
mov dword [eax + 0x40], ecx
mov esi, 2
jmp 0x5c33a5
mov dword [ebp - 0x1c], esi
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_bit_length_repeat
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 4], 0x3f51
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x18], eax
jmp 0x5c2de5
mov dword [ebp - 0x4c], eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_literal_lengths_set
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov dword [ebp - 0x4c], eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.invalid_distances_set
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov ecx, dword [ebx + 0x44]
mov esi, dword [ebp - 0x20]
cmp ecx, esi
cmovb esi, ecx
test esi, esi
je 0x5c45d9
mov edx, dword [ebp - 0x2c]
mov ebx, dword [edx + 0x24]
test ebx, ebx
je 0x5c45a4
mov edx, dword [ebx + 0x10]
test edx, edx
je 0x5c45a4
mov edi, dword [ebx + 0x14]
mov ebx, dword [ebx + 0x18]
sub edi, ecx
mov ecx, ebx
sub ecx, edi
jbe 0x5c45a4
add edx, edi
add edi, esi
cmp edi, ebx
cmovbe ecx, esi
push ecx
push dword [ebp - 0x24]
push edx
call fcn.00654250
add esp, 0xc
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x14]
bt eax, 9
jae 0x5c45c8
mov eax, dword [ebp - 0x2c]
test byte [eax + 0xc], 4
je 0x5c45c8
push esi
push dword [ebp - 0x24]
mov edi, dword [ebp - 0x2c]
push dword [edi + 0x1c]
call fcn.005f03d0
add esp, 0xc
mov dword [edi + 0x1c], eax
sub dword [ebp - 0x20], esi
add dword [ebp - 0x24], esi
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0x44]
sub ecx, esi
mov dword [eax + 0x44], ecx
test ecx, ecx
mov edx, dword [ebp + 8]
mov ebx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x18]
je 0x5c3fa3
mov dword [ebp - 0x18], ecx
jmp 0x5c3243
mov dword [ebp - 0x18], ecx
cmp dword [ebp - 0x20], 0
je 0x5c314c
xor esi, esi
jmp 0x5c461c
lea ecx, [edx + 1]
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x44], ecx
mov byte [eax + edx], bl
inc esi
test bl, bl
je 0x5c4640
cmp esi, dword [ebp - 0x20]
jae 0x5c4640
mov eax, dword [ebp - 0x24]
mov bl, byte [eax + esi]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x5c4612
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x5c4612
mov edx, dword [ebp - 0x2c]
mov edx, dword [edx + 0x44]
cmp edx, dword [ecx + 0x20]
jae 0x5c4612
jmp 0x5c4606
mov eax, dword [ebp - 0x2c]
test byte [eax + 0x15], 2
je 0x5c4667
mov eax, dword [ebp - 0x2c]
test byte [eax + 0xc], 4
je 0x5c4667
push esi
push dword [ebp - 0x24]
mov edi, dword [ebp - 0x2c]
push dword [edi + 0x1c]
call fcn.005f03d0
add esp, 0xc
mov dword [edi + 0x1c], eax
test bl, bl
jne 0x5c4713
sub dword [ebp - 0x20], esi
add dword [ebp - 0x24], esi
mov edx, dword [ebp + 8]
mov ebx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x18]
jmp 0x5c3fc6
mov dword [ebp - 0x18], ecx
cmp dword [ebp - 0x20], 0
je 0x5c314c
xor esi, esi
jmp 0x5c46ad
lea ecx, [edx + 1]
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x44], ecx
mov byte [eax + edx], bl
inc esi
test bl, bl
je 0x5c46d1
cmp esi, dword [ebp - 0x20]
jae 0x5c46d1
mov eax, dword [ebp - 0x24]
mov bl, byte [eax + esi]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x5c46a3
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x5c46a3
mov edx, dword [ebp - 0x2c]
mov edx, dword [edx + 0x44]
cmp edx, dword [ecx + 0x28]
jae 0x5c46a3
jmp 0x5c4697
mov eax, dword [ebp - 0x2c]
test byte [eax + 0x15], 2
je 0x5c46f8
mov eax, dword [ebp - 0x2c]
test byte [eax + 0xc], 4
je 0x5c46f8
push esi
push dword [ebp - 0x24]
mov edi, dword [ebp - 0x2c]
push dword [edi + 0x1c]
call fcn.005f03d0
add esp, 0xc
mov dword [edi + 0x1c], eax
test bl, bl
jne 0x5c4713
sub dword [ebp - 0x20], esi
add dword [ebp - 0x24], esi
mov edx, dword [ebp + 8]
mov ebx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x18]
jmp 0x5c3fe9
add dword [ebp - 0x24], esi
sub dword [ebp - 0x20], esi
jmp 0x5c3153
mov edx, edi
mov dword [edi + 0x18], str.invalid_stored_block_lengths
mov dword [ebx + 4], 0x3f51
mov dword [ebp - 0x18], eax
mov edi, dword [ebp - 0x34]
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov edx, edi
mov dword [edi + 0x18], str.incorrect_header_check
mov dword [ebx + 4], 0x3f51
mov edi, dword [ebp - 0x34]
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
add dword [ebp - 0x18], 0xfffffffc
mov edx, edi
mov dword [edi + 0x18], str.invalid_window_size
mov dword [ebx + 4], 0x3f51
mov dword [ebp - 0x1c], eax
jmp 0x5c2de5
mov dword [ecx + 0x30], 0xffffffff
mov eax, dword [ebx + 0xc]
jmp 0x5c3bb7
mov edx, edi
mov dword [edi + 0x18], str.unknown_compression_method
jmp 0x5c4395
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.incorrect_data_check
mov dword [ebx + 4], 0x3f51
mov dword [ebp - 0x18], esi
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0x48], esi
mov edi, dword [ebp - 0x34]
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
cmp dword [ebp - 0x18], 0xf
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x1c]
ja 0x5c47f1
mov dword [ebp - 0x1c], edi
sub dword [ebp - 0x20], 1
jb 0x5c314c
mov ecx, dword [ebp - 0x24]
movzx edx, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x18]
shl edx, cl
add dword [ebp - 0x1c], edx
lea edx, [ecx + 8]
cmp ecx, 8
mov dword [ebp - 0x18], edx
jb 0x5c47c4
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x1c]
mov edx, edi
mov dword [ecx + 0x44], edi
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je 0x5c4806
mov dword [ecx + 0x14], edx
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x14]
xor ebx, ebx
bt eax, 9
jae 0x5c4831
mov eax, dword [ebp - 0x2c]
test byte [eax + 0xc], 4
je 0x5c4831
lea eax, [ebp - 0x14]
mov word [eax], dx
push 2
push eax
mov esi, dword [ebp - 0x2c]
push dword [esi + 0x1c]
call fcn.005f03d0
add esp, 0xc
mov dword [esi + 0x1c], eax
mov dword [ebp - 0x18], 0
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 0x28]
jmp 0x5c3f84
mov esi, ecx
cmp ecx, 0xf
ja 0x5c4874
sub dword [ebp - 0x20], 1
jb 0x5c4408
mov ecx, dword [ebp - 0x24]
movzx edx, byte [ecx]
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, esi
shl edx, cl
add dword [ebp - 0x1c], edx
lea edx, [esi + 8]
cmp esi, 8
mov dword [ebp - 0x18], edx
mov esi, edx
jb 0x5c484a
jmp 0x5c4877
mov dword [ebp - 0x18], esi
mov ecx, dword [ebp - 0x2c]
test byte [ecx + 0xc], 4
je 0x5c488c
mov ecx, dword [ebp - 0x2c]
movzx ecx, word [ecx + 0x1c]
cmp dword [ebp - 0x1c], ecx
jne 0x5c48a8
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov edx, dword [ebp + 8]
mov ebx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x28]
jmp 0x5c4000
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.header_crc_mismatch
mov ebx, dword [ebp - 0x2c]
jmp 0x5c4395
mov dword [ebx + 0x28], 0xf
jmp 0x5c3c6f
mov dword [eax + 0x10], 0
jmp 0x5c3f84
mov dword [eax + 0x1c], 0
jmp 0x5c3fc6
mov dword [eax + 0x24], 0
jmp 0x5c3fe9
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 4], ecx
jmp 0x5c3eff
mov dword [edi + 0x18], str.incorrect_length_check
mov dword [ebx + 4], 0x3f51
mov dword [ebp - 0x18], edx
jmp 0x5c3cab
mov dword [ebp - 0x18], eax
mov dword [edx + 0x18], str.unknown_compression_method
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov dword [ebp - 0x18], eax
mov dword [edx + 0x18], str.unknown_header_flags_set
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x5c2cf0
mov ecx, dword [ebp - 0x1c]
shr ecx, 8
and ecx, 1
mov dword [eax], ecx
mov ecx, dword [ebx + 0x14]
jmp 0x5c3eb3
shr eax, 9
and eax, 1
mov dword [ecx + 0x2c], eax
mov eax, dword [ebx + 0x24]
mov dword [eax + 0x30], 1
jmp 0x5c400d
test byte [ebx + 0xc], 4
je 0x5c3f09
lea eax, [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov dword [eax], ecx
push 4
push eax
push dword [ebx + 0x1c]
mov edi, edx
call fcn.005f03d0
mov edx, edi
add esp, 0xc
mov dword [ebx + 0x1c], eax
jmp 0x5c3f09
test byte [ebx + 0xc], 4
je 0x5c3f55
lea eax, [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov word [eax], cx
push 2
push eax
push dword [ebx + 0x1c]
mov edi, edx
call fcn.005f03d0
mov edx, edi
add esp, 0xc
mov dword [ebx + 0x1c], eax
jmp 0x5c3f55
test byte [ebx + 0xc], 4
je 0x5c3ebd
lea eax, [ebp - 0x14]
mov byte [eax], 8
mov ecx, dword [ebp - 0x1c]
mov byte [eax + 1], ch
push 2
push eax
push dword [ebx + 0x1c]
mov edi, edx
call fcn.005f03d0
mov edx, edi
add esp, 0xc
mov dword [ebx + 0x1c], eax
jmp 0x5c3ebd
mov edi, edx
mov edx, dword [ebp - 0x1c]
movzx ecx, dl
mov dword [eax + 8], ecx
mov eax, edx
mov edx, edi
shr eax, 8
mov ecx, dword [ebx + 0x24]
mov dword [ecx + 0xc], eax
jmp 0x5c3f4b