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

Disassembly:
sub esp, 0x44
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0x30], esi
call fcn.00435d7f
test eax, eax
jne case.default.0x436087
mov eax, dword [esi + 0xc]
mov dword [esp + 0x2c], eax
test eax, eax
je case.default.0x436087
mov eax, dword [esi]
mov dword [esp + 0x14], eax
test eax, eax
jne 0x436009
cmp dword [esi + 4], eax
jne case.default.0x436087
mov ebp, dword [esi + 0x1c]
mov edx, 0x3f40
mov ecx, dword [ebp + 4]
cmp ecx, 0x3f3f
jne 0x43602e
mov dword [ebp + 4], edx
mov ecx, edx
mov eax, dword [esi + 0xc]
mov dword [esp + 0x2c], eax
mov eax, dword [esi]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 4]
mov edx, dword [ebp + 0x3c]
mov ebx, dword [ebp + 0x40]
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], eax
xor eax, eax
mov dword [esp + 0x38], eax
lea eax, [ecx - 0x3f34]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x44], edi
cmp eax, 0x1e
ja case.default.0x436087
mov dword [esp + 0x3c], 0x1f
mov dword [esp + 0x48], 0x3f51
mov dword [esp + 0x4c], 1
mov dword [esp + 0x50], 0x3f46
jmp dword [eax*4 + 0x43751d]
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x4360a1
mov dword [ebp + 4], 0x3f40
jmp 0x4366b4
push 0x10
pop ecx
cmp ebx, ecx
jae 0x4360de
mov eax, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
inc eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], ebx
cmp ebx, 0x10
jb 0x4360ac
mov eax, dword [ebp + 0xc]
test al, 2
je 0x43613b
cmp edx, 0x8b1f
jne 0x43613b
xor ebx, ebx
cmp dword [ebp + 0x28], ebx
jne 0x4360f8
mov dword [ebp + 0x28], 0xf
push ebx
xor edx, edx
xor ecx, ecx
call fcn.0043804d
mov dword [ebp + 0x1c], eax
lea edx, [esp + 0x28]
mov eax, dword [esp + 0x40]
mov byte [esp + 0x28], al
mov byte [esp + 0x29], 0x8b
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.0043804d
pop ecx
mov edx, ebx
mov dword [ebp + 0x1c], eax
pop ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 4], 0x3f35
jmp 0x4366b4
and dword [ebp + 0x14], 0
mov ecx, dword [ebp + 0x24]
test ecx, ecx
je 0x43614d
or dword [ecx + 0x30], 0xffffffff
mov eax, dword [ebp + 0xc]
test al, 1
je 0x4361f8
movzx ecx, dl
mov eax, edx
shr eax, 8
xor edx, edx
shl ecx, 8
add eax, ecx
div dword [esp + 0x3c]
test edx, edx
mov edx, dword [esp + 0x18]
jne 0x4361f8
mov eax, edx
and al, 0xf
cmp al, 8
je 0x436185
mov dword [esi + 0x18], str.unknown_compression_method
jmp 0x4361ff
mov eax, dword [ebp + 0x28]
sub ebx, 4
shr edx, 4
mov ecx, edx
mov dword [esp + 0x18], edx
and ecx, 0xf
mov dword [esp + 0x20], ebx
add ecx, 8
test eax, eax
jne 0x4361a7
mov dword [ebp + 0x28], ecx
mov eax, ecx
cmp ecx, 0xf
ja 0x4361ef
cmp ecx, eax
ja 0x4361ef
xor eax, eax
xor ebx, ebx
inc eax
xor edx, edx
shl eax, cl
xor ecx, ecx
push ebx
mov dword [ebp + 0x18], eax
call fcn.004375ed
mov edx, dword [esp + 0x1c]
shr edx, 8
not edx
mov dword [ebp + 0x1c], eax
and edx, 2
mov dword [esi + 0x30], eax
or edx, 0x3f3d
mov dword [ebp + 4], edx
mov edx, ebx
pop ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jmp 0x4366b4
mov dword [esi + 0x18], str.invalid_window_size
jmp 0x4361ff
mov dword [esi + 0x18], str.incorrect_header_check
mov dword [ebp + 4], 0x3f51
jmp 0x4366b4
push 0x10
pop eax
cmp ebx, eax
jae 0x436247
mov eax, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
push 0x10
inc eax
mov dword [esp + 0x1c], edx
pop ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], ebx
cmp ebx, ecx
jb 0x436216
mov dword [ebp + 0x14], edx
cmp dl, 8
jne 0x43617c
test edx, 0xe000
je 0x436264
mov dword [esi + 0x18], str.unknown_header_flags_set
jmp 0x4361ff
mov edi, dword [ebp + 0x24]
mov ecx, edx
shr ecx, 8
mov eax, edx
test edi, edi
je 0x43627c
mov eax, ecx
and eax, 1
mov dword [edi], eax
mov eax, dword [ebp + 0x14]
test eax, 0x200
je 0x4362a3
test byte [ebp + 0xc], 4
je 0x4362a3
mov byte [esp + 0x24], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x25], cl
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.0043804d
pop ecx
mov dword [ebp + 0x1c], eax
mov edi, dword [esp + 0x1c]
xor eax, eax
mov edx, eax
mov dword [ebp + 4], 0x3f36
mov dword [esp + 0x18], edx
mov ebx, eax
cmp ebx, 0x20
jae 0x4362ec
mov eax, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
inc eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
cmp ebx, 0x20
jb 0x4362c1
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x4362f6
mov dword [eax + 4], edx
test dword [ebp + 0x14], 0x200
je 0x436334
test byte [ebp + 0xc], 4
je 0x436334
mov eax, edx
mov byte [esp + 0x24], dl
shr eax, 8
mov byte [esp + 0x25], al
mov eax, edx
shr edx, 0x18
shr eax, 0x10
mov byte [esp + 0x27], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x26], al
mov ecx, dword [ebp + 0x1c]
push 4
call fcn.0043804d
pop ecx
mov dword [ebp + 0x1c], eax
xor eax, eax
mov dword [ebp + 4], 0x3f37
mov edx, eax
mov ebx, eax
mov dword [esp + 0x18], edx
push 0x10
pop eax
cmp ebx, eax
jae 0x43637d
mov eax, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
push 0x10
inc eax
mov dword [esp + 0x1c], edx
pop ecx
mov dword [esp + 0x14], eax
cmp ebx, ecx
jb 0x436350
mov edi, dword [ebp + 0x24]
mov ecx, edx
shr ecx, 8
test edi, edi
je 0x436395
movzx eax, dl
mov dword [edi + 8], eax
mov eax, dword [ebp + 0x24]
mov dword [eax + 0xc], ecx
test dword [ebp + 0x14], 0x200
je 0x4363be
test byte [ebp + 0xc], 4
je 0x4363be
mov byte [esp + 0x24], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x25], cl
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.0043804d
pop ecx
mov dword [ebp + 0x1c], eax
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov edx, ecx
mov dword [ebp + 4], 0x3f38
mov ebx, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jmp 0x4363db
xor ecx, ecx
test dword [ebp + 0x14], 0x400
je 0x436463
push 0x10
pop eax
cmp ebx, eax
jae 0x43641c
mov eax, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
push 0x10
inc eax
mov dword [esp + 0x1c], edx
pop ecx
mov dword [esp + 0x14], eax
cmp ebx, ecx
jb 0x4363ef
mov eax, dword [ebp + 0x24]
mov dword [ebp + 0x44], edx
test eax, eax
je 0x436429
mov dword [eax + 0x14], edx
test dword [ebp + 0x14], 0x200
je 0x436455
test byte [ebp + 0xc], 4
je 0x436455
mov byte [esp + 0x24], dl
shr edx, 8
mov byte [esp + 0x25], dl
lea edx, [esp + 0x24]
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.0043804d
pop ecx
mov dword [ebp + 0x1c], eax
xor eax, eax
mov ebx, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], ebx
jmp 0x43646d
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x43646d
mov dword [eax + 0x10], ecx
mov dword [ebp + 4], 0x3f39
mov eax, dword [ebp + 0x14]
test eax, 0x400
je 0x436509
mov ecx, dword [ebp + 0x44]
cmp ecx, dword [esp + 0x1c]
cmovbe edi, ecx
test edi, edi
je 0x436501
mov edx, dword [ebp + 0x24]
test edx, edx
je 0x4364d5
mov esi, dword [edx + 0x10]
test esi, esi
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x30]
je 0x4364d5
mov edx, dword [edx + 0x14]
sub edx, ecx
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx + 0x18]
lea eax, [edi + edx]
cmp eax, ecx
jbe 0x4364bc
sub ecx, edx
jmp 0x4364be
mov ecx, edi
mov eax, dword [esp + 0x40]
push ecx
push dword [esp + 0x18]
add eax, edx
push eax
call fcn.0043bb90
mov eax, dword [ebp + 0x14]
add esp, 0xc
test eax, 0x200
je 0x4364f3
test byte [ebp + 0xc], 4
je 0x4364f3
mov edx, dword [esp + 0x14]
mov ecx, dword [ebp + 0x1c]
push edi
call fcn.0043804d
pop ecx
mov dword [ebp + 0x1c], eax
sub dword [esp + 0x1c], edi
add dword [esp + 0x14], edi
sub dword [ebp + 0x44], edi
mov ecx, dword [ebp + 0x44]
test ecx, ecx
jne 0x437410
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov dword [ebp + 0x44], ecx
mov dword [ebp + 4], 0x3f3a
jmp 0x43651d
xor ecx, ecx
test dword [ebp + 0x14], 0x800
je 0x4365aa
test edi, edi
je 0x437410
mov esi, dword [esp + 0x1c]
mov edi, ecx
mov edx, dword [esp + 0x14]
mov al, byte [edi + edx]
inc edi
mov byte [esp + 0x13], al
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x436568
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x436564
mov ecx, dword [ebp + 0x44]
cmp ecx, dword [eax + 0x20]
jae 0x436564
mov al, byte [esp + 0x13]
mov byte [ecx + edx], al
inc dword [ebp + 0x44]
mov edx, dword [esp + 0x14]
mov cl, byte [esp + 0x13]
test cl, cl
je 0x436574
cmp edi, esi
jb 0x43653c
test dword [ebp + 0x14], 0x200
mov esi, dword [esp + 0x30]
je 0x436598
test byte [ebp + 0xc], 4
je 0x436598
mov ecx, dword [ebp + 0x1c]
push edi
call fcn.0043804d
pop ecx
mov cl, byte [esp + 0x13]
mov dword [ebp + 0x1c], eax
sub dword [esp + 0x1c], edi
add dword [esp + 0x14], edi
test cl, cl
jne 0x437410
jmp 0x4365b4
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x4365b4
mov dword [eax + 0x1c], ecx
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov dword [ebp + 0x44], ecx
mov dword [ebp + 4], 0x3f3b
jmp 0x4365c8
xor ecx, ecx
test dword [ebp + 0x14], 0x1000
je 0x436655
test edi, edi
je 0x437410
mov esi, dword [esp + 0x1c]
mov edi, ecx
mov edx, dword [esp + 0x14]
mov al, byte [edi + edx]
inc edi
mov byte [esp + 0x13], al
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x436613
mov edx, dword [eax + 0x24]
test edx, edx
je 0x43660f
mov ecx, dword [ebp + 0x44]
cmp ecx, dword [eax + 0x28]
jae 0x43660f
mov al, byte [esp + 0x13]
mov byte [ecx + edx], al
inc dword [ebp + 0x44]
mov edx, dword [esp + 0x14]
mov cl, byte [esp + 0x13]
test cl, cl
je 0x43661f
cmp edi, esi
jb 0x4365e7
test dword [ebp + 0x14], 0x200
mov esi, dword [esp + 0x30]
je 0x436643
test byte [ebp + 0xc], 4
je 0x436643
mov ecx, dword [ebp + 0x1c]
push edi
call fcn.0043804d
pop ecx
mov cl, byte [esp + 0x13]
mov dword [ebp + 0x1c], eax
sub dword [esp + 0x1c], edi
add dword [esp + 0x14], edi
test cl, cl
jne 0x437410
jmp 0x43665f
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x43665f
mov dword [eax + 0x24], ecx
mov edx, dword [esp + 0x18]
mov dword [ebp + 4], 0x3f3c
mov edi, dword [ebp + 0x14]
test edi, 0x200
jne 0x4366fe
xor ecx, ecx
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x436694
mov edx, dword [esp + 0x4c]
sar edi, 9
and edi, edx
mov dword [eax + 0x2c], edi
mov eax, dword [ebp + 0x24]
mov dword [eax + 0x30], edx
push ecx
xor edx, edx
xor ecx, ecx
call fcn.0043804d
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
pop ecx
mov dword [ebp + 4], 0x3f3f
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov ecx, dword [ebp + 4]
lea eax, [ecx - 0x3f34]
cmp eax, 0x1e
jbe switch.0x00436087
push 0xfffffffffffffffe
pop eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437410
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
add ebx, 8
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
push 0x10
pop eax
cmp ebx, eax
jb 0x4366d1
test byte [ebp + 0xc], 4
je 0x436723
movzx eax, word [ebp + 0x1c]
cmp edx, eax
je 0x436723
mov dword [esi + 0x18], str.header_crc_mismatch
mov dword [ebp + 4], 0x3f51
jmp 0x4366b0
xor ecx, ecx
mov ebx, ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], ebx
jmp 0x43667b
cmp ebx, 0x20
jae 0x436768
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 0x20
jb 0x43673d
mov ecx, edx
mov ebx, 0xff00
mov eax, edx
and ecx, ebx
shl eax, 0x10
add ecx, eax
mov eax, edx
shr eax, 8
and eax, ebx
shl ecx, 8
shr edx, 0x18
add eax, ecx
add eax, edx
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
xor eax, eax
mov edx, eax
mov dword [ebp + 4], 0x3f3e
mov dword [esp + 0x18], edx
mov ebx, eax
jmp 0x4367a4
xor eax, eax
cmp dword [ebp + 0x10], eax
je 0x4373d3
push eax
xor edx, edx
xor ecx, ecx
call fcn.004375ed
mov edx, dword [esp + 0x1c]
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
pop ecx
mov dword [ebp + 4], 0x3f3f
cmp dword [ebp + 8], 0
je 0x4367ec
mov ecx, ebx
mov dword [ebp + 4], 0x3f4e
and ecx, 7
shr edx, cl
sub ebx, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jmp 0x4366b4
cmp ebx, 3
jae 0x436820
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 3
jb 0x4367f5
mov eax, edx
shr edx, 1
and eax, 1
mov dword [ebp + 8], eax
mov eax, edx
and eax, 3
sub eax, 0
je 0x436881
sub eax, 1
je 0x43685c
sub eax, 1
je 0x436853
sub eax, 1
jne 0x436888
mov dword [esi + 0x18], str.invalid_block_type
mov dword [ebp + 4], 0x3f51
jmp 0x436888
mov dword [ebp + 4], 0x3f44
jmp 0x436888
mov dword [ebp + 0x50], 0x474ec0
mov dword [ebp + 0x58], 9
mov dword [ebp + 0x54], 0x4756e8
mov dword [ebp + 0x5c], 5
mov dword [ebp + 4], 0x3f47
jmp 0x436888
mov dword [ebp + 4], 0x3f41
shr edx, 2
sub ebx, 3
jmp 0x4361e2
mov ecx, ebx
and ecx, 7
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jae 0x4368dc
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jb 0x4368ad
mov eax, edx
movzx ecx, dx
not eax
shr eax, 0x10
cmp ecx, eax
je 0x4368f6
mov dword [esi + 0x18], str.invalid_stored_block_lengths
jmp 0x4361ff
xor eax, eax
mov dword [ebp + 0x44], ecx
mov edx, eax
mov ebx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 4], 0x3f43
mov ecx, dword [ebp + 0x44]
test ecx, ecx
je 0x436957
cmp ecx, edi
mov eax, edi
mov edi, dword [esp + 0x28]
cmovbe eax, ecx
cmp eax, edi
cmovbe edi, eax
test edi, edi
je 0x437410
mov ecx, dword [esp + 0x2c]
push edi
push dword [esp + 0x18]
push ecx
call fcn.0043bb90
sub dword [esp + 0x28], edi
add esp, 0xc
add dword [esp + 0x14], edi
sub dword [esp + 0x28], edi
add dword [esp + 0x2c], edi
sub dword [ebp + 0x44], edi
jmp 0x4366ac
mov dword [ebp + 4], 0x3f3f
jmp 0x4366b4
cmp ebx, 0xe
jae 0x436997
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 0xe
jb 0x43696c
mov edi, dword [esp + 0x3c]
mov ecx, edx
shr edx, 5
and ecx, edi
and edi, edx
add ecx, 0x101
shr edx, 5
inc edi
mov eax, edx
mov dword [ebp + 0x64], ecx
and eax, 0xf
shr edx, 4
add eax, 4
mov dword [ebp + 0x68], edi
sub ebx, 0xe
mov dword [ebp + 0x60], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
cmp ecx, 0x11e
ja 0x4369eb
cmp edi, 0x1e
ja 0x4369eb
and dword [ebp + 0x6c], 0
mov edi, dword [esp + 0x1c]
mov dword [ebp + 4], 0x3f45
jmp case.0x436087.16197
mov dword [esi + 0x18], str.too_many_length_or_distance_symbols
jmp 0x43671a
cmp ebx, 3
jae 0x436a2b
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 3
jb 0x436a00
mov eax, dword [ebp + 0x6c]
mov ecx, edx
and ecx, 7
shr edx, 3
mov dword [esp + 0x18], edx
movzx eax, word [eax*2 + 0x4756c0]
mov word [ebp + eax*2 + 0x74], cx
inc dword [ebp + 0x6c]
sub ebx, 3
mov dword [esp + 0x20], ebx
mov eax, dword [ebp + 0x6c]
cmp eax, dword [ebp + 0x60]
jb 0x4369f7
cmp eax, 0x13
jae 0x436a79
mov eax, dword [ebp + 0x6c]
xor ecx, ecx
movzx eax, word [eax*2 + 0x4756c0]
mov word [ebp + eax*2 + 0x74], cx
inc dword [ebp + 0x6c]
cmp dword [ebp + 0x6c], 0x13
jb 0x436a5e
lea eax, [ebp + 0x534]
lea edx, [ebp + 0x70]
mov dword [ebp + 0x50], eax
mov dword [edx], eax
lea ecx, [ebp + 0x58]
lea eax, [ebp + 0x2f4]
mov dword [ecx], 7
push eax
push ecx
push edx
push 0x13
lea edx, [ebp + 0x74]
xor ecx, ecx
call fcn.0043781a
mov edx, dword [esp + 0x28]
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
je 0x436ac0
mov dword [esi + 0x18], str.invalid_code_lengths_set
jmp 0x4361ff
mov eax, dword [esp + 0x50]
mov ecx, eax
and dword [ebp + 0x6c], 0
mov dword [ebp + 4], eax
mov eax, dword [ebp + 0x68]
add eax, dword [ebp + 0x64]
cmp dword [ebp + 0x6c], eax
jae 0x436ce3
mov ecx, dword [ebp + 0x58]
xor eax, eax
lea edi, [eax + 1]
shl edi, cl
jmp 0x436b11
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437410
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
add ebx, 8
mov ecx, dword [ebp + 0x50]
lea eax, [edi - 1]
and eax, edx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [esp + 0x40], eax
cmp ecx, ebx
ja 0x436ae8
mov edi, eax
push 0x10
shr edi, 0x10
pop ecx
cmp di, cx
jae 0x436b5e
shr eax, 8
movzx ecx, al
mov eax, dword [ebp + 0x6c]
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov word [ebp + eax*2 + 0x74], di
inc dword [ebp + 0x6c]
mov ecx, dword [ebp + 0x6c]
jmp 0x436cb6
jne 0x436bd4
mov ecx, eax
shr ecx, 8
movzx edi, cl
add edi, 2
cmp ebx, edi
jae 0x436b9e
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x437410
dec ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x14]
movzx edx, byte [ecx]
mov ecx, ebx
shl edx, cl
add ebx, 8
add dword [esp + 0x18], edx
inc dword [esp + 0x14]
cmp ebx, edi
jb 0x436b6f
mov edx, dword [esp + 0x18]
movzx ecx, ah
mov eax, dword [ebp + 0x6c]
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
test eax, eax
je 0x436cc9
movzx eax, word [ebp + eax*2 + 0x72]
mov edi, edx
and edi, 3
shr edx, 2
add edi, 3
mov dword [esp + 0x40], eax
sub ebx, 2
jmp 0x436c81
cmp word [esp + 0x42], 0x11
movzx ecx, ah
jne 0x436c2c
lea edi, [ecx + 3]
mov dword [esp + 0x40], ecx
cmp ebx, edi
jae 0x436c1b
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437410
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
add ebx, 8
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
cmp ebx, edi
jb 0x436bea
mov ecx, dword [esp + 0x40]
shr edx, cl
mov edi, edx
and edi, 7
add edi, 3
shr edx, 3
push 0xfffffffffffffffd
jmp 0x436c77
lea edi, [ecx + 7]
mov dword [esp + 0x40], ecx
cmp ebx, edi
jae 0x436c68
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437410
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
add ebx, 8
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
cmp ebx, edi
jb 0x436c37
mov ecx, dword [esp + 0x40]
shr edx, cl
mov edi, edx
and edi, 0x7f
add edi, 0xb
shr edx, 7
push 0xfffffffffffffff9
pop eax
sub eax, ecx
add ebx, eax
and dword [esp + 0x40], 0
mov ecx, dword [ebp + 0x6c]
mov eax, dword [ebp + 0x68]
add ecx, edi
add eax, dword [ebp + 0x64]
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
cmp ecx, eax
ja 0x436cd5
mov esi, dword [esp + 0x40]
mov eax, dword [ebp + 0x6c]
mov word [ebp + eax*2 + 0x74], si
mov ecx, dword [ebp + 0x6c]
lea ecx, [ecx + 1]
mov dword [ebp + 0x6c], ecx
sub edi, 1
jne 0x436c9c
mov esi, dword [esp + 0x30]
mov eax, dword [ebp + 0x68]
add eax, dword [ebp + 0x64]
cmp ecx, eax
jb 0x436adc
mov ecx, dword [ebp + 4]
jmp 0x436ce3
mov dword [esi + 0x18], str.invalid_bit_length_repeat
jmp 0x43671a
mov ecx, dword [esp + 0x48]
mov dword [esi + 0x18], str.invalid_bit_length_repeat
mov dword [ebp + 4], ecx
mov edi, dword [esp + 0x48]
cmp ecx, edi
je 0x4366b0
xor eax, eax
cmp word [ebp + 0x274], ax
jne 0x436d09
mov dword [esi + 0x18], str.invalid_code____missing_end_of_block
mov dword [ebp + 4], edi
jmp 0x4366b0
lea eax, [ebp + 0x534]
lea edi, [ebp + 0x70]
mov dword [ebp + 0x50], eax
lea ecx, [ebp + 0x2f4]
mov dword [edi], eax
push ecx
lea eax, [ebp + 0x58]
xor ecx, ecx
push eax
push edi
push dword [ebp + 0x64]
lea edx, [ebp + 0x74]
mov dword [eax], 9
inc ecx
call fcn.0043781a
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
je 0x436d55
mov dword [esi + 0x18], str.invalid_literal_lengths_set
mov dword [ebp + 4], 0x3f51
jmp 0x4366ac
mov eax, dword [edi]
lea ecx, [ebp + 0x2f4]
push ecx
mov dword [ebp + 0x54], eax
lea eax, [ebp + 0x5c]
push eax
mov dword [eax], 6
mov eax, dword [ebp + 0x64]
push edi
push dword [ebp + 0x68]
lea edx, [eax*2 + 0x74]
push 2
add edx, ebp
pop ecx
call fcn.0043781a
mov edx, dword [esp + 0x28]
add esp, 0x10
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x38], eax
test eax, eax
je case.0x436087.16199
mov dword [esi + 0x18], str.invalid_distances_set
jmp 0x4361ff
mov dword [ebp + 4], 0x3f48
cmp edi, 6
jb 0x436e1f
mov eax, dword [esp + 0x28]
cmp eax, 0x102
jb 0x436e1f
mov ecx, dword [esp + 0x2c]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 0xc], ecx
mov ecx, esi
mov dword [esi], eax
mov dword [esi + 4], edi
mov dword [ebp + 0x3c], edx
mov edx, dword [esp + 0x34]
mov dword [ebp + 0x40], ebx
call fcn.00437c2f
cmp dword [ebp + 4], 0x3f3f
mov eax, dword [esi + 0xc]
mov edi, dword [esi + 4]
mov edx, dword [ebp + 0x3c]
mov ebx, dword [ebp + 0x40]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x10]
mov dword [esp + 0x28], eax
mov eax, dword [esi]
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jne 0x4366b4
or dword [ebp + 0x1bc8], 0xffffffff
jmp 0x4366b4
and dword [ebp + 0x1bc8], 0
xor eax, eax
mov ecx, dword [ebp + 0x58]
lea edi, [eax + 1]
shl edi, cl
jmp 0x436e5f
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437410
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
add ebx, 8
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov ecx, dword [ebp + 0x50]
lea eax, [edi - 1]
and eax, edx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, ebx
ja 0x436e32
test al, al
je 0x436f35
test al, 0xf0
jne 0x436f35
mov ebx, eax
movzx ecx, al
shr ebx, 8
xor edi, edi
movzx esi, bl
inc edi
add ecx, esi
mov edx, eax
shl edi, cl
mov ecx, esi
dec edi
shr eax, 0x10
and edi, dword [esp + 0x18]
shr edi, cl
mov ecx, dword [ebp + 0x50]
add edi, eax
mov dword [esp + 0x40], edx
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx esi, cl
movzx ecx, bl
mov ebx, dword [esp + 0x20]
add esi, ecx
cmp esi, ebx
jbe 0x436f20
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x437410
dec esi
movzx edi, dh
mov dword [esp + 0x1c], esi
mov ecx, ebx
mov esi, dword [esp + 0x14]
add ebx, 8
movzx eax, byte [esi]
shl eax, cl
add dword [esp + 0x18], eax
inc esi
movzx eax, word [esp + 0x42]
mov dword [esp + 0x14], esi
xor esi, esi
inc esi
movzx ecx, dl
add ecx, edi
shl esi, cl
mov ecx, edi
dec esi
and esi, dword [esp + 0x18]
shr esi, cl
add esi, eax
mov eax, dword [ebp + 0x50]
mov eax, dword [eax + esi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, edi
cmp ecx, ebx
ja 0x436ec7
mov esi, dword [esp + 0x30]
movzx ecx, dh
mov edx, dword [esp + 0x18]
shr edx, cl
sub ebx, ecx
mov dword [ebp + 0x1bc8], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [ebp + 0x1bc8], ecx
sub ebx, ecx
shr edx, cl
mov ecx, eax
shr ecx, 0x10
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 0x44], ecx
test al, al
jne 0x436f67
mov dword [ebp + 4], 0x3f4d
jmp 0x4366b0
test al, 0x20
je 0x436f7e
or dword [ebp + 0x1bc8], 0xffffffff
mov dword [ebp + 4], 0x3f3f
jmp 0x4366b0
mov edi, dword [esp + 0x1c]
test al, 0x40
je 0x436f92
mov dword [esi + 0x18], str.invalid_literal_length_code
jmp 0x4361ff
movzx eax, al
and eax, 0xf
mov dword [ebp + 4], 0x3f49
mov dword [ebp + 0x4c], eax
mov esi, dword [ebp + 0x4c]
test esi, esi
je 0x436ffa
cmp ebx, esi
jae 0x436fdb
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, esi
jb 0x436fb1
xor eax, eax
mov ecx, esi
inc eax
sub ebx, esi
shl eax, cl
dec eax
mov dword [esp + 0x20], ebx
and eax, edx
shr edx, cl
add dword [ebp + 0x44], eax
add dword [ebp + 0x1bc8], esi
mov dword [esp + 0x18], edx
mov eax, dword [ebp + 0x44]
mov dword [ebp + 0x1bcc], eax
mov dword [ebp + 4], 0x3f4a
mov ecx, dword [ebp + 0x5c]
xor eax, eax
mov edi, dword [ebp + 0x54]
lea esi, [eax + 1]
shl esi, cl
jmp 0x437046
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437410
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
add ebx, 8
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
lea eax, [esi - 1]
and eax, edx
mov eax, dword [edi + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, ebx
ja 0x437019
test al, 0xf0
jne 0x43710d
mov ebx, eax
movzx ecx, al
shr ebx, 8
xor edi, edi
movzx esi, bl
inc edi
add ecx, esi
mov edx, eax
shl edi, cl
mov ecx, esi
dec edi
shr eax, 0x10
and edi, dword [esp + 0x18]
shr edi, cl
mov ecx, dword [ebp + 0x54]
add edi, eax
mov dword [esp + 0x40], edx
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx esi, cl
movzx ecx, bl
mov ebx, dword [esp + 0x20]
add esi, ecx
cmp esi, ebx
jbe 0x4370fc
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x437410
dec esi
movzx edi, dh
mov dword [esp + 0x1c], esi
mov ecx, ebx
mov esi, dword [esp + 0x14]
add ebx, 8
movzx eax, byte [esi]
shl eax, cl
add dword [esp + 0x18], eax
inc esi
movzx eax, word [esp + 0x42]
mov dword [esp + 0x14], esi
xor esi, esi
inc esi
movzx ecx, dl
add ecx, edi
shl esi, cl
mov ecx, edi
dec esi
and esi, dword [esp + 0x18]
shr esi, cl
add esi, eax
mov eax, dword [ebp + 0x54]
mov eax, dword [eax + esi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, edi
cmp ecx, ebx
ja 0x4370a3
movzx ecx, dh
mov edx, dword [esp + 0x18]
sub ebx, ecx
shr edx, cl
add dword [ebp + 0x1bc8], ecx
mov esi, dword [esp + 0x30]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [ebp + 0x1bc8], ecx
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
test al, 0x40
je 0x43713b
mov dword [esi + 0x18], str.invalid_distance_code
jmp 0x43671a
mov ecx, eax
mov dword [ebp + 4], 0x3f4b
shr ecx, 0x10
movzx eax, al
and eax, 0xf
mov dword [ebp + 0x48], ecx
mov dword [ebp + 0x4c], eax
mov edi, dword [ebp + 0x4c]
test edi, edi
je 0x4371a8
jmp 0x437185
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437410
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
add ebx, 8
cmp ebx, edi
jb 0x43715c
xor eax, eax
mov ecx, edi
inc eax
sub ebx, edi
shl eax, cl
dec eax
mov dword [esp + 0x20], ebx
and eax, edx
shr edx, cl
add dword [ebp + 0x48], eax
add dword [ebp + 0x1bc8], edi
mov dword [esp + 0x18], edx
mov edi, dword [esp + 0x1c]
mov dword [ebp + 4], 0x3f4c
mov eax, dword [esp + 0x28]
test eax, eax
je 0x437410
mov ecx, dword [esp + 0x34]
sub ecx, eax
mov eax, dword [ebp + 0x48]
cmp eax, ecx
jbe 0x437216
sub eax, ecx
cmp eax, dword [ebp + 0x30]
jbe 0x4371e8
cmp dword [ebp + 0x1bc4], 0
je 0x4371e8
mov dword [esi + 0x18], str.invalid_distance_too_far_back
jmp 0x4361ff
cmp eax, dword [ebp + 0x34]
jbe 0x4371fa
sub eax, dword [ebp + 0x34]
mov ecx, dword [ebp + 0x2c]
sub ecx, eax
add ecx, dword [ebp + 0x38]
jmp 0x437202
mov ecx, dword [ebp + 0x38]
sub ecx, eax
add ecx, dword [ebp + 0x34]
mov edi, dword [ebp + 0x44]
cmp eax, edi
mov edx, edi
cmovbe edx, eax
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x18]
jmp 0x437223
mov ecx, dword [esp + 0x2c]
mov edi, dword [ebp + 0x44]
sub ecx, eax
mov dword [esp + 0x40], edi
mov esi, dword [esp + 0x28]
mov eax, esi
cmp dword [esp + 0x40], esi
cmovbe eax, dword [esp + 0x40]
sub esi, eax
mov dword [esp + 0x40], eax
sub edi, eax
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x2c]
sub ecx, esi
mov dword [ebp + 0x44], edi
mov edi, eax
mov al, byte [ecx + esi]
mov byte [esi], al
inc esi
sub edi, 1
jne 0x437249
cmp dword [ebp + 0x44], 0
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x30]
jne 0x4366b4
mov dword [ebp + 4], 0x3f48
jmp 0x4366b4
cmp dword [esp + 0x28], 0
je 0x437410
mov ecx, dword [esp + 0x2c]
mov al, byte [ebp + 0x44]
mov byte [ecx], al
inc ecx
dec dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
jmp 0x43726a
cmp dword [ebp + 0xc], 0
je 0x437379
cmp ebx, 0x20
jae 0x4372d7
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jb 0x4372a8
mov ecx, dword [esp + 0x34]
sub ecx, dword [esp + 0x28]
add dword [esi + 0x14], ecx
add dword [ebp + 0x20], ecx
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x34], ecx
test al, 4
je 0x437321
test ecx, ecx
je 0x437321
mov edx, dword [esp + 0x2c]
push dword [esp + 0x34]
sub edx, ecx
cmp dword [ebp + 0x14], 0
mov ecx, dword [ebp + 0x1c]
je 0x43730e
call fcn.0043804d
jmp 0x437313
call fcn.004375ed
mov edx, dword [esp + 0x1c]
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
mov eax, dword [ebp + 0xc]
pop ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x34], ecx
test al, 4
je 0x43736b
mov ecx, edx
mov eax, edx
shl eax, 0x10
and ecx, 0xff00
add ecx, eax
mov eax, edx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
mov eax, edx
shr eax, 0x18
add ecx, eax
xor eax, eax
cmp dword [ebp + 0x14], eax
cmovne ecx, edx
cmp ecx, dword [ebp + 0x1c]
je 0x43736d
mov dword [esi + 0x18], str.incorrect_data_check
jmp 0x4361ff
xor eax, eax
mov edx, eax
mov ebx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 4], 0x3f4f
xor eax, eax
cmp dword [ebp + 0xc], eax
je 0x4373fd
cmp dword [ebp + 0x14], eax
je 0x4373fd
cmp ebx, 0x20
jae 0x4373c2
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437410
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jb 0x437395
xor eax, eax
cmp edx, dword [ebp + 0x20]
je 0x4373f7
mov dword [esi + 0x18], str.incorrect_length_check
jmp 0x4361ff
mov eax, dword [esp + 0x2c]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x14]
mov dword [esi], eax
mov dword [esi + 4], edi
mov dword [ebp + 0x3c], edx
mov dword [ebp + 0x40], ebx
push 2
jmp 0x4366c8
mov dword [esp + 0x18], eax
mov ebx, eax
mov dword [ebp + 4], 0x3f50
xor eax, eax
inc eax
jmp 0x43740c
push 0xfffffffffffffffd
pop eax
mov dword [esp + 0x38], eax
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [esi + 4], edi
mov edi, dword [esp + 0x34]
mov dword [esi], ecx
mov dword [ebp + 0x40], ebx
xor ebx, ebx
mov dword [ebp + 0x3c], eax
cmp dword [ebp + 0x2c], ebx
jne 0x437452
cmp edi, dword [esi + 0x10]
je 0x437475
cmp dword [ebp + 4], 0x3f51
jge 0x437475
mov edx, dword [esi + 0xc]
mov eax, edi
sub eax, dword [esi + 0x10]
mov ecx, esi
push eax
call fcn.00435f09
pop ecx
test eax, eax
je 0x437475
mov dword [ebp + 4], 0x3f52
push 0xfffffffffffffffc
jmp 0x4366c8
mov edx, dword [esp + 0x44]
sub edx, dword [esi + 4]
sub edi, dword [esi + 0x10]
add dword [esi + 8], edx
add dword [esi + 0x14], edi
add dword [ebp + 0x20], edi
test byte [ebp + 0xc], 4
mov dword [esp + 0x44], edx
je 0x4374bb
test edi, edi
je 0x4374bb
mov edx, dword [esi + 0xc]
mov ecx, dword [ebp + 0x1c]
sub edx, edi
push edi
cmp dword [ebp + 0x14], ebx
je 0x4374ab
call fcn.0043804d
jmp 0x4374b0
call fcn.004375ed
mov edx, dword [esp + 0x48]
mov dword [ebp + 0x1c], eax
pop ecx
mov dword [esi + 0x30], eax
cmp dword [ebp + 4], 0x3f47
je 0x4374cd
cmp dword [ebp + 4], 0x3f42
jne 0x4374d2
mov ebx, 0x100
mov ecx, dword [ebp + 8]
neg ecx
mov dword [esp + 0x50], 0x80
sbb ecx, ecx
xor eax, eax
and ecx, 0x40
cmp dword [ebp + 4], 0x3f3f
cmove eax, dword [esp + 0x50]
add ecx, eax
mov eax, dword [esp + 0x38]
add ecx, dword [ebp + 0x40]
add ecx, ebx
mov dword [esi + 0x2c], ecx
test edx, edx
jne 0x4366c9
test edi, edi
jne 0x4366c9
push 0xfffffffffffffffb
test eax, eax
pop ecx
cmove eax, ecx
jmp 0x4366c9