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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x64
mov ecx, dword [ebp + 8]
mov eax, dword [0x53d010]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], 0xffffffff
mov esi, 0xfffffffe
test ecx, ecx
je 0x459f7c
cmp dword [ecx + 0x20], 0
je 0x459f7c
cmp dword [ecx + 0x24], 0
je 0x459f7c
mov ebx, dword [ecx + 0x1c]
test ebx, ebx
je 0x459f7c
cmp dword [ebx], ecx
jne 0x459f7c
mov eax, dword [ebx + 4]
lea ecx, [eax - 0x3f34]
cmp ecx, 0x1f
ja 0x459f7c
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xc]
mov dword [ebp - 0x34], edx
test edx, edx
je 0x459f7c
mov edx, dword [ecx]
mov dword [ebp - 0x1c], edx
test edx, edx
je 0x45b080
mov edx, dword [ebp + 0xc]
cmp eax, 0x3f3f
je 0x45b106
mov esi, dword [ecx + 4]
mov edi, dword [ecx + 0x10]
mov dword [ebp - 0x2c], edi
mov edi, dword [ebx + 0x3c]
mov dword [ebp - 0x20], edi
mov edi, dword [ebx + 0x40]
mov dword [ebp - 0x18], edi
lea edi, [ebx + 0x534]
mov dword [ebp - 0x64], edi
lea edi, [ebx + 0x70]
mov dword [ebp - 0x54], edi
lea edi, [ebx + 0x58]
mov dword [ebp - 0x60], edi
lea edi, [ebx + 0x2f4]
mov dword [ebp - 0x5c], edi
lea edi, [ebx + 0x74]
mov dword [ebp - 0x58], edi
lea edi, [ebx + 0x5c]
mov dword [ebp - 0x6c], edi
add edx, 0xfffffffb
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x28], ebx
jmp 0x45987e
mov eax, dword [ebx + 0xc]
test eax, eax
jne 0x45a816
mov dword [ebx + 4], 0x3f40
jmp 0x45984b
mov eax, dword [ebp - 0x34]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], esi
mov eax, dword [ebp - 0x1c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x24]
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x20]
mov dword [ebx + 0x3c], eax
mov eax, dword [ebp - 0x18]
mov dword [ebx + 0x40], eax
push dword [ebp - 0x4c]
push ecx
call fcn.00458e50
mov ecx, dword [ebp + 8]
add esp, 8
mov eax, dword [ecx + 0xc]
mov dword [ebp - 0x34], eax
mov esi, dword [ecx + 0x10]
mov eax, dword [ecx]
mov dword [ebp - 0x1c], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x24], eax
mov eax, dword [ebx + 0x3c]
mov dword [ebp - 0x20], eax
cmp dword [ebx + 4], 0x3f3f
mov eax, dword [ebx + 0x40]
mov dword [ebp - 0x18], eax
je 0x459850
mov eax, dword [ebx + 4]
jmp 0x45987e
mov dword [ebx + 0x2348], 0xffffffff
mov eax, dword [ebx + 4]
jmp 0x45987e
test esi, esi
je 0x459e1f
mov al, byte [ebx + 0x44]
mov edx, dword [ebp - 0x34]
mov byte [edx], al
inc edx
mov dword [ebp - 0x34], edx
dec esi
mov dword [ebx + 4], 0x3f48
mov eax, dword [ebx + 4]
add eax, 0xffffc0cc
cmp eax, 0x1e
ja case.default.0x45988f
mov dword [ebp - 0x2c], esi
jmp dword [eax*4 + 0x524bb4]
cmp dword [ebp - 0x24], 6
jb 0x4598a8
cmp esi, 0x102
jae 0x4597f3
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 - 0x20]
and ecx, edi
mov dword [ebp - 0x38], eax
movzx ebx, byte [eax + ecx*4 + 1]
movzx eax, bl
mov edx, dword [ebp - 0x18]
cmp edx, eax
jae 0x45997a
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x30], eax
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x30]
sub eax, 1
jb 0x45a7b4
mov dword [ebp - 0x30], eax
movzx eax, byte [esi]
inc esi
mov ecx, edx
shl eax, cl
mov ecx, dword [ebp - 0x20]
add ecx, eax
add edx, 8
mov dword [ebp - 0x20], ecx
mov eax, ecx
and eax, edi
mov ebx, dword [ebp - 0x38]
lea ecx, [ebx + eax*4]
movzx ebx, byte [ebx + eax*4 + 1]
movzx eax, bl
cmp edx, eax
jb 0x4598e6
movzx edi, word [ecx + 2]
mov ch, byte [ecx]
mov cl, ch
dec cl
cmp cl, 0xe
jbe 0x45a5b2
xor eax, eax
mov dword [ebp - 0x1c], esi
mov esi, dword [ebp - 0x30]
mov dword [ebp - 0x24], esi
movzx esi, bl
sub edx, esi
mov dword [ebp - 0x18], edx
add eax, esi
mov edx, dword [ebp - 0x28]
mov dword [edx + 0x2348], eax
movzx eax, di
mov dword [edx + 0x44], eax
mov cl, bl
mov eax, dword [ebp - 0x20]
shr eax, cl
test ch, ch
mov dword [ebp - 0x20], eax
jne 0x4599c4
mov dword [edx + 4], 0x3f4d
mov ecx, dword [ebp + 8]
mov ebx, edx
mov esi, dword [ebp - 0x2c]
mov eax, dword [edx + 4]
jmp 0x45987e
mov esi, dword [ebp - 0x38]
lea ecx, [esi + ecx*4]
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x30], edi
jmp 0x45991e
mov esi, dword [ebp - 0x24]
mov edi, ecx
sub esi, 1
jb 0x45a771
movzx ebx, byte [edi]
mov dword [ebp - 0x1c], edi
mov edi, esi
mov esi, ecx
mov ecx, edx
shl ebx, cl
mov ecx, esi
mov esi, edi
mov edi, dword [ebp - 0x1c]
add dword [ebp - 0x20], ebx
inc edi
add edx, 8
cmp edx, eax
jae 0x4599fd
jmp 0x459990
mov eax, ecx
mov esi, ebx
mov ebx, dword [ebx + 0x44]
jmp 0x459a2d
movzx eax, ch
test al, 0x20
mov esi, dword [ebp - 0x2c]
jne 0x45a7d8
test al, 0x40
mov ebx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x1c]
jne 0x45afc6
and eax, 0xf
mov dword [ebx + 0x4c], eax
mov dword [ebx + 4], 0x3f49
test eax, eax
je 0x4599bb
mov edx, dword [ebp - 0x18]
cmp edx, eax
jb 0x45998b
mov edi, ecx
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x1c], edi
xor ebx, ebx
dec ebx
mov ecx, eax
shl ebx, cl
not ebx
mov edi, dword [ebp - 0x20]
and ebx, edi
mov esi, dword [ebp - 0x28]
add ebx, dword [esi + 0x44]
shr edi, cl
mov dword [ebp - 0x20], edi
mov dword [esi + 0x44], ebx
add dword [esi + 0x2348], eax
sub edx, eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
mov dword [esi + 0x234c], ebx
mov dword [esi + 4], 0x3f4a
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x3c], eax
mov ebx, esi
mov cl, byte [ebx + 0x5c]
xor eax, eax
dec eax
shl eax, cl
mov esi, dword [ebx + 0x54]
not eax
mov ebx, dword [ebp - 0x20]
mov ecx, ebx
and ecx, eax
mov dl, byte [esi + ecx*4 + 1]
mov dword [ebp - 0x38], edx
movzx edx, dl
mov edi, dword [ebp - 0x18]
cmp edi, edx
mov dword [ebp - 0x40], esi
jae 0x459ac6
mov dword [ebp - 0x30], edi
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x24], ecx
mov esi, dword [ebp - 0x1c]
sub dword [ebp - 0x24], 1
jb 0x45a781
movzx edx, byte [esi]
inc esi
mov edi, ebx
mov ebx, dword [ebp - 0x30]
mov ecx, ebx
shl edx, cl
add edi, edx
add ebx, 8
mov ecx, edi
and ecx, eax
mov edx, dword [ebp - 0x40]
lea ecx, [edx + ecx*4]
mov dl, byte [ecx + 1]
mov dword [ebp - 0x38], edx
movzx edx, dl
mov dword [ebp - 0x30], ebx
cmp ebx, edx
mov ebx, edi
jae 0x459ad5
jmp 0x459a79
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x1c]
jmp 0x459baa
mov edx, dword [ebp - 0x18]
jmp 0x459ba3
lea ecx, [esi + ecx*4]
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x1c], esi
movzx esi, word [ecx + 2]
movzx eax, byte [ecx]
cmp eax, 0x10
jb 0x45acda
mov word [ebp - 0x3c], si
mov esi, ebx
mov ebx, dword [ebp - 0x28]
mov edx, dword [ebx + 0x2348]
mov ecx, dword [ebp - 0x38]
movzx edi, cl
add edx, edi
mov dword [ebx + 0x2348], edx
shr esi, cl
mov dword [ebp - 0x20], esi
mov ecx, dword [ebp - 0x30]
sub ecx, edi
mov dword [ebp - 0x18], ecx
movzx eax, al
test al, 0x40
jne 0x45b04a
movzx ecx, word [ebp - 0x3c]
mov dword [ebx + 0x48], ecx
and eax, 0xf
mov dword [ebx + 0x4c], eax
mov dword [ebx + 4], 0x3f4b
mov esi, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x1c]
test eax, eax
je 0x459abe
mov edx, dword [ebp - 0x18]
cmp edx, eax
jae 0x45adea
mov esi, dword [ebp - 0x24]
mov edi, ecx
sub esi, 1
jb 0x45a7a1
movzx ebx, byte [edi]
mov dword [ebp - 0x1c], esi
mov esi, ecx
mov ecx, edx
shl ebx, cl
mov ecx, esi
mov esi, dword [ebp - 0x1c]
add dword [ebp - 0x20], ebx
inc edi
add edx, 8
cmp edx, eax
jb 0x459b4b
mov dword [ebp - 0x1c], esi
xor ebx, ebx
dec ebx
mov ecx, eax
shl ebx, cl
not ebx
mov esi, dword [ebp - 0x20]
and ebx, esi
mov ecx, dword [ebp - 0x28]
add dword [ecx + 0x48], ebx
mov ebx, ecx
mov ecx, eax
shr esi, cl
mov dword [ebp - 0x20], esi
add dword [ebx + 0x2348], eax
sub edx, eax
mov ecx, edi
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x24], eax
mov esi, dword [ebp - 0x2c]
mov dword [ebx + 4], 0x3f4c
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], edx
test esi, esi
je 0x459e23
mov ecx, dword [ebp - 0x4c]
sub ecx, esi
mov edx, dword [ebx + 0x48]
mov eax, edx
sub eax, ecx
jbe 0x459c67
cmp eax, dword [ebx + 0x30]
ja 0x45affa
mov ecx, dword [ebx + 0x34]
mov edx, eax
sub edx, ecx
ja 0x459c5a
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
mov dword [ebp - 0x30], eax
jle 0x459d46
lea edx, [eax - 1]
mov esi, edx
and esi, 0xf
movdqu xmm0, xmmword [ecx]
mov edi, dword [ebp - 0x34]
movdqu xmmword [edi], xmm0
add edi, esi
inc edi
mov dword [ebp - 0x34], edi
cmp edx, 0x10
jb 0x459c37
inc esi
shr edx, 4
add ecx, esi
mov esi, dword [ebp - 0x34]
movdqu xmm0, xmmword [ecx]
movdqu xmmword [esi], xmm0
add esi, 0x10
add ecx, 0x10
dec edx
jne 0x459c23
mov dword [ebp - 0x34], esi
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x30]
sub esi, eax
sub dword [ebx + 0x44], eax
mov ecx, dword [ebp + 8]
jne 0x45984b
mov dword [ebx + 4], 0x3f48
mov eax, dword [ebx + 4]
jmp 0x45987e
mov ecx, dword [ebx + 0x2c]
sub ecx, edx
add ecx, dword [ebx + 0x38]
jmp 0x459be3
mov ecx, dword [ebx + 0x44]
cmp ecx, esi
cmovae ecx, esi
cmp esi, 0x2f
mov dword [ebp - 0x30], ecx
jle 0x459d21
cmp edx, 0xf
ja 0x459cdd
cmp edx, ecx
jae 0x459cdd
mov eax, ecx
dec ecx
and ecx, 0xf
lea esi, [ecx + 1]
cmp edx, 1
jne 0x45a963
mov edi, dword [ebp - 0x34]
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 - 0x34], edi
cmp eax, esi
je 0x459c37
sub ecx, eax
inc ecx
mov edx, dword [ebp - 0x34]
mov esi, dword [ebp - 0x2c]
movdqu xmmword [edx], xmm0
add edx, 0x10
add ecx, 0x10
jne 0x459cc9
mov dword [ebp - 0x34], edx
jmp 0x459c3a
mov edi, dword [ebp - 0x34]
mov esi, edi
sub esi, edx
dec ecx
movdqu xmm0, xmmword [esi]
mov esi, ecx
and esi, 0xf
movdqu xmmword [edi], xmm0
add edi, esi
inc edi
mov dword [ebp - 0x34], edi
cmp ecx, 0x10
jb 0x459c37
neg edx
shr ecx, 4
mov esi, dword [ebp - 0x34]
movdqu xmm0, xmmword [esi + edx]
movdqu xmmword [esi], xmm0
add esi, 0x10
mov dword [ebp - 0x34], esi
dec ecx
je 0x459c37
jmp 0x459d06
mov eax, esi
test ecx, ecx
je 0x45ad96
neg edx
mov esi, dword [ebp - 0x34]
mov bl, byte [esi + edx]
mov byte [esi], bl
inc esi
dec ecx
jne 0x459d30
mov dword [ebp - 0x34], esi
mov ebx, dword [ebp - 0x28]
mov esi, eax
jmp 0x459c3a
test al, 8
je 0x459d5e
movq xmm0, qword [ecx]
mov edx, dword [ebp - 0x34]
movq qword [edx], xmm0
add edx, 8
mov dword [ebp - 0x34], edx
add ecx, 8
test byte [ebp - 0x30], 4
je 0x459d78
mov edx, dword [ecx]
mov eax, esi
mov esi, dword [ebp - 0x34]
mov dword [esi], edx
add esi, 4
mov dword [ebp - 0x34], esi
mov esi, eax
add ecx, 4
test byte [ebp - 0x30], 2
je 0x459d94
movzx edx, word [ecx]
mov eax, esi
mov esi, dword [ebp - 0x34]
mov word [esi], dx
add esi, 2
mov dword [ebp - 0x34], esi
mov esi, eax
add ecx, 2
test byte [ebp - 0x30], 1
je 0x459c3a
mov cl, byte [ecx]
mov edx, dword [ebp - 0x34]
mov byte [edx], cl
inc edx
jmp 0x459cd5
xor eax, eax
cmp dword [ebx + 0xc], 0
jne 0x45a664
mov ecx, dword [ebp - 0x20]
mov dword [ebx + 4], 0x3f4f
mov dword [ebp - 0x20], ecx
test eax, eax
mov ecx, dword [ebp + 8]
jne 0x45aa96
mov dword [ebx + 4], 0x3f50
xor eax, eax
inc eax
mov dword [ebp - 0x48], eax
jmp 0x459e28
cmp dword [ebp - 0x4c], ebx
je 0x459ec5
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 4]
cmp eax, 0x3f50
jg 0x459ec5
cmp dword [ebp + 0xc], 4
jne 0x459e51
cmp eax, 0x3f4d
jle 0x459e51
jmp 0x459ec5
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 0x459e71
xor esi, esi
jmp 0x459e28
xor esi, esi
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x34]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], esi
mov eax, dword [ebp - 0x1c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x24]
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x20]
mov dword [ebx + 0x3c], eax
mov eax, dword [ebp - 0x18]
mov dword [ebx + 0x40], eax
cmp dword [ebx + 0x2c], 0
mov ebx, dword [ecx + 0x10]
je 0x459dde
mov edx, dword [ecx + 0xc]
mov esi, dword [ecx + 0x1c]
mov eax, dword [esi + 0x38]
test eax, eax
mov dword [ebp - 0x20], esi
je 0x45a723
mov edi, dword [ebp - 0x4c]
sub edi, ebx
mov ebx, dword [esi + 0x2c]
test ebx, ebx
je 0x459e0a
cmp ebx, edi
jbe 0x459f90
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
mov dword [ebp - 0x24], edx
call fcn.0049e310
add esp, 0xc
cmp ebx, edi
jb 0x45a7f7
mov edi, dword [ebp - 0x20]
mov eax, dword [edi + 0x34]
add eax, esi
mov ecx, dword [edi + 0x2c]
xor edx, edx
cmp eax, ecx
cmovne edx, eax
mov eax, dword [edi + 0x30]
mov dword [edi + 0x34], edx
cmp eax, ecx
mov ecx, dword [ebp + 8]
jae 0x459ec5
add eax, esi
mov dword [edi + 0x30], eax
mov edx, dword [ecx + 4]
mov esi, dword [ecx + 0x10]
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x20], edx
sub eax, edx
add dword [ecx + 8], eax
mov ebx, dword [ebp - 0x4c]
mov eax, ebx
sub eax, esi
add dword [ecx + 0x14], eax
mov edi, dword [ebp - 0x28]
add dword [edi + 0x20], eax
test byte [edi + 0xc], 4
je 0x459f16
cmp ebx, esi
je 0x459f16
mov ecx, dword [ecx + 0xc]
sub ecx, eax
cmp dword [edi + 0x14], 0
mov edx, dword [edi + 0x1c]
jne 0x45b0b2
push eax
push ecx
push edx
call fcn.00466150
add esp, 0xc
mov dword [edi + 0x1c], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
xor eax, eax
cmp dword [edi + 8], 0
setne al
shl eax, 6
add eax, dword [edi + 0x40]
mov edx, dword [edi + 4]
mov edi, ecx
xor ecx, ecx
cmp edx, 0x3f3f
sete cl
shl ecx, 7
cmp edx, 0x3f47
sete byte [ebp - 0x24]
cmp edx, 0x3f42
sete dl
or dl, byte [ebp - 0x24]
movzx edx, dl
shl edx, 8
add edx, ecx
add edx, eax
mov ecx, dword [ebp - 0x68]
xor ecx, dword [ebp - 0x20]
xor ebx, esi
mov esi, dword [ebp - 0x48]
test esi, esi
mov eax, 0xfffffffb
cmovne eax, esi
mov dword [edi + 0x2c], edx
or ebx, ecx
cmove esi, eax
cmp dword [ebp + 0xc], 4
cmove esi, eax
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0049b483
mov eax, esi
add esp, 0x64
pop esi
pop edi
pop ebx
pop ebp
ret
sub edx, ebx
push ebx
push edx
push eax
call fcn.0049e310
add esp, 0xc
mov dword [esi + 0x34], 0
mov eax, dword [esi + 0x2c]
mov dword [esi + 0x30], eax
mov ecx, dword [ebp + 8]
jmp 0x459ec5
mov eax, dword [ebp - 0x18]
mov ecx, eax
and cl, 7
shr dword [ebp - 0x20], cl
mov ecx, dword [ebp + 8]
and eax, 0xfffffff8
mov dword [ebp - 0x18], eax
mov dword [ebx + 4], 0x3f4e
mov eax, dword [ebx + 4]
jmp 0x45987e
mov esi, dword [ebp - 0x20]
jmp 0x45a017
cmp dword [ebp - 0x70], 2
jb 0x459e28
cmp dword [ebx + 8], 0
jne 0x459fb2
cmp dword [ebp - 0x18], 3
jae 0x459fd5
cmp dword [ebp - 0x24], 0
je 0x45ad75
mov edx, dword [ebp - 0x1c]
movzx eax, byte [edx]
mov ecx, dword [ebp - 0x18]
shl eax, cl
mov esi, dword [ebp - 0x20]
add esi, eax
dec dword [ebp - 0x24]
inc edx
mov dword [ebp - 0x1c], edx
add ecx, 8
mov dword [ebp - 0x18], ecx
mov eax, esi
and eax, 1
mov dword [ebx + 8], eax
mov dword [ebp - 0x20], esi
mov eax, esi
shr eax, 1
and eax, 3
cmp eax, 2
jne 0x45a051
mov ecx, 0x3f44
mov esi, dword [ebp - 0x2c]
mov dword [ebx + 4], ecx
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x18]
shr dword [ebp - 0x20], 3
add eax, 0xfffffffd
mov dword [ebp - 0x18], eax
mov eax, dword [ebx + 4]
jmp 0x45987e
mov ecx, 0x3f41
test eax, eax
mov esi, dword [ebp - 0x2c]
je 0x45a036
cmp eax, 1
jne 0x45b400
mov dword [ebx + 0x50], 0x524334
mov dword [ebx + 0x58], 9
mov dword [ebx + 0x54], 0x524b34
mov dword [ebx + 0x5c], 5
mov dword [ebx + 4], 0x3f47
cmp dword [ebp + 0xc], 6
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x18]
jne 0x45a03f
shr dword [ebp - 0x20], 3
add eax, 0xfffffffd
mov dword [ebp - 0x18], eax
jmp 0x459e28
mov eax, dword [ebp - 0x18]
cmp eax, 0xd
ja 0x45a0d3
mov dword [ebp - 0x18], eax
sub dword [ebp - 0x24], 1
mov ecx, dword [ebp - 0x1c]
jb 0x45afee
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x20], eax
lea eax, [ecx + 8]
cmp ecx, 6
jb 0x45a0ac
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x20]
mov edi, ecx
and edi, 0x1f
lea eax, [edi + 0x101]
mov dword [ebx + 0x64], eax
mov edx, ecx
shr edx, 5
and edx, 0x1f
lea eax, [edx + 1]
mov dword [ebx + 0x68], eax
mov eax, dword [ebp - 0x18]
mov esi, ecx
shr esi, 0xa
and esi, 0xf
add esi, 4
mov dword [ebp - 0x30], esi
mov dword [ebx + 0x60], esi
shr ecx, 0xe
mov dword [ebp - 0x20], ecx
add eax, 0xfffffff2
cmp edi, 0x1d
ja 0x45b03b
cmp edx, 0x1e
jae 0x45b03b
mov dword [ebx + 0x6c], 0
mov dword [ebx + 4], 0x3f45
xor ecx, ecx
mov edx, ecx
jmp 0x45a163
mov edi, dword [ebp - 0x20]
mov esi, edi
and esi, 7
lea ecx, [edx + 1]
mov dword [ebx + 0x6c], ecx
movzx edx, word [edx + edx + 0x524190]
mov word [ebx + edx*2 + 0x74], si
shr edi, 3
mov dword [ebp - 0x20], edi
add eax, 0xfffffffd
mov edx, ecx
cmp ecx, dword [ebp - 0x30]
jae 0x45a199
cmp eax, 2
ja 0x45a138
mov dword [ebp - 0x18], eax
mov esi, dword [ebp - 0x24]
test esi, esi
je 0x45ad75
mov eax, dword [ebp - 0x1c]
movzx edi, byte [eax]
mov ecx, dword [ebp - 0x18]
shl edi, cl
mov dword [ebp - 0x38], edi
mov edi, dword [ebp - 0x20]
add edi, dword [ebp - 0x38]
dec esi
mov dword [ebp - 0x24], esi
inc eax
mov dword [ebp - 0x1c], eax
mov eax, ecx
add eax, 8
jmp 0x45a13b
mov dword [ebp - 0x18], eax
cmp ecx, 0x12
ja 0x45a1b9
movzx eax, word [ecx + ecx + 0x524190]
inc ecx
mov word [ebx + eax*2 + 0x74], 0
cmp ecx, 0x13
jne 0x45a1a1
mov dword [ebx + 0x6c], ecx
mov eax, dword [ebp - 0x64]
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x50], eax
mov dword [ebx + 0x58], 7
push dword [ebp - 0x5c]
push dword [ebp - 0x60]
push dword [ebp - 0x54]
push 0x13
push dword [ebp - 0x58]
push 0
call fcn.004659a0
add esp, 0x18
test eax, eax
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x2c]
jne 0x45b3e1
mov dword [ebx + 0x6c], 0
mov dword [ebx + 4], 0x3f46
xor edx, edx
xor eax, eax
mov dword [ebp - 0x48], eax
mov eax, dword [ebx + 0x64]
mov esi, dword [ebx + 0x68]
add esi, eax
mov dword [ebp - 0x50], esi
cmp edx, esi
jb 0x45a3b4
jmp 0x45ad6d
mov dword [ebp - 0x44], edx
mov ecx, dword [ebp - 0x3c]
lea esi, [ecx + 7]
mov eax, dword [ebp - 0x38]
cmp eax, esi
jae 0x45a258
mov edx, eax
sub dword [ebp - 0x44], 1
jb 0x45b0bf
mov eax, dword [ebp - 0x30]
movzx ebx, byte [eax]
mov ecx, edx
shl ebx, cl
add dword [ebp - 0x20], ebx
inc eax
mov dword [ebp - 0x30], eax
mov eax, edx
add eax, 8
cmp eax, esi
mov ebx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x3c]
jb 0x45a22c
mov edi, ebx
mov esi, dword [ebp - 0x20]
shr esi, cl
mov ebx, esi
and ebx, 0x7f
add ebx, 0xb
shr esi, 7
mov dword [ebp - 0x20], esi
sub eax, ecx
add eax, 0xfffffff9
jmp 0x45a2ca
mov dword [ebp - 0x44], edx
mov ecx, dword [ebp - 0x3c]
lea esi, [ecx + 3]
mov eax, dword [ebp - 0x38]
cmp eax, esi
jae 0x45a2b0
mov edx, eax
sub dword [ebp - 0x44], 1
jb 0x45b0bf
mov eax, dword [ebp - 0x30]
movzx ebx, byte [eax]
mov ecx, edx
shl ebx, cl
add dword [ebp - 0x20], ebx
inc eax
mov dword [ebp - 0x30], eax
mov eax, edx
add eax, 8
cmp eax, esi
mov ebx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x3c]
jb 0x45a284
mov edi, ebx
mov esi, dword [ebp - 0x20]
shr esi, cl
mov ebx, esi
and ebx, 7
add ebx, 3
shr esi, 3
mov dword [ebp - 0x20], esi
sub eax, ecx
add eax, 0xfffffffd
xor edx, edx
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x40]
add ecx, ebx
cmp ecx, dword [ebp - 0x50]
ja 0x45b122
nop dword [eax]
mov eax, dword [edi + 0x6c]
lea esi, [eax + 1]
mov dword [edi + 0x6c], esi
mov word [edi + eax*2 + 0x74], dx
dec ebx
jne 0x45a2e0
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x24], eax
mov ebx, edi
jmp 0x45a39e
cmp ecx, 0x11
mov ebx, dword [ebp - 0x28]
je 0x45a274
cmp ecx, 0x10
jne 0x45a21c
mov ecx, dword [ebp - 0x3c]
lea esi, [ecx + 2]
mov eax, dword [ebp - 0x38]
cmp eax, esi
jb 0x45a429
mov dword [ebp - 0x44], edx
mov esi, dword [ebp - 0x20]
shr esi, cl
sub eax, ecx
mov ecx, dword [ebp - 0x40]
test ecx, ecx
je 0x45b14c
mov edi, ebx
movzx edx, word [ebx + ecx*2 + 0x72]
mov ebx, esi
and ebx, 3
add ebx, 3
shr esi, 2
mov dword [ebp - 0x20], esi
add eax, 0xfffffffe
mov dword [ebp - 0x18], eax
jmp 0x45a2d2
mov dword [ebp - 0x3c], edx
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x30], ebx
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x38], eax
movzx ecx, word [esi + ecx*4 + 2]
cmp ecx, 0xf
ja 0x45a301
mov edi, dword [ebp - 0x40]
lea esi, [edi + 1]
mov ebx, dword [ebp - 0x28]
mov dword [ebx + 0x6c], esi
mov word [ebx + edi*2 + 0x74], cx
mov ecx, dword [ebp - 0x3c]
shr dword [ebp - 0x20], cl
mov eax, dword [ebp - 0x38]
sub eax, ecx
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x18], eax
mov eax, dword [ebx + 0x64]
mov edx, dword [ebx + 0x6c]
mov esi, dword [ebx + 0x68]
add esi, eax
mov dword [ebp - 0x50], esi
cmp edx, esi
jae 0x45a462
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x1c], ecx
mov esi, dword [ebx + 0x50]
movzx ecx, byte [ebx + 0x58]
mov ebx, 0xffffffff
shl ebx, cl
not ebx
mov ecx, dword [ebp - 0x20]
and ecx, ebx
movzx edx, byte [esi + ecx*4 + 1]
mov eax, dword [ebp - 0x18]
cmp eax, edx
jae 0x45a360
mov dword [ebp - 0x38], eax
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x30], ecx
sub edx, 1
jb 0x45a7b4
mov dword [ebp - 0x44], edx
mov edx, dword [ebp - 0x30]
movzx edi, byte [edx]
mov eax, dword [ebp - 0x38]
mov ecx, eax
shl edi, cl
inc edx
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x20]
add ecx, edi
add eax, 8
mov dword [ebp - 0x20], ecx
and ecx, ebx
movzx edi, byte [esi + ecx*4 + 1]
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], edi
cmp eax, edi
jae 0x45a36f
jmp 0x45a3e7
mov dword [ebp - 0x38], eax
sub edx, 1
mov dword [ebp - 0x44], edx
jb 0x45b0ee
mov eax, dword [ebp - 0x30]
movzx ebx, byte [eax]
mov ecx, dword [ebp - 0x38]
shl ebx, cl
add dword [ebp - 0x20], ebx
inc eax
mov dword [ebp - 0x30], eax
mov eax, ecx
add eax, 8
cmp eax, esi
mov ebx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x3c]
jae 0x45a327
jmp 0x45a429
mov dword [ebp - 0x1c], ecx
cmp dword [ebx + 4], 0x3f51
je 0x45b1f7
cmp word [ebx + 0x274], 0
mov esi, dword [ebp - 0x54]
mov edi, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x58]
je 0x45b02f
mov ecx, dword [ebp - 0x64]
mov dword [ebx + 0x70], ecx
mov dword [ebx + 0x50], ecx
mov dword [ebx + 0x58], 0xa
push edi
push dword [ebp - 0x60]
push esi
push eax
push edx
push 1
mov esi, edx
call fcn.004659a0
add esp, 0x18
test eax, eax
jne 0x45b020
mov eax, dword [ebx + 0x70]
mov dword [ebx + 0x54], eax
mov dword [ebx + 0x5c], 9
mov eax, dword [ebx + 0x64]
lea eax, [esi + eax*2]
push edi
push dword [ebp - 0x6c]
push dword [ebp - 0x54]
push dword [ebx + 0x68]
push eax
push 2
call fcn.004659a0
add esp, 0x18
test eax, eax
jne 0x45b066
mov dword [ebp - 0x48], 0
mov dword [ebx + 4], 0x3f47
cmp dword [ebp + 0xc], 6
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x2c]
je 0x459e28
mov dword [ebx + 4], 0x3f48
jmp case.0x45988f.16200
mov eax, dword [ebp - 0x18]
mov ecx, eax
and cl, 7
shr dword [ebp - 0x20], cl
and eax, 0xfffffff8
mov dword [ebp - 0x18], eax
cmp eax, 0x1f
ja 0x45ad8e
sub dword [ebp - 0x24], 1
mov ecx, dword [ebp - 0x1c]
jb 0x45afee
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x20], eax
lea eax, [ecx + 8]
cmp ecx, 0x18
mov dword [ebp - 0x18], eax
jb 0x45a528
mov edx, dword [ebp - 0x20]
movzx ecx, dx
not edx
shr edx, 0x10
cmp ecx, edx
jne 0x45b42d
mov dword [ebp - 0x20], 0
mov dword [ebx + 0x44], ecx
mov dword [ebx + 4], 0x3f42
mov dword [ebp - 0x18], 0
cmp dword [ebp + 0xc], 6
je 0x45afe2
mov edx, esi
mov eax, dword [ebp - 0x1c]
mov dword [ebx + 4], 0x3f43
mov ecx, dword [ebp + 8]
mov esi, dword [ebx + 0x44]
test esi, esi
mov dword [ebp - 0x1c], eax
jne 0x45ada2
mov dword [ebx + 4], 0x3f3f
mov esi, edx
mov eax, dword [ebx + 4]
jmp 0x45987e
movzx ecx, ch
add ecx, eax
xor ebx, ebx
dec ebx
shl ebx, cl
movzx ecx, di
mov dword [ebp - 0x24], ecx
not ebx
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x3c], ebx
and edi, ebx
mov ecx, eax
shr edi, cl
mov ecx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x24]
lea ecx, [ecx + ebx*4]
mov dword [ebp - 0x38], ecx
movzx ebx, byte [ecx + edi*4 + 1]
lea ecx, [eax + ebx]
cmp ecx, edx
ja 0x45a611
mov ecx, dword [ebp - 0x38]
lea edi, [ecx + edi*4]
mov dword [ebp - 0x1c], esi
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x18], edx
mov ecx, eax
shr dword [ebp - 0x20], cl
mov ecx, edi
movzx edi, word [edi + 2]
mov ch, byte [ecx]
mov edx, dword [ebp - 0x18]
sub edx, eax
jmp 0x45993c
mov dword [ebp - 0x18], edx
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x1c], esi
mov ebx, dword [ebp - 0x18]
sub dword [ebp - 0x24], 1
jb 0x45b0d4
mov ecx, dword [ebp - 0x1c]
movzx edi, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, ebx
shl edi, cl
mov ecx, dword [ebp - 0x20]
add ecx, edi
add ebx, 8
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x20], ecx
mov edi, ecx
and edi, dword [ebp - 0x3c]
mov ecx, eax
shr edi, cl
mov ecx, dword [ebp - 0x38]
lea edi, [ecx + edi*4]
movzx ebx, byte [edi + 1]
mov ecx, ebx
add ecx, eax
cmp ecx, dword [ebp - 0x18]
jbe 0x45a5fa
jmp 0x45a61d
mov eax, dword [ebp - 0x18]
mov edi, esi
cmp eax, 0x1f
ja 0x45ad87
mov dword [ebp - 0x18], eax
sub dword [ebp - 0x24], 1
jb 0x45b0a1
mov ecx, dword [ebp - 0x1c]
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x20], eax
lea esi, [ecx + 8]
cmp ecx, 0x18
mov eax, esi
jb 0x45a672
mov ecx, dword [ebp - 0x4c]
sub ecx, edi
mov eax, dword [ebp + 8]
add dword [eax + 0x14], ecx
add dword [ebx + 0x20], ecx
mov eax, dword [ebx + 0xc]
mov edx, eax
and edx, 4
je 0x45a6e2
cmp dword [ebp - 0x4c], edi
je 0x45a6e2
mov eax, dword [ebp - 0x34]
sub eax, ecx
cmp dword [ebx + 0x14], 0
mov edx, dword [ebx + 0x1c]
jne 0x45a711
push ecx
push eax
push edx
call fcn.00466150
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 0x45a6ff
cmp dword [ebx + 0x14], 0
mov edi, dword [ebp - 0x20]
mov edx, edi
bswap edx
cmovne edx, edi
cmp edx, dword [ebx + 0x1c]
jne 0x45b467
mov dword [ebp - 0x18], 0
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x4c], esi
jmp 0x459dba
push ecx
push eax
push edx
call fcn.0042cb00
jmp 0x45a6ce
mov eax, dword [ebx + 0x4c]
jmp 0x459b34
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 eax, dword [eax + 0x28]
mov dword [ebp - 0x24], eax
mov edi, edx
call dword [section..00cfg]
push 1
push esi
mov esi, dword [ebp - 0x20]
push dword [ebp - 0x24]
call ecx
mov edx, edi
add esp, 0xc
mov dword [esi + 0x38], eax
test eax, eax
jne 0x459e65
mov eax, dword [ebp - 0x28]
mov dword [eax + 4], 0x3f52
mov esi, 0xfffffffc
jmp 0x459f7c
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x24]
lea eax, [eax + edx*8]
mov dword [ebp - 0x18], eax
add ecx, edx
jmp 0x45a7af
mov dword [ebp - 0x20], ebx
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x3c]
lea eax, [eax + ecx*8]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x1c]
add eax, ecx
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x1c], eax
jmp 0x45a7ca
mov esi, dword [ebp - 0x24]
mov eax, dword [ebp - 0x18]
lea eax, [eax + esi*8]
mov dword [ebp - 0x18], eax
add ecx, esi
mov dword [ebp - 0x1c], ecx
jmp 0x45a7c3
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x18]
lea ecx, [ecx + eax*8]
mov dword [ebp - 0x18], ecx
add dword [ebp - 0x1c], eax
mov dword [ebp - 0x24], 0
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x2c]
jmp 0x459e28
mov ebx, dword [ebp - 0x28]
mov dword [ebx + 0x2348], 0xffffffff
mov dword [ebx + 4], 0x3f3f
mov ecx, dword [ebp + 8]
mov eax, dword [ebx + 4]
jmp 0x45987e
sub edi, esi
mov eax, dword [ebp - 0x24]
sub eax, edi
push edi
push eax
mov esi, dword [ebp - 0x20]
push dword [esi + 0x38]
call fcn.0049e310
add esp, 0xc
mov dword [esi + 0x34], edi
jmp 0x459fa4
cmp dword [ebp - 0x18], 0xf
ja 0x45a843
sub dword [ebp - 0x24], 1
mov ecx, dword [ebp - 0x1c]
jb 0x45afee
movzx edx, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x18]
shl edx, cl
add dword [ebp - 0x20], edx
lea edx, [ecx + 8]
cmp ecx, 8
mov dword [ebp - 0x18], edx
jb 0x45a81c
test al, 2
je 0x45a854
cmp dword [ebp - 0x20], 0x8b1f
je 0x45a912
mov ecx, dword [ebx + 0x24]
test ecx, ecx
jne 0x45b449
test al, 1
mov edx, dword [ebp - 0x20]
je 0x45b414
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 0x45b414
mov eax, edx
and eax, 0xf
cmp eax, 8
jne 0x45b458
mov eax, edx
shr eax, 4
mov ecx, eax
and ecx, 0xf
lea edx, [ecx + 8]
mov esi, dword [ebx + 0x28]
test esi, esi
jne 0x45a8b1
mov dword [ebx + 0x28], edx
mov esi, edx
cmp ecx, 7
ja 0x45ae2c
cmp edx, esi
ja 0x45ae2c
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.00466150
add esp, 0xc
mov dword [ebx + 0x1c], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
xor eax, eax
bt dword [ebp - 0x20], 0xd
setae al
lea eax, [eax + eax + 0x3f3d]
mov dword [ebx + 4], eax
mov dword [ebp - 0x20], 0
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebx + 4]
jmp 0x45987e
cmp dword [ebx + 0x28], 0
je 0x45b53c
xor eax, eax
push eax
push eax
mov dword [ebp - 0x20], 0
push eax
call fcn.0042cb00
add esp, 0xc
mov dword [ebx + 0x1c], eax
lea ecx, [ebp - 0x14]
mov word [ecx], 0x8b1f
push 2
push ecx
push eax
call fcn.0042cb00
add esp, 0xc
mov dword [ebx + 0x1c], eax
mov dword [ebx + 4], 0x3f35
mov dword [ebp - 0x18], 0
mov ecx, dword [ebp + 8]
mov eax, dword [ebx + 4]
jmp 0x45987e
cmp edx, 4
jne 0x45a9ac
mov edx, dword [ebp - 0x34]
movd xmm0, dword [edx - 4]
pshufd xmm0, xmm0, 0
movdqu xmmword [edx], xmm0
add edx, esi
mov dword [ebp - 0x34], edx
cmp dword [ebp - 0x30], esi
je 0x459c37
mov edx, dword [ebp - 0x34]
movd xmm0, dword [edx - 4]
pshufd xmm0, xmm0, 0
sub ecx, dword [ebp - 0x30]
inc ecx
mov esi, dword [ebp - 0x2c]
movdqu xmmword [edx], xmm0
add edx, 0x10
add ecx, 0x10
jne 0x45a99b
jmp 0x459cd5
cmp edx, 8
je 0x45aa52
cmp edx, 2
je 0x45aa26
mov esi, edx
neg esi
mov eax, dword [ebp - 0x34]
mov edi, eax
mov ecx, dword [ebp - 0x30]
movdqu xmm0, xmmword [eax + esi]
movdqu xmmword [edi], xmm0
add edi, edx
sub ecx, edx
cmp edx, 7
lea edx, [edx + edx]
ja 0x45a9df
cmp edx, ecx
jb 0x45a9c6
mov esi, edi
sub esi, edx
dec ecx
mov edx, ecx
and edx, 0xf
movdqu xmm0, xmmword [esi]
movdqu xmmword [edi], xmm0
add edi, edx
inc edi
mov dword [ebp - 0x34], edi
cmp ecx, 0x10
jb 0x459c37
inc edx
shr ecx, 4
add esi, edx
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x34]
movdqu xmm0, xmmword [esi]
movdqu xmmword [edx], xmm0
add edx, 0x10
mov dword [ebp - 0x34], edx
add esi, 0x10
dec ecx
je 0x459d3f
jmp 0x45aa09
mov edi, dword [ebp - 0x34]
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 - 0x34], edi
cmp dword [ebp - 0x30], esi
je 0x459c37
jmp 0x45adf6
mov edx, dword [ebp - 0x34]
movq xmm0, qword [edx - 8]
pshufd xmm0, xmm0, 0x44
movdqu xmmword [edx], xmm0
add edx, esi
mov dword [ebp - 0x34], edx
cmp dword [ebp - 0x30], esi
je 0x459c37
mov edx, dword [ebp - 0x34]
movq xmm0, qword [edx - 8]
pshufd xmm0, xmm0, 0x44
sub ecx, dword [ebp - 0x30]
inc ecx
mov esi, dword [ebp - 0x2c]
movdqu xmmword [edx], xmm0
add edx, 0x10
add ecx, 0x10
jne 0x45aa85
jmp 0x459cd5
cmp dword [ebx + 0x14], 0
je 0x459dcf
cmp dword [ebp - 0x18], 0x1f
ja 0x45ade2
sub dword [ebp - 0x24], 1
mov ecx, dword [ebp - 0x1c]
jb 0x45afee
movzx edx, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x18]
shl edx, cl
add dword [ebp - 0x20], edx
lea edx, [ecx + 8]
cmp ecx, 0x18
mov dword [ebp - 0x18], edx
jb 0x45aaaa
mov dword [ebp - 0x18], 0
test al, 4
je 0x45aae8
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebx + 0x20]
jne 0x45b5b6
mov dword [ebp - 0x20], 0
mov ecx, dword [ebp + 8]
jmp 0x459dcf
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x3c], eax
jmp 0x459a45
mov eax, dword [ebp - 0x18]
cmp eax, 0xf
ja 0x45ab31
mov dword [ebp - 0x18], eax
sub dword [ebp - 0x24], 1
mov ecx, dword [ebp - 0x1c]
jb 0x45afee
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x20], eax
lea eax, [ecx + 8]
cmp ecx, 8
jb 0x45ab0a
mov ecx, dword [ebp - 0x20]
mov dword [ebx + 0x14], ecx
cmp cl, 8
jne 0x45b553
test ecx, 0xe000
jne 0x45b56f
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x45b58b
bt ecx, 9
jb 0x45b5ed
mov dword [ebx + 4], 0x3f36
xor eax, eax
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x18], eax
sub dword [ebp - 0x24], 1
mov ecx, dword [ebp - 0x1c]
jb 0x45afee
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x20], eax
lea eax, [ecx + 8]
cmp ecx, 0x18
jb 0x45ab71
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x45b548
test byte [ebx + 0x15], 2
jne 0x45b616
mov dword [ebx + 4], 0x3f37
xor eax, eax
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x18], eax
sub dword [ebp - 0x24], 1
mov ecx, dword [ebp - 0x1c]
jb 0x45afee
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x20], eax
lea eax, [ecx + 8]
cmp ecx, 8
jb 0x45abbd
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x45b5d4
mov edi, dword [ebp - 0x1c]
test byte [ebx + 0x15], 2
jne 0x45b63e
mov dword [ebx + 4], 0x3f38
mov eax, dword [ebx + 0x14]
xor edx, edx
bt eax, 0xa
mov dword [ebp - 0x18], 0
mov ecx, ebx
mov ebx, 0
jb 0x45b495
mov eax, dword [ecx + 0x24]
test eax, eax
mov dword [ebp - 0x1c], edi
jne 0x45b518
mov ecx, dword [ebp - 0x28]
mov dword [ecx + 4], 0x3f39
mov dword [ebp - 0x20], ebx
mov edx, dword [ebp - 0x18]
mov eax, dword [ecx + 0x14]
bt eax, 0xa
mov ebx, ecx
jb 0x45b205
mov dword [ebx + 0x44], 0
mov dword [ebx + 4], 0x3f3a
test byte [ebx + 0x15], 8
jne 0x45b2a0
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x45b524
mov dword [ebx + 0x44], 0
mov dword [ebx + 4], 0x3f3b
test byte [ebx + 0x15], 0x10
jne 0x45b33c
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x45b530
mov dword [ebx + 4], 0x3f3c
mov eax, dword [ebx + 0x14]
bt eax, 9
jb 0x45b17a
mov dword [ebp - 0x18], edx
mov ecx, dword [ebx + 0x24]
test ecx, ecx
jne 0x45b59e
xor eax, eax
push eax
push eax
push eax
call fcn.0042cb00
add esp, 0xc
mov dword [ebx + 0x1c], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
mov dword [ebx + 4], 0x3f3f
mov eax, dword [ebx + 4]
jmp 0x45987e
add eax, edx
mov ecx, eax
xor eax, eax
dec eax
shl eax, cl
movzx edi, si
not eax
mov esi, ebx
and esi, eax
mov ecx, edx
shr esi, cl
mov ecx, dword [ebp - 0x40]
lea ecx, [ecx + edi*4]
mov dword [ebp - 0x3c], ecx
movzx ecx, byte [ecx + esi*4 + 1]
mov dword [ebp - 0x38], ecx
add ecx, edx
mov edi, dword [ebp - 0x30]
cmp ecx, edi
mov ecx, edi
ja 0x45b667
mov eax, dword [ebp - 0x3c]
lea edi, [eax + esi*4]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x18], eax
mov eax, ecx
mov ecx, edx
shr ebx, cl
mov esi, ebx
movzx ecx, word [edi + 2]
mov word [ebp - 0x3c], cx
sub eax, edx
mov ebx, dword [ebp - 0x28]
add edx, dword [ebx + 0x2348]
mov ecx, eax
mov al, byte [edi]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x1c], edi
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x30], ecx
jmp 0x459af7
mov edx, dword [ebx + 0x6c]
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x1c]
jmp 0x45a201
mov edx, esi
mov eax, dword [ebp - 0x1c]
jmp 0x45a593
mov dword [ebp - 0x1c], ecx
jmp 0x45a472
mov dword [ebp - 0x24], 0
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x2c]
jmp 0x459e28
mov esi, eax
jmp 0x45a69b
mov eax, dword [ebp - 0x18]
jmp 0x45a54f
mov dword [ebp - 0x30], 0
jmp 0x459d3c
mov ecx, dword [ebp - 0x24]
cmp esi, ecx
cmovae esi, ecx
cmp esi, edx
cmovae esi, edx
test esi, esi
je 0x45ad7c
push esi
mov edi, eax
push eax
push dword [ebp - 0x34]
call fcn.0049e310
add esp, 0xc
sub dword [ebp - 0x24], esi
add edi, esi
mov dword [ebp - 0x1c], edi
mov eax, dword [ebp - 0x2c]
sub eax, esi
add dword [ebp - 0x34], esi
sub dword [ebx + 0x44], esi
mov ecx, dword [ebp + 8]
mov esi, eax
mov eax, dword [ebx + 4]
jmp 0x45987e
mov edx, dword [ebp - 0x18]
jmp 0x45aad1
mov esi, ecx
mov edi, ecx
mov esi, dword [ebp - 0x24]
jmp 0x459b70
mov esi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x34]
movzx edx, word [edx - 2]
movd xmm0, edx
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
sub ecx, dword [ebp - 0x30]
inc ecx
mov edx, dword [ebp - 0x34]
movdqu xmmword [edx], xmm0
add edx, 0x10
mov dword [ebp - 0x34], edx
add ecx, 0x10
jne 0x45ae12
mov ebx, dword [ebp - 0x28]
jmp 0x459c3a
add dword [ebp - 0x18], 0xfffffffc
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_window_size
mov dword [ebx + 4], 0x3f51
mov dword [ebp - 0x20], eax
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebx + 4]
jmp 0x45987e
mov dword [ebp - 0x48], 0xfffffffd
jmp 0x459e28
mov esi, 0xfffffffe
jmp 0x459f7c
mov eax, dword [ebx + 0xc]
jmp 0x459dc4
mov edx, dword [ebp - 0x18]
jmp 0x45ac9a
mov edx, dword [ebp - 0x18]
jmp 0x45ac7e
mov edx, dword [ebp - 0x18]
jmp 0x45ac5b
mov eax, dword [ebx + 0x4c]
mov ecx, dword [ebp - 0x1c]
jmp 0x4599ed
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x1c], esi
mov esi, eax
jmp 0x459e28
mov edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x1c]
cmp dword [ebp - 0x18], 0x1f
ja 0x45aed2
sub edi, 1
jb 0x45ae90
movzx eax, byte [esi]
inc esi
mov ecx, dword [ebp - 0x18]
shl eax, cl
add dword [ebp - 0x20], eax
lea eax, [ecx + 8]
cmp ecx, 0x18
mov dword [ebp - 0x18], eax
jb 0x45aeb6
mov edx, dword [ebp - 0x20]
bswap edx
mov ecx, dword [ebp - 0x28]
mov dword [ecx + 0x1c], edx
mov eax, dword [ebp + 8]
mov dword [eax + 0x30], edx
mov dword [ecx + 4], 0x3f3e
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x18], 0
jmp 0x45af00
mov edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x28]
cmp dword [eax + 0x10], 0
je 0x45af39
xor eax, eax
push eax
push eax
push eax
call fcn.00466150
add esp, 0xc
mov ebx, dword [ebp - 0x28]
mov dword [ebx + 0x1c], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
mov dword [ebx + 4], 0x3f3f
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x1c], esi
mov esi, eax
mov dword [ebp - 0x24], edi
jmp case.0x45988f.16191
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x34]
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [eax + 0x10], ecx
mov dword [eax], esi
mov dword [eax + 4], edi
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x20]
mov dword [eax + 0x3c], ecx
mov ecx, dword [ebp - 0x18]
mov dword [eax + 0x40], ecx
mov esi, 2
jmp 0x459f7c
mov edx, dword [ebp - 0x18]
mov ecx, ebx
jmp 0x45ac3e
mov edi, dword [ebp - 0x1c]
mov eax, dword [ebx + 0x14]
bt eax, 0xa
jb 0x45b489
mov ebx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
jmp 0x45ac20
mov eax, dword [ebp - 0x18]
cmp eax, 0xf
ja 0x45abe4
jmp 0x45abbd
mov eax, dword [ebp - 0x18]
cmp eax, 0x1f
ja 0x45ab98
jmp 0x45ab71
mov eax, dword [ebx + 0x60]
mov ecx, dword [ebx + 0x6c]
mov dword [ebp - 0x30], eax
cmp ecx, eax
mov eax, dword [ebp - 0x18]
jae 0x45a199
jmp 0x45a134
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_literal_length_code
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x45987e
mov dword [ebp - 0x18], 0
jmp 0x459e25
mov dword [ebp - 0x24], 0
jmp 0x459e25
cmp dword [ebx + 0x2344], 0
je 0x459bd3
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_distance_too_far_back
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x45987e
mov dword [ebp - 0x48], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_literal_lengths_set
jmp 0x45b054
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_code____missing_end_of_block
jmp 0x45b054
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.too_many_length_or_distance_symbols
jmp 0x45b054
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_distance_code
mov dword [ebx + 4], 0x3f51
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebx + 4]
jmp 0x45987e
mov dword [ebp - 0x48], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_distances_set
jmp 0x45b054
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x30]
jmp 0x45a7ba
cmp dword [ecx + 4], 0
jne 0x459f7c
jmp 0x459771
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp - 0x28]
mov dword [ebp - 0x24], 0
jmp 0x459e28
mov dword [ebp - 0x24], 0
mov ecx, dword [ebp + 8]
mov esi, edi
jmp 0x459e28
push eax
push ecx
push edx
call fcn.0042cb00
jmp 0x459f0a
mov dword [ebp - 0x24], 0
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], edx
jmp 0x45a7ca
mov ecx, dword [ebp - 0x30]
lea eax, [edx + ecx*8]
mov dword [ebp - 0x18], eax
add esi, ecx
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x1c], esi
jmp 0x45a7ca
mov dword [ebp - 0x24], 0
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x1c], ecx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x18], eax
jmp 0x45a7ca
mov dword [ebx + 4], 0x3f40
mov eax, dword [ecx]
mov dword [ebp - 0x1c], eax
mov eax, dword [ecx + 0xc]
mov dword [ebp - 0x34], eax
mov eax, 0x3f40
jmp 0x45977f
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov dword [edi + 4], 0x3f51
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x24], eax
mov esi, dword [ebp - 0x2c]
mov ebx, edi
mov eax, dword [edi + 4]
jmp 0x45987e
mov dword [ebp - 0x20], esi
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov dword [ebx + 4], 0x3f51
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x1c], edx
mov edx, dword [ebp - 0x44]
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x18], eax
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebx + 4]
jmp 0x45987e
mov edi, esi
mov esi, dword [ebp - 0x1c]
mov ecx, edx
cmp edx, 0xf
ja 0x45b1c0
sub dword [ebp - 0x24], 1
mov dword [ebp - 0x1c], esi
jb 0x45b1a7
movzx edx, byte [esi]
inc esi
shl edx, cl
add dword [ebp - 0x20], edx
lea edx, [ecx + 8]
cmp ecx, 8
mov dword [ebp - 0x18], edx
mov ecx, edx
jb 0x45b186
jmp 0x45b1c3
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp - 0x28]
mov eax, edi
mov dword [ebp - 0x24], 0
mov esi, edi
jmp 0x459e28
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x28]
test byte [ecx + 0xc], 4
mov dword [ebp - 0x1c], esi
je 0x45b1df
mov ecx, dword [ebp - 0x28]
movzx ecx, word [ecx + 0x1c]
cmp dword [ebp - 0x20], ecx
jne 0x45b6bd
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x18], 0
mov ebx, dword [ebp - 0x28]
mov esi, edi
jmp 0x45acaa
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebx + 4]
jmp 0x45987e
mov dword [ebp - 0x18], edx
mov ecx, dword [ebx + 0x44]
mov esi, dword [ebp - 0x24]
cmp ecx, esi
cmovb esi, ecx
test esi, esi
je 0x45b287
mov edx, dword [ebp - 0x28]
mov ebx, dword [edx + 0x24]
test ebx, ebx
je 0x45b252
mov edx, dword [ebx + 0x10]
test edx, edx
je 0x45b252
mov edi, dword [ebx + 0x14]
mov ebx, dword [ebx + 0x18]
sub edi, ecx
mov ecx, ebx
sub ecx, edi
jbe 0x45b252
add edx, edi
add edi, esi
cmp edi, ebx
cmovbe ecx, esi
push ecx
push dword [ebp - 0x1c]
push edx
call fcn.0049e310
add esp, 0xc
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x14]
bt eax, 9
jae 0x45b276
mov eax, dword [ebp - 0x28]
test byte [eax + 0xc], 4
je 0x45b276
push esi
push dword [ebp - 0x1c]
mov edi, dword [ebp - 0x28]
push dword [edi + 0x1c]
call fcn.0042cb00
add esp, 0xc
mov dword [edi + 0x1c], eax
sub dword [ebp - 0x24], esi
add dword [ebp - 0x1c], esi
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 0x44]
sub ecx, esi
mov dword [eax + 0x44], ecx
test ecx, ecx
mov ebx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x18]
je 0x45ac4d
mov dword [ebp - 0x18], edx
jmp 0x459e25
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x45a7c3
mov ebx, eax
xor esi, esi
jmp 0x45b2ce
lea ecx, [edx + 1]
mov edi, dword [ebp - 0x28]
mov dword [edi + 0x44], ecx
mov cl, byte [ebp - 0x30]
mov byte [eax + edx], cl
inc esi
cmp byte [ebp - 0x30], 0
je 0x45b2f5
cmp esi, ebx
jae 0x45b2f5
mov eax, dword [ebp - 0x1c]
mov al, byte [eax + esi]
mov byte [ebp - 0x30], al
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x45b2c3
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x45b2c3
mov edx, dword [ebp - 0x28]
mov edx, dword [edx + 0x44]
cmp edx, dword [ecx + 0x20]
jae 0x45b2c3
jmp 0x45b2b4
mov eax, dword [ebp - 0x28]
test byte [eax + 0x15], 2
je 0x45b31c
mov eax, dword [ebp - 0x28]
test byte [eax + 0xc], 4
je 0x45b31c
push esi
push dword [ebp - 0x1c]
mov edi, dword [ebp - 0x28]
push dword [edi + 0x1c]
call fcn.0042cb00
add esp, 0xc
mov dword [edi + 0x1c], eax
cmp byte [ebp - 0x30], 0
jne 0x45b3d4
sub ebx, esi
mov dword [ebp - 0x24], ebx
add dword [ebp - 0x1c], esi
mov ebx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x18]
jmp 0x45ac70
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x45a7c3
mov ebx, eax
xor esi, esi
jmp 0x45b36a
lea ecx, [edx + 1]
mov edi, dword [ebp - 0x28]
mov dword [edi + 0x44], ecx
mov cl, byte [ebp - 0x30]
mov byte [eax + edx], cl
inc esi
cmp byte [ebp - 0x30], 0
je 0x45b391
cmp esi, ebx
jae 0x45b391
mov eax, dword [ebp - 0x1c]
mov al, byte [eax + esi]
mov byte [ebp - 0x30], al
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x45b35f
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x45b35f
mov edx, dword [ebp - 0x28]
mov edx, dword [edx + 0x44]
cmp edx, dword [ecx + 0x28]
jae 0x45b35f
jmp 0x45b350
mov eax, dword [ebp - 0x28]
test byte [eax + 0x15], 2
je 0x45b3b8
mov eax, dword [ebp - 0x28]
test byte [eax + 0xc], 4
je 0x45b3b8
push esi
push dword [ebp - 0x1c]
mov edi, dword [ebp - 0x28]
push dword [edi + 0x1c]
call fcn.0042cb00
add esp, 0xc
mov dword [edi + 0x1c], eax
cmp byte [ebp - 0x30], 0
jne 0x45b3d4
sub ebx, esi
mov dword [ebp - 0x24], ebx
add dword [ebp - 0x1c], esi
mov ebx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x18]
jmp 0x45ac93
add dword [ebp - 0x1c], esi
sub ebx, esi
mov dword [ebp - 0x24], ebx
jmp 0x45a7ca
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x48], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_code_lengths_set
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x45987e
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_block_type
mov ecx, 0x3f51
jmp 0x45a036
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.incorrect_header_check
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x45987e
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_stored_block_lengths
mov dword [ebx + 4], 0x3f51
mov dword [ebp - 0x18], eax
mov eax, dword [ebx + 4]
jmp 0x45987e
mov dword [ecx + 0x30], 0xffffffff
mov eax, dword [ebx + 0xc]
jmp 0x45a85f
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_compression_method
jmp 0x45b054
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.incorrect_data_check
mov dword [ebx + 4], 0x3f51
mov dword [ebp - 0x18], esi
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x4c], esi
mov eax, dword [ebx + 4]
jmp 0x45987e
cmp dword [ebp - 0x18], 0xf
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x20]
ja 0x45b4c2
mov dword [ebp - 0x20], edx
sub dword [ebp - 0x24], 1
mov dword [ebp - 0x1c], edi
jb 0x45b08f
movzx edx, byte [edi]
inc edi
mov ecx, dword [ebp - 0x18]
shl edx, cl
add dword [ebp - 0x20], edx
lea edx, [ecx + 8]
cmp ecx, 8
mov dword [ebp - 0x18], edx
jb 0x45b498
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x20]
mov esi, edx
mov dword [ecx + 0x44], edx
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je 0x45b4d9
mov eax, esi
mov dword [ecx + 0x14], esi
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x14]
xor ebx, ebx
bt eax, 9
mov dword [ebp - 0x1c], edi
jae 0x45b509
mov eax, dword [ebp - 0x28]
test byte [eax + 0xc], 4
je 0x45b509
lea eax, [ebp - 0x14]
mov edx, esi
mov word [eax], dx
push 2
push eax
mov esi, dword [ebp - 0x28]
push dword [esi + 0x1c]
call fcn.0042cb00
add esp, 0xc
mov dword [esi + 0x1c], eax
mov dword [ebp - 0x18], 0
mov esi, dword [ebp - 0x2c]
jmp 0x45ac2e
mov dword [eax + 0x10], 0
jmp 0x45ac2e
mov dword [eax + 0x1c], 0
jmp 0x45ac70
mov dword [eax + 0x24], 0
jmp 0x45ac93
mov dword [ebx + 0x28], 0xf
jmp 0x45a91c
mov ecx, dword [ebp - 0x20]
mov dword [eax + 4], ecx
jmp 0x45aba3
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x45987e
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_header_flags_set
mov dword [ebx + 4], 0x3f51
mov eax, dword [ebx + 4]
jmp 0x45987e
mov ecx, dword [ebp - 0x20]
shr ecx, 8
and ecx, 1
mov dword [eax], ecx
mov ecx, dword [ebx + 0x14]
jmp 0x45ab57
shr eax, 9
and eax, 1
mov dword [ecx + 0x2c], eax
mov eax, dword [ebx + 0x24]
mov dword [eax + 0x30], 1
jmp 0x45acb5
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_length_check
mov dword [ebx + 4], 0x3f51
mov dword [ebp - 0x18], edx
mov ecx, eax
mov eax, dword [ebx + 4]
jmp 0x45987e
mov edx, dword [ebp - 0x20]
movzx ecx, dl
mov dword [eax + 8], ecx
mov eax, edx
shr eax, 8
mov ecx, dword [ebx + 0x24]
mov dword [ecx + 0xc], eax
jmp 0x45abef
test byte [ebx + 0xc], 4
je 0x45ab61
lea eax, [ebp - 0x14]
mov ecx, dword [ebp - 0x20]
mov word [eax], cx
push 2
push eax
push dword [ebx + 0x1c]
call fcn.0042cb00
add esp, 0xc
mov dword [ebx + 0x1c], eax
jmp 0x45ab61
test byte [ebx + 0xc], 4
je 0x45abad
lea eax, [ebp - 0x14]
mov ecx, dword [ebp - 0x20]
mov dword [eax], ecx
push 4
push eax
push dword [ebx + 0x1c]
call fcn.0042cb00
add esp, 0xc
mov dword [ebx + 0x1c], eax
jmp 0x45abad
test byte [ebx + 0xc], 4
je 0x45abfc
lea eax, [ebp - 0x14]
mov ecx, dword [ebp - 0x20]
mov word [eax], cx
push 2
push eax
push dword [ebx + 0x1c]
call fcn.0042cb00
add esp, 0xc
mov dword [ebx + 0x1c], eax
jmp 0x45abfc
mov dword [ebp - 0x50], eax
mov eax, ecx
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x40]
mov dword [ebp - 0x20], ebx
sub dword [ebp - 0x18], 1
jb 0x45b075
movzx esi, byte [ecx]
inc ecx
mov dword [ebp - 0x40], ecx
mov ecx, eax
shl esi, cl
mov ebx, dword [ebp - 0x20]
add ebx, esi
add eax, 8
mov esi, ebx
and esi, dword [ebp - 0x50]
mov ecx, edx
shr esi, cl
mov ecx, dword [ebp - 0x3c]
lea edi, [ecx + esi*4]
movzx ecx, byte [edi + 1]
mov dword [ebp - 0x38], ecx
add ecx, edx
cmp ecx, eax
jbe 0x45ad24
jmp 0x45b678
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.header_crc_mismatch
mov ebx, dword [ebp - 0x28]
mov dword [ebx + 4], 0x3f51
mov esi, edi
mov eax, dword [ebx + 4]
jmp 0x45987e