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

Disassembly:
sub esp, 0x3c
push ebx
push ebp
push esi
mov ebp, ecx
push edi
mov dword [esp + 0x38], ebp
call fcn.0053c65b
test eax, eax
jne case.0x53c9bf.31
cmp dword [ebp + 0xc], eax
je case.0x53c9bf.31
cmp dword [ebp], eax
jne 0x53c95c
cmp dword [ebp + 4], eax
jne case.0x53c9bf.31
mov esi, dword [ebp + 0x1c]
mov ecx, 0x3f40
mov eax, dword [esi + 4]
cmp eax, 0x3f3f
jne 0x53c973
mov dword [esi + 4], ecx
mov eax, ecx
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 4]
mov ebx, dword [esi + 0x3c]
mov edi, dword [esi + 0x40]
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], ecx
xor ecx, ecx
mov dword [esp + 0x14], edx
add eax, 0xffffc0cc
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x44], edx
mov dword [esp + 0x34], ecx
jmp 0x53ca6c
mov ecx, edi
mov dword [esp + 0x40], edi
jmp dword [eax*4 + 0x53de53]
cmp dword [esi + 0xc], 0
jne 0x53c9d8
mov dword [esi + 4], 0x3f40
jmp 0x53ca64
push 0x10
pop eax
cmp edi, eax
jae 0x53ca14
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
push 0x10
inc eax
mov dword [esp + 0x24], ebx
pop ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edi
cmp edi, ecx
jb 0x53c9e3
test byte [esi + 0xc], 2
je 0x53ca82
cmp ebx, 0x8b1f
jne 0x53ca82
xor edi, edi
cmp dword [esi + 0x28], edi
jne 0x53ca30
mov dword [esi + 0x28], 0xf
mov byte [esp + 0x28], bl
lea edx, [esp + 0x28]
shr ebx, 8
xor ecx, ecx
push 2
mov dword [esi + 0x1c], edi
mov byte [esp + 0x2d], bl
call fcn.0053f80b
mov ebx, edi
mov dword [esi + 0x1c], eax
pop ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
mov dword [esi + 4], 0x3f35
mov edx, dword [esp + 0x14]
mov eax, dword [esi + 4]
sub eax, 0x3f34
push 0x1f
pop ecx
cmp eax, ecx
jbe 0x53c9b9
push 0xfffffffffffffffe
pop eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov eax, dword [esi + 0x24]
test eax, eax
je 0x53ca8d
or dword [eax + 0x30], 0xffffffff
test byte [esi + 0xc], 1
je 0x53cb3a
movzx ecx, bl
mov eax, ebx
shl ecx, 8
xor edx, edx
shr eax, 8
add eax, ecx
push 0x1f
pop ecx
div ecx
test edx, edx
jne 0x53cb36
mov eax, ebx
and al, 0xf
cmp al, 8
je 0x53cacb
mov dword [ebp + 0x18], str.unknown_compression_method
mov dword [esi + 4], 0x3f51
jmp 0x53ca60
mov eax, dword [esi + 0x28]
sub edi, 4
shr ebx, 4
mov ecx, ebx
mov dword [esp + 0x20], ebx
and ecx, 0xf
mov dword [esp + 0x24], edi
add ecx, 8
test eax, eax
jne 0x53caed
mov dword [esi + 0x28], ecx
mov eax, ecx
cmp ecx, 0xf
ja 0x53cb2d
cmp ecx, eax
ja 0x53cb2d
xor edx, edx
shr ebx, 8
inc edx
not ebx
mov eax, edx
mov dword [esi + 0x1c], edx
shl eax, cl
and ebx, 2
mov dword [esi + 0x18], eax
xor eax, eax
or ebx, 0x3f3d
mov dword [esi + 0x14], eax
mov dword [ebp + 0x30], edx
mov edi, eax
mov dword [esi + 4], ebx
mov ebx, eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
jmp 0x53ca60
mov dword [ebp + 0x18], str.invalid_window_size
jmp 0x53cac2
mov edx, dword [esp + 0x14]
mov dword [ebp + 0x18], str.incorrect_header_check
mov dword [esi + 4], 0x3f51
jmp 0x53ca64
push 0x10
pop eax
cmp edi, eax
jae 0x53cb89
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
push 0x10
inc eax
mov dword [esp + 0x24], ebx
pop ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edi
cmp edi, ecx
jb 0x53cb58
mov dword [esi + 0x14], ebx
cmp bl, 8
je 0x53cb9a
mov dword [ebp + 0x18], str.unknown_compression_method
jmp 0x53cb41
test ebx, 0xe000
je 0x53cbab
mov dword [ebp + 0x18], str.unknown_header_flags_set
jmp 0x53cb41
mov edi, dword [esi + 0x24]
mov ecx, ebx
shr ecx, 8
test edi, edi
je 0x53cbbe
mov eax, ecx
and eax, 1
mov dword [edi], eax
test dword [esi + 0x14], 0x200
je 0x53cbeb
test byte [esi + 0xc], 4
je 0x53cbeb
mov byte [esp + 0x29], cl
lea edx, [esp + 0x28]
mov ecx, dword [esi + 0x1c]
push 2
mov byte [esp + 0x2c], bl
call fcn.0053f80b
mov edx, dword [esp + 0x18]
pop ecx
mov dword [esi + 0x1c], eax
mov ecx, dword [esp + 0x18]
xor eax, eax
mov ebx, eax
mov dword [esi + 4], 0x3f36
mov edi, eax
test edx, edx
je 0x53cf4a
movzx eax, byte [ecx]
dec edx
mov ecx, edi
add edi, 8
shl eax, cl
mov ecx, dword [esp + 0x18]
add ebx, eax
inc ecx
cmp edi, 0x20
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ecx
jb 0x53cbfc
mov eax, dword [esi + 0x24]
test eax, eax
je 0x53cc2d
mov dword [eax + 4], ebx
test dword [esi + 0x14], 0x200
je 0x53cc6f
test byte [esi + 0xc], 4
je 0x53cc6f
mov ecx, dword [esi + 0x1c]
lea edx, [esp + 0x28]
mov eax, ebx
mov byte [esp + 0x28], bl
shr eax, 8
mov byte [esp + 0x29], al
mov eax, ebx
shr eax, 0x10
shr ebx, 0x18
push 4
mov byte [esp + 0x2e], al
mov byte [esp + 0x2f], bl
call fcn.0053f80b
mov edx, dword [esp + 0x18]
pop ecx
mov dword [esi + 0x1c], eax
xor eax, eax
mov dword [esi + 4], 0x3f37
mov ebx, eax
mov edi, eax
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
add edi, 8
mov eax, dword [esp + 0x18]
push 0x10
pop ecx
inc eax
cmp edi, ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
jb 0x53cc80
mov edi, dword [esi + 0x24]
mov ecx, ebx
shr ecx, 8
test edi, edi
je 0x53ccc1
movzx eax, bl
mov dword [edi + 8], eax
mov eax, dword [esi + 0x24]
mov dword [eax + 0xc], ecx
test dword [esi + 0x14], 0x200
je 0x53ccee
test byte [esi + 0xc], 4
je 0x53ccee
mov byte [esp + 0x29], cl
lea edx, [esp + 0x28]
mov ecx, dword [esi + 0x1c]
push 2
mov byte [esp + 0x2c], bl
call fcn.0053f80b
mov edx, dword [esp + 0x18]
pop ecx
mov dword [esi + 0x1c], eax
xor ecx, ecx
mov dword [esi + 4], 0x3f38
mov ebx, ecx
mov edi, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
jmp 0x53cd2d
mov edi, dword [esp + 0x40]
cmp edi, 0x20
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x3c], ebx
jmp 0x53cc19
mov eax, dword [esp + 0x18]
mov edi, ecx
mov dword [esp + 0x3c], ebx
cmp ecx, 0x10
jmp 0x53cc9f
xor ecx, ecx
test dword [esi + 0x14], 0x400
je 0x53cdb3
push 0x10
pop eax
cmp edi, eax
jae 0x53cd6a
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
push 0x10
inc eax
pop ecx
mov dword [esp + 0x18], eax
cmp edi, ecx
jb 0x53cd41
mov eax, dword [esi + 0x24]
mov dword [esi + 0x44], ebx
test eax, eax
je 0x53cd77
mov dword [eax + 0x14], ebx
test dword [esi + 0x14], 0x200
je 0x53cda3
test byte [esi + 0xc], 4
je 0x53cda3
mov ecx, dword [esi + 0x1c]
lea edx, [esp + 0x28]
mov byte [esp + 0x28], bl
shr ebx, 8
push 2
mov byte [esp + 0x2d], bl
call fcn.0053f80b
pop ecx
mov dword [esi + 0x1c], eax
xor eax, eax
mov ebx, eax
mov edi, eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
jmp 0x53cdbd
mov eax, dword [esi + 0x24]
test eax, eax
je 0x53cdbd
mov dword [eax + 0x10], ecx
mov edx, dword [esp + 0x14]
mov dword [esi + 4], 0x3f39
test dword [esi + 0x14], 0x400
je 0x53ce99
mov eax, dword [esi + 0x44]
mov ecx, edx
cmp eax, edx
cmovbe ecx, eax
mov dword [esp + 0x40], ecx
test ecx, ecx
je 0x53ce91
cmp dword [esi + 0x24], 0
mov edx, dword [esp + 0x14]
mov dword [esp + 0x3c], eax
je 0x53ce56
mov ecx, dword [esi + 0x24]
mov dword [esp + 0x3c], eax
mov ecx, dword [ecx + 0x10]
test ecx, ecx
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x40]
je 0x53ce56
mov edx, dword [esi + 0x24]
mov edx, dword [edx + 0x14]
sub edx, eax
mov eax, dword [esi + 0x24]
mov dword [esp + 0x3c], edx
mov edx, dword [eax + 0x18]
mov eax, dword [esp + 0x3c]
add eax, ecx
cmp eax, edx
mov eax, dword [esp + 0x3c]
jbe 0x53ce33
sub edx, eax
jmp 0x53ce35
mov edx, ecx
add eax, dword [esp + 0x48]
push edx
push dword [esp + 0x1c]
push eax
call fcn.0060e770
mov eax, dword [esi + 0x44]
add esp, 0xc
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x3c], eax
test dword [esi + 0x14], 0x200
je 0x53ce7a
test byte [esi + 0xc], 4
je 0x53ce7a
mov edx, dword [esp + 0x18]
push ecx
mov ecx, dword [esi + 0x1c]
call fcn.0053f80b
mov edx, dword [esp + 0x18]
pop ecx
mov dword [esi + 0x1c], eax
mov ecx, dword [esp + 0x40]
sub edx, ecx
mov eax, dword [esp + 0x3c]
add dword [esp + 0x18], ecx
sub eax, ecx
mov dword [esp + 0x14], edx
mov dword [esi + 0x44], eax
test eax, eax
jne 0x53cf4a
xor ecx, ecx
mov dword [esi + 4], 0x3f3a
mov dword [esi + 0x44], ecx
jmp 0x53cea9
xor ecx, ecx
test dword [esi + 0x14], 0x800
je 0x53cfb4
test edx, edx
je 0x53cf4a
mov edi, dword [esp + 0x18]
mov eax, ecx
mov cl, byte [eax + edi]
inc eax
mov byte [esp + 0x13], cl
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x53cef6
mov ebp, dword [ecx + 0x1c]
mov dword [esp + 0x40], ebp
test ebp, ebp
je 0x53cef6
mov ebp, dword [esi + 0x44]
cmp ebp, dword [ecx + 0x20]
jae 0x53cef6
mov bl, byte [esp + 0x13]
mov ecx, ebp
mov ebp, dword [esp + 0x40]
mov byte [ecx + ebp], bl
inc dword [esi + 0x44]
cmp byte [esp + 0x13], 0
je 0x53cf01
cmp eax, edx
jb 0x53cec4
test dword [esi + 0x14], 0x200
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x48], eax
je 0x53cf39
test byte [esi + 0xc], 4
je 0x53cf39
mov edx, dword [esp + 0x18]
mov ecx, dword [esi + 0x1c]
push eax
call fcn.0053f80b
mov edx, dword [esp + 0x18]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x4c]
pop ecx
add dword [esp + 0x18], eax
sub edx, eax
cmp byte [esp + 0x13], 0
mov dword [esp + 0x14], edx
je 0x53cfbe
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
mov dword [ebp + 0xc], edx
mov edx, dword [esp + 0x18]
mov dword [ebp + 0x10], ecx
mov dword [ebp], edx
mov dword [ebp + 4], eax
mov dword [esi + 0x3c], ebx
xor ebx, ebx
mov dword [esi + 0x40], edi
mov edi, dword [esp + 0x30]
cmp dword [esi + 0x2c], ebx
jne 0x53cf8d
cmp edi, dword [ebp + 0x10]
je 0x53ddab
cmp dword [esi + 4], 0x3f51
jge 0x53ddab
mov edx, dword [ebp + 0xc]
mov eax, edi
sub eax, dword [ebp + 0x10]
mov ecx, ebp
push eax
call fcn.0053c854
pop ecx
test eax, eax
je 0x53ddab
mov dword [esi + 4], 0x3f52
push 0xfffffffffffffffc
jmp 0x53ca79
mov eax, dword [esi + 0x24]
test eax, eax
je 0x53cfbe
mov dword [eax + 0x1c], ecx
xor ecx, ecx
mov dword [esi + 4], 0x3f3b
mov dword [esi + 0x44], ecx
jmp 0x53cfce
xor ecx, ecx
test dword [esi + 0x14], 0x1000
je 0x53d075
test edx, edx
je 0x53cf4a
mov edi, dword [esp + 0x18]
mov eax, ecx
mov cl, byte [eax + edi]
inc eax
mov byte [esp + 0x13], cl
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x53d01b
mov ebp, dword [ecx + 0x24]
mov dword [esp + 0x40], ebp
test ebp, ebp
je 0x53d01b
mov ebp, dword [esi + 0x44]
cmp ebp, dword [ecx + 0x28]
jae 0x53d01b
mov bl, byte [esp + 0x13]
mov ecx, ebp
mov ebp, dword [esp + 0x40]
mov byte [ecx + ebp], bl
inc dword [esi + 0x44]
cmp byte [esp + 0x13], 0
je 0x53d026
cmp eax, edx
jb 0x53cfe9
test dword [esi + 0x14], 0x200
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x48], eax
je 0x53d05e
test byte [esi + 0xc], 4
je 0x53d05e
mov edx, dword [esp + 0x18]
mov ecx, dword [esi + 0x1c]
push eax
call fcn.0053f80b
mov edx, dword [esp + 0x18]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x4c]
pop ecx
add dword [esp + 0x18], eax
sub edx, eax
cmp byte [esp + 0x13], 0
mov dword [esp + 0x14], edx
jne 0x53cf4a
jmp 0x53d07f
mov eax, dword [esi + 0x24]
test eax, eax
je 0x53d07f
mov dword [eax + 0x24], ecx
mov dword [esi + 4], 0x3f3c
mov eax, dword [esi + 0x14]
test eax, 0x200
je 0x53d0f7
push 0x10
pop eax
cmp edi, eax
jae 0x53d0cc
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
push 0x10
inc eax
mov dword [esp + 0x24], ebx
pop ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edi
cmp edi, ecx
jb 0x53d09b
test byte [esi + 0xc], 4
je 0x53d0e6
movzx eax, word [esi + 0x1c]
cmp ebx, eax
je 0x53d0e6
mov dword [ebp + 0x18], str.header_crc_mismatch
jmp 0x53cb41
xor eax, eax
mov ebx, eax
mov edi, eax
mov eax, dword [esi + 0x14]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x53d111
sar eax, 9
and eax, 1
mov dword [ecx + 0x2c], eax
mov eax, dword [esi + 0x24]
mov dword [eax + 0x30], 1
xor ecx, ecx
mov dword [esi + 0x1c], ecx
mov dword [ebp + 0x30], ecx
mov dword [esi + 4], 0x3f3f
jmp 0x53ca64
cmp edi, 0x20
jae 0x53d155
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
inc eax
mov dword [esp + 0x18], eax
cmp edi, 0x20
jb 0x53d12e
mov ecx, ebx
mov edi, 0xff00
mov eax, ebx
and ecx, edi
shl eax, 0x10
add ecx, eax
mov eax, ebx
shr eax, 8
and eax, edi
shl ecx, 8
shr ebx, 0x18
add eax, ecx
add eax, ebx
xor ecx, ecx
mov dword [esi + 0x1c], eax
mov ebx, ecx
mov dword [ebp + 0x30], eax
mov edi, ecx
mov dword [esi + 4], 0x3f3e
jmp 0x53d18d
xor ecx, ecx
cmp dword [esi + 0x10], ecx
je 0x53dd61
xor eax, eax
inc eax
mov dword [esi + 0x1c], eax
mov dword [ebp + 0x30], eax
mov dword [esi + 4], 0x3f3f
jmp 0x53d1aa
xor ecx, ecx
cmp dword [esi + 8], ecx
je 0x53d1cc
mov ecx, edi
mov dword [esi + 4], 0x3f4e
and ecx, 7
shr ebx, cl
sub edi, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
jmp 0x53ca64
cmp edi, 3
jae 0x53d1fe
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
inc eax
mov dword [esp + 0x18], eax
cmp edi, 3
jb 0x53d1d5
xor ecx, ecx
mov eax, ebx
shr ebx, 1
and eax, 1
mov dword [esi + 8], eax
mov eax, ebx
and eax, 3
sub eax, ecx
je 0x53d25e
sub eax, 1
je 0x53d239
sub eax, 1
je 0x53d230
sub eax, 1
jne 0x53d265
mov dword [ebp + 0x18], str.invalid_block_type
mov dword [esi + 4], 0x3f51
jmp 0x53d265
mov dword [esi + 4], 0x3f44
jmp 0x53d265
mov dword [esi + 0x50], 0x6f36b8
mov dword [esi + 0x58], 9
mov dword [esi + 0x54], 0x6f3610
mov dword [esi + 0x5c], 5
mov dword [esi + 4], 0x3f47
jmp 0x53d265
mov dword [esi + 4], 0x3f41
shr ebx, 2
sub edi, 3
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
jmp 0x53ca64
mov ecx, edi
and ecx, 7
sub edi, ecx
shr ebx, cl
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
cmp edi, 0x20
jae 0x53d2c1
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
inc eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edi
cmp edi, 0x20
jb 0x53d292
mov eax, ebx
movzx ecx, bx
not eax
shr eax, 0x10
cmp ecx, eax
je 0x53d2db
mov dword [ebp + 0x18], str.invalid_stored_block_lengths
jmp 0x53cb41
xor eax, eax
mov dword [esi + 0x44], ecx
mov ebx, eax
mov edi, eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
mov dword [esi + 4], 0x3f43
mov ecx, dword [esi + 0x44]
test ecx, ecx
je 0x53d119
cmp ecx, edx
mov eax, edx
cmovbe eax, ecx
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
cmova eax, ecx
mov dword [esp + 0x48], eax
test eax, eax
je 0x53dda2
push eax
push dword [esp + 0x1c]
push dword [esp + 0x34]
call fcn.0060e770
mov eax, dword [esp + 0x54]
add esp, 0xc
mov edx, dword [esp + 0x14]
add dword [esp + 0x18], eax
sub edx, eax
sub dword [esp + 0x1c], eax
add dword [esp + 0x2c], eax
sub dword [esi + 0x44], eax
mov dword [esp + 0x14], edx
jmp 0x53ca64
cmp edi, 0xe
jae 0x53d37d
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
inc eax
mov dword [esp + 0x18], eax
cmp edi, 0xe
jb 0x53d356
mov eax, ebx
sub edi, 0xe
shr ebx, 5
push 0x1f
pop ecx
and ecx, eax
mov dword [esp + 0x24], edi
mov eax, ebx
add ecx, 0x101
and eax, 0x1f
shr ebx, 5
inc eax
mov dword [esi + 0x64], ecx
mov dword [esp + 0x48], eax
mov dword [esi + 0x68], eax
mov eax, ebx
and eax, 0xf
shr ebx, 4
add eax, 4
mov dword [esp + 0x20], ebx
mov dword [esi + 0x60], eax
cmp ecx, 0x11e
ja 0x53d3d5
cmp dword [esp + 0x48], 0x1e
ja 0x53d3d5
and dword [esi + 0x6c], 0
mov dword [esi + 4], 0x3f45
jmp case.0x53c9bf.17
mov dword [ebp + 0x18], str.too_many_length_or_distance_symbols
jmp 0x53cb41
cmp edi, 3
jae 0x53d411
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
inc eax
mov dword [esp + 0x18], eax
cmp edi, 3
jb 0x53d3ea
mov eax, dword [esi + 0x6c]
mov ecx, ebx
and ecx, 7
shr ebx, 3
mov dword [esp + 0x20], ebx
movzx eax, word [eax*2 + 0x6f3690]
mov word [esi + eax*2 + 0x74], cx
inc dword [esi + 0x6c]
sub edi, 3
mov dword [esp + 0x24], edi
mov eax, dword [esi + 0x6c]
cmp eax, dword [esi + 0x60]
jb 0x53d3e1
jmp 0x53d457
movzx eax, word [eax*2 + 0x6f3690]
xor ecx, ecx
mov word [esi + eax*2 + 0x74], cx
mov eax, dword [esi + 0x6c]
inc eax
mov dword [esi + 0x6c], eax
cmp eax, 0x13
jb 0x53d441
lea eax, [esi + 0x534]
lea ecx, [esi + 0x70]
mov dword [esi + 0x50], eax
mov dword [ecx], eax
lea edx, [esi + 0x58]
lea eax, [esi + 0x2f4]
mov dword [edx], 7
push eax
push edx
push ecx
push 0x13
lea edx, [esi + 0x74]
xor ecx, ecx
call fcn.0053fad6
mov edx, dword [esp + 0x24]
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x53d4a5
mov dword [ebp + 0x18], str.invalid_code_lengths_set
jmp 0x53cb41
and dword [esi + 0x6c], 0
mov dword [esi + 4], 0x3f46
mov eax, dword [esi + 0x68]
add eax, dword [esi + 0x64]
cmp dword [esi + 0x6c], eax
jae 0x53d6e2
mov ecx, dword [esi + 0x58]
xor eax, eax
inc eax
shl eax, cl
dec eax
mov dword [esp + 0x48], eax
jmp 0x53d4f3
test edx, edx
je 0x53cf4a
mov eax, dword [esp + 0x18]
mov ecx, edi
dec edx
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
shl eax, cl
add ebx, eax
inc dword [esp + 0x18]
mov eax, dword [esp + 0x48]
add edi, 8
mov ecx, dword [esi + 0x50]
and eax, ebx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [esp + 0x40], eax
cmp ecx, edi
ja 0x53d4ce
mov ecx, eax
shr ecx, 0x10
movzx ebp, cx
mov dword [esp + 0x3c], ebp
push 0x10
pop ebp
cmp cx, bp
mov dword [esp + 0x48], ecx
mov ebp, dword [esp + 0x38]
jae 0x53d550
shr eax, 8
movzx ecx, al
mov eax, dword [esi + 0x6c]
sub edi, ecx
shr ebx, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x20], ebx
mov word [esi + eax*2 + 0x74], cx
inc dword [esi + 0x6c]
mov ecx, dword [esi + 0x6c]
mov dword [esp + 0x24], edi
jmp 0x53d6c1
push 0x10
pop ecx
cmp word [esp + 0x3c], cx
jne 0x53d5d4
shr eax, 8
movzx eax, al
mov dword [esp + 0x40], eax
lea ecx, [eax + 2]
mov dword [esp + 0x48], ecx
cmp edi, ecx
jae 0x53d59f
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
inc eax
mov dword [esp + 0x18], eax
cmp edi, dword [esp + 0x48]
jb 0x53d573
mov eax, dword [esp + 0x40]
mov ecx, eax
sub edi, eax
mov eax, dword [esi + 0x6c]
shr ebx, cl
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
test eax, eax
je 0x53d6d4
movzx eax, word [esi + eax*2 + 0x72]
mov edx, ebx
and edx, 3
shr ebx, 2
add edx, 3
mov dword [esp + 0x40], eax
sub edi, 2
jmp 0x53d687
cmp word [esp + 0x42], 0x11
movzx ecx, ah
jne 0x53d62f
lea eax, [ecx + 3]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x48], eax
cmp edi, eax
jae 0x53d61e
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
inc eax
mov dword [esp + 0x18], eax
cmp edi, dword [esp + 0x48]
jb 0x53d5f2
mov ecx, dword [esp + 0x40]
shr ebx, cl
mov edx, ebx
and edx, 7
add edx, 3
shr ebx, 3
push 0xfffffffffffffffd
jmp 0x53d67d
lea eax, [ecx + 7]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x48], eax
cmp edi, eax
jae 0x53d66e
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
inc eax
mov dword [esp + 0x18], eax
cmp edi, dword [esp + 0x48]
jb 0x53d642
mov ecx, dword [esp + 0x40]
shr ebx, cl
mov edx, ebx
and edx, 0x7f
add edx, 0xb
shr ebx, 7
push 0xfffffffffffffff9
pop eax
sub eax, ecx
add edi, eax
and dword [esp + 0x40], 0
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi + 0x68]
add ecx, dword [esi + 0x64]
mov dword [esp + 0x48], eax
add eax, edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
cmp eax, ecx
ja 0x53d6d4
mov ecx, dword [esp + 0x48]
mov ebp, dword [esp + 0x40]
mov word [esi + ecx*2 + 0x74], bp
mov ecx, dword [esi + 0x6c]
lea ecx, [ecx + 1]
mov dword [esi + 0x6c], ecx
sub edx, 1
jne 0x53d6aa
mov ebp, dword [esp + 0x38]
mov eax, dword [esi + 0x68]
add eax, dword [esi + 0x64]
cmp ecx, eax
jae 0x53d6e2
mov edx, dword [esp + 0x14]
jmp 0x53d4bf
mov dword [ebp + 0x18], str.invalid_bit_length_repeat
mov dword [esi + 4], 0x3f51
cmp dword [esi + 4], 0x3f51
je 0x53ca60
xor eax, eax
cmp word [esi + 0x274], ax
jne 0x53d706
mov dword [ebp + 0x18], str.invalid_code____missing_end_of_block
jmp 0x53cac2
lea eax, [esi + 0x534]
lea ecx, [esi + 0x70]
mov dword [esi + 0x50], eax
mov dword [ecx], eax
lea edx, [esi + 0x58]
lea eax, [esi + 0x2f4]
mov dword [edx], 9
push eax
push edx
push ecx
push dword [esi + 0x64]
xor ecx, ecx
lea edx, [esi + 0x74]
inc ecx
call fcn.0053fad6
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x53d74d
mov dword [ebp + 0x18], str.invalid_literal_lengths_set
jmp 0x53cac2
lea ecx, [esi + 0x70]
mov eax, dword [ecx]
lea edx, [esi + 0x5c]
mov dword [esi + 0x54], eax
lea eax, [esi + 0x2f4]
push eax
mov eax, dword [esi + 0x64]
push edx
push ecx
push dword [esi + 0x68]
add eax, 0x3a
mov dword [edx], 6
push 2
pop ecx
lea edx, [esi + eax*2]
call fcn.0053fad6
mov edx, dword [esp + 0x24]
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x34], ecx
test ecx, ecx
je case.0x53c9bf.19
mov dword [ebp + 0x18], str.invalid_distances_set
jmp 0x53cb41
mov dword [esi + 4], 0x3f48
cmp edx, 6
jb 0x53d817
mov eax, dword [esp + 0x1c]
cmp eax, 0x102
jb 0x53d817
mov ecx, dword [esp + 0x2c]
mov dword [ebp + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [ebp + 0xc], ecx
mov ecx, ebp
mov dword [ebp + 4], edx
mov edx, dword [esp + 0x30]
mov dword [ebp], eax
mov dword [esi + 0x3c], ebx
mov dword [esi + 0x40], edi
call fcn.0053ff06
cmp dword [esi + 4], 0x3f3f
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 4]
mov ebx, dword [esi + 0x3c]
mov edi, dword [esi + 0x40]
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
jne 0x53ca64
or dword [esi + 0x1bc8], 0xffffffff
jmp 0x53ca64
mov ecx, dword [esi + 0x58]
xor eax, eax
and dword [esi + 0x1bc8], 0
inc eax
shl eax, cl
dec eax
mov dword [esp + 0x48], eax
jmp 0x53d852
test edx, edx
je 0x53cf4a
mov eax, dword [esp + 0x18]
mov ecx, edi
dec edx
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
shl eax, cl
add ebx, eax
inc dword [esp + 0x18]
mov eax, dword [esp + 0x48]
add edi, 8
mov ecx, dword [esi + 0x50]
and eax, ebx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, edi
ja 0x53d82d
test al, al
je 0x53d907
test al, 0xf0
jne 0x53d907
mov ecx, eax
shr ecx, 8
movzx edx, cl
mov dword [esp + 0x24], edx
movzx ecx, al
add ecx, edx
shr eax, 0x10
xor edx, edx
mov dword [esp + 0x40], eax
inc edx
shl edx, cl
lea ecx, [edx - 1]
mov edx, ecx
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x24]
and edx, ebx
shr edx, cl
mov ecx, dword [esi + 0x50]
add edx, eax
mov eax, dword [ecx + edx*4]
mov edx, dword [esp + 0x14]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, dword [esp + 0x24]
cmp ecx, edi
jbe 0x53d8f9
test edx, edx
je 0x53cf4a
mov eax, dword [esp + 0x18]
mov ecx, edi
dec edx
add edi, 8
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
shl eax, cl
mov ecx, dword [esp + 0x24]
add ebx, eax
mov eax, dword [esp + 0x48]
inc dword [esp + 0x18]
and eax, ebx
shr eax, cl
add eax, dword [esp + 0x40]
mov ecx, dword [esi + 0x50]
mov eax, dword [ecx + eax*4]
jmp 0x53d8b0
mov ecx, dword [esp + 0x24]
shr ebx, cl
sub edi, ecx
mov dword [esi + 0x1bc8], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [esi + 0x1bc8], ecx
sub edi, ecx
shr ebx, cl
mov ecx, eax
shr ecx, 0x10
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
mov dword [esi + 0x44], ecx
test al, al
jne 0x53d939
mov dword [esi + 4], 0x3f4d
jmp 0x53ca64
test al, 0x20
je 0x53d949
or dword [esi + 0x1bc8], 0xffffffff
jmp 0x53d119
test al, 0x40
je 0x53d959
mov dword [ebp + 0x18], str.invalid_literal_length_code
jmp 0x53cb41
movzx eax, al
and eax, 0xf
mov dword [esi + 4], 0x3f49
mov dword [esi + 0x4c], eax
mov edx, dword [esi + 0x4c]
test edx, edx
je 0x53d9b2
jmp 0x53d997
mov eax, dword [esp + 0x14]
test eax, eax
je 0x53cf4e
dec eax
mov ecx, edi
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
movzx eax, byte [eax]
shl eax, cl
add ebx, eax
inc dword [esp + 0x18]
add edi, 8
cmp edi, edx
jb 0x53d972
xor eax, eax
mov ecx, edx
inc eax
sub edi, edx
shl eax, cl
dec eax
and eax, ebx
shr ebx, cl
add dword [esi + 0x44], eax
add dword [esi + 0x1bc8], edx
mov eax, dword [esi + 0x44]
mov edx, dword [esp + 0x14]
mov dword [esi + 0x1bcc], eax
mov dword [esi + 4], 0x3f4a
mov ecx, dword [esi + 0x5c]
xor eax, eax
inc eax
shl eax, cl
dec eax
mov dword [esp + 0x48], eax
jmp 0x53d9fa
test edx, edx
je 0x53cf4a
mov eax, dword [esp + 0x18]
mov ecx, edi
dec edx
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
shl eax, cl
add ebx, eax
inc dword [esp + 0x18]
mov eax, dword [esp + 0x48]
add edi, 8
mov ecx, dword [esi + 0x54]
and eax, ebx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, edi
ja 0x53d9d5
test al, 0xf0
jne 0x53daa5
mov ecx, eax
shr ecx, 8
movzx edx, cl
mov dword [esp + 0x40], edx
movzx ecx, al
add ecx, edx
shr eax, 0x10
xor edx, edx
mov dword [esp + 0x3c], eax
inc edx
shl edx, cl
lea ecx, [edx - 1]
mov edx, ecx
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x40]
and edx, ebx
shr edx, cl
mov ecx, dword [esi + 0x54]
add edx, eax
mov eax, dword [ecx + edx*4]
mov edx, dword [esp + 0x40]
jmp 0x53da8b
mov eax, dword [esp + 0x14]
test eax, eax
je 0x53cf4e
dec eax
mov ecx, edi
mov dword [esp + 0x14], eax
add edi, 8
mov eax, dword [esp + 0x18]
movzx eax, byte [eax]
shl eax, cl
mov ecx, edx
add ebx, eax
mov eax, dword [esp + 0x48]
inc dword [esp + 0x18]
and eax, ebx
shr eax, cl
add eax, dword [esp + 0x3c]
mov ecx, dword [esi + 0x54]
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, edx
cmp ecx, edi
ja 0x53da52
mov ecx, edx
sub edi, edx
shr ebx, cl
add dword [esi + 0x1bc8], edx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [esi + 0x1bc8], ecx
sub edi, ecx
shr ebx, cl
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
test al, 0x40
je 0x53dacf
mov dword [ebp + 0x18], str.invalid_distance_code
jmp 0x53cac2
mov ecx, eax
mov dword [esi + 4], 0x3f4b
shr ecx, 0x10
movzx eax, al
and eax, 0xf
mov dword [esi + 0x48], ecx
mov dword [esi + 0x4c], eax
mov edx, dword [esi + 0x4c]
test edx, edx
je 0x53db38
jmp 0x53db15
mov eax, dword [esp + 0x14]
test eax, eax
je 0x53cf4e
dec eax
mov ecx, edi
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
movzx eax, byte [eax]
shl eax, cl
add ebx, eax
inc dword [esp + 0x18]
add edi, 8
cmp edi, edx
jb 0x53daf0
xor eax, eax
mov ecx, edx
inc eax
sub edi, edx
shl eax, cl
dec eax
mov dword [esp + 0x24], edi
and eax, ebx
shr ebx, cl
add dword [esi + 0x48], eax
add dword [esi + 0x1bc8], edx
mov dword [esp + 0x20], ebx
mov edx, dword [esp + 0x14]
mov dword [esi + 4], 0x3f4c
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x53cf4a
mov ecx, dword [esp + 0x30]
sub ecx, eax
mov eax, dword [esi + 0x48]
cmp eax, ecx
jbe 0x53dba4
sub eax, ecx
cmp eax, dword [esi + 0x30]
jbe 0x53db78
cmp dword [esi + 0x1bc4], 0
je 0x53db78
mov dword [ebp + 0x18], str.invalid_distance_too_far_back
jmp 0x53cb41
cmp eax, dword [esi + 0x34]
jbe 0x53db8a
sub eax, dword [esi + 0x34]
mov ecx, dword [esi + 0x2c]
sub ecx, eax
add ecx, dword [esi + 0x38]
jmp 0x53db92
mov ecx, dword [esi + 0x38]
sub ecx, eax
add ecx, dword [esi + 0x34]
mov edx, dword [esi + 0x44]
cmp eax, edx
mov dword [esp + 0x40], edx
cmovbe edx, eax
mov eax, dword [esp + 0x40]
jmp 0x53dbaf
mov ecx, dword [esp + 0x2c]
sub ecx, eax
mov eax, dword [esi + 0x44]
mov edx, eax
cmp edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x2c]
cmova edx, dword [esp + 0x1c]
sub dword [esp + 0x1c], edx
sub eax, edx
mov dword [esi + 0x44], eax
sub ecx, ebp
mov al, byte [ecx + ebp]
mov byte [ebp], al
inc ebp
sub edx, 1
jne 0x53dbc7
cmp dword [esi + 0x44], 0
mov edx, dword [esp + 0x14]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x38]
jne 0x53ca64
mov dword [esi + 4], 0x3f48
jmp 0x53ca64
cmp dword [esp + 0x1c], 0
je 0x53cf4a
mov ecx, dword [esp + 0x2c]
mov al, byte [esi + 0x44]
mov byte [ecx], al
inc ecx
dec dword [esp + 0x1c]
mov dword [esp + 0x2c], ecx
jmp 0x53dbe9
xor eax, eax
cmp dword [esi + 0xc], eax
je 0x53dcf8
cmp edi, 0x20
jae 0x53dc59
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
inc eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edi
cmp edi, 0x20
jb 0x53dc28
xor eax, eax
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x1c]
add dword [ebp + 0x14], ecx
add dword [esi + 0x20], ecx
test byte [esi + 0xc], 4
mov dword [esp + 0x30], ecx
je 0x53dc9e
test ecx, ecx
je 0x53dc9e
mov edx, dword [esp + 0x2c]
push dword [esp + 0x30]
sub edx, ecx
mov ecx, dword [esi + 0x1c]
cmp dword [esi + 0x14], eax
je 0x53dc8e
call fcn.0053f80b
jmp 0x53dc93
call fcn.0053f5c4
mov edx, dword [esp + 0x18]
mov dword [esi + 0x1c], eax
pop ecx
mov dword [ebp + 0x30], eax
test byte [esi + 0xc], 4
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
je 0x53dcea
mov ecx, ebx
mov eax, ebx
shl eax, 0x10
and ecx, 0xff00
add ecx, eax
mov eax, ebx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
mov eax, ebx
shr eax, 0x18
add ecx, eax
xor eax, eax
cmp dword [esi + 0x14], eax
cmovne ecx, ebx
cmp ecx, dword [esi + 0x1c]
je 0x53dcec
mov dword [ebp + 0x18], str.incorrect_data_check
jmp 0x53cb41
xor eax, eax
mov ebx, eax
mov edi, eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
mov dword [esi + 4], 0x3f4f
cmp dword [esi + 0xc], 0
je 0x53dd8a
xor eax, eax
cmp dword [esi + 0x14], eax
je 0x53dd8a
cmp edi, 0x20
jae 0x53dd4a
mov eax, dword [esp + 0x18]
test edx, edx
je 0x53cf4a
movzx eax, byte [eax]
mov ecx, edi
shl eax, cl
dec edx
add ebx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x18]
add edi, 8
inc eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edi
cmp edi, 0x20
jb 0x53dd19
xor eax, eax
test byte [esi + 0xc], 4
je 0x53dd86
cmp ebx, dword [esi + 0x20]
je 0x53dd86
mov dword [ebp + 0x18], str.incorrect_length_check
jmp 0x53cb41
mov eax, dword [esp + 0x2c]
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [ebp], eax
mov dword [ebp + 4], edx
mov dword [esi + 0x3c], ebx
mov dword [esi + 0x40], edi
push 2
jmp 0x53ca79
mov ebx, eax
mov edi, eax
mov dword [esi + 4], 0x3f50
xor ecx, ecx
inc ecx
mov dword [esp + 0x34], ecx
jmp 0x53cf4a
push 0xfffffffffffffffd
pop ecx
jmp 0x53dd94
mov eax, dword [esp + 0x14]
jmp 0x53cf52
mov edx, dword [esp + 0x44]
sub edx, dword [ebp + 4]
sub edi, dword [ebp + 0x10]
add dword [ebp + 8], edx
add dword [ebp + 0x14], edi
add dword [esi + 0x20], edi
test byte [esi + 0xc], 4
mov dword [esp + 0x44], edx
je 0x53ddf1
test edi, edi
je 0x53ddf1
mov edx, dword [ebp + 0xc]
mov ecx, dword [esi + 0x1c]
sub edx, edi
push edi
cmp dword [esi + 0x14], ebx
je 0x53dde1
call fcn.0053f80b
jmp 0x53dde6
call fcn.0053f5c4
mov edx, dword [esp + 0x48]
mov dword [esi + 0x1c], eax
pop ecx
mov dword [ebp + 0x30], eax
cmp dword [esi + 4], 0x3f47
je 0x53de03
cmp dword [esi + 4], 0x3f42
jne 0x53de08
mov ebx, 0x100
mov ecx, dword [esi + 8]
neg ecx
mov dword [esp + 0x48], 0x80
sbb ecx, ecx
xor eax, eax
and ecx, 0x40
cmp dword [esi + 4], 0x3f3f
cmove eax, dword [esp + 0x48]
add ecx, ebx
add eax, ecx
add eax, dword [esi + 0x40]
mov dword [ebp + 0x2c], eax
mov eax, dword [esp + 0x34]
test edx, edx
jne 0x53ca7a
test edi, edi
jne 0x53ca7a
push 0xfffffffffffffffb
test eax, eax
pop ecx
cmove eax, ecx
jmp 0x53ca7a