aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSylvain Boulmé <sylvain.boulme@univ-grenoble-alpes.fr>2021-01-07 11:15:16 +0100
committerSylvain Boulmé <sylvain.boulme@univ-grenoble-alpes.fr>2021-01-07 11:15:16 +0100
commitab7882034042826e3bd7b398fc046452bf685716 (patch)
treeeb7fc79be53f37a9994001d3d5f41c66a5da285e
parente7fa1950201c72d318fdd1eeffc545facb179ab8 (diff)
downloadcompcert-kvx-ab7882034042826e3bd7b398fc046452bf685716.tar.gz
compcert-kvx-ab7882034042826e3bd7b398fc046452bf685716.zip
cleaning
-rw-r--r--aarch64/Asmgenproof_orig_single_label_in_header.v.stash2245
-rwxr-xr-xconfigure2
-rw-r--r--multiple_labels_crash_test/check.c120
-rw-r--r--multiple_labels_crash_test/driver.c12
-rw-r--r--multiple_labels_crash_test/func.c915
-rw-r--r--multiple_labels_crash_test/func.ref.s5170
-rw-r--r--multiple_labels_crash_test/hash.c3
-rw-r--r--multiple_labels_crash_test/init.c209
-rw-r--r--multiple_labels_crash_test/init.h181
-rw-r--r--scheduling/PseudoAsmblock.v267
-rw-r--r--scheduling/PseudoAsmblockproof.v1173
11 files changed, 1 insertions, 10296 deletions
diff --git a/aarch64/Asmgenproof_orig_single_label_in_header.v.stash b/aarch64/Asmgenproof_orig_single_label_in_header.v.stash
deleted file mode 100644
index bff18716..00000000
--- a/aarch64/Asmgenproof_orig_single_label_in_header.v.stash
+++ /dev/null
@@ -1,2245 +0,0 @@
-(* *************************************************************)
-(* *)
-(* The Compcert verified compiler *)
-(* *)
-(* Sylvain Boulmé Grenoble-INP, VERIMAG *)
-(* Léo Gourdin UGA, VERIMAG *)
-(* Justus Fasse UGA, VERIMAG *)
-(* Xavier Leroy INRIA Paris-Rocquencourt *)
-(* David Monniaux CNRS, VERIMAG *)
-(* Cyril Six Kalray *)
-(* *)
-(* Copyright Kalray. Copyright VERIMAG. All rights reserved. *)
-(* This file is distributed under the terms of the INRIA *)
-(* Non-Commercial License Agreement. *)
-(* *)
-(* *************************************************************)
-
-Require Import Coqlib Errors.
-Require Import Integers Floats AST Linking.
-Require Import Values Memory Events Globalenvs Smallstep.
-Require Import Op Locations Machblock Conventions PseudoAsmblock Asm Asmblock.
-Require Machblockgenproof Asmblockgenproof PostpassSchedulingproof.
-Require Import Asmgen.
-Require Import Axioms.
-Require Import IterList.
-Require Import Ring.
-
-Module Asmblock_PRESERVATION.
-
-Import Asmblock_TRANSF.
-
-Definition match_prog (p: Asmblock.program) (tp: Asm.program) :=
- match_program (fun _ f tf => transf_fundef f = OK tf) eq p tp.
-
-Lemma transf_program_match:
- forall p tp, transf_program p = OK tp -> match_prog p tp.
-Proof.
- intros. eapply match_transform_partial_program; eauto.
-Qed.
-
-Section PRESERVATION.
-
-Variable prog: Asmblock.program.
-Variable tprog: Asm.program.
-Hypothesis TRANSF: match_prog prog tprog.
-Let ge := Genv.globalenv prog.
-Let tge := Genv.globalenv tprog.
-
-Definition lk :aarch64_linker := {| Asmblock.symbol_low:=Asm.symbol_low tge; Asmblock.symbol_high:=Asm.symbol_high tge|}.
-
-Lemma symbols_preserved:
- forall (s: ident), Genv.find_symbol tge s = Genv.find_symbol ge s.
-Proof (Genv.find_symbol_match TRANSF).
-
-Lemma symbol_addresses_preserved:
- forall (s: ident) (ofs: ptrofs),
- Genv.symbol_address tge s ofs = Genv.symbol_address ge s ofs.
-Proof.
- intros; unfold Genv.symbol_address; rewrite symbols_preserved; reflexivity.
-Qed.
-
-Lemma senv_preserved:
- Senv.equiv ge tge.
-Proof (Genv.senv_match TRANSF).
-
-Lemma symbol_high_low: forall (id: ident) (ofs: ptrofs),
- Val.addl (Asmblock.symbol_high lk id ofs) (Asmblock.symbol_low lk id ofs) = Genv.symbol_address ge id ofs.
-Proof.
- unfold lk; simpl. intros; rewrite Asm.symbol_high_low; unfold Genv.symbol_address;
- rewrite symbols_preserved; reflexivity.
-Qed.
-
-Lemma functions_translated:
- forall b f,
- Genv.find_funct_ptr ge b = Some f ->
- exists tf,
- Genv.find_funct_ptr tge b = Some tf /\ transf_fundef f = OK tf.
-Proof (Genv.find_funct_ptr_transf_partial TRANSF).
-
-Lemma internal_functions_translated:
- forall b f,
- Genv.find_funct_ptr ge b = Some (Internal f) ->
- exists tf,
- Genv.find_funct_ptr tge b = Some (Internal tf) /\ transf_function f = OK tf.
-Proof.
- intros; exploit functions_translated; eauto.
- intros (x & FIND & TRANSf).
- apply bind_inversion in TRANSf.
- destruct TRANSf as (tf & TRANSf & X).
- inv X.
- eauto.
-Qed.
-
-Lemma internal_functions_unfold:
- forall b f,
- Genv.find_funct_ptr ge b = Some (Internal f) ->
- exists tc,
- Genv.find_funct_ptr tge b = Some (Internal (Asm.mkfunction (fn_sig f) tc))
- /\ unfold (fn_blocks f) = OK tc
- /\ list_length_z tc <= Ptrofs.max_unsigned.
-Proof.
- intros.
- exploit internal_functions_translated; eauto.
- intros (tf & FINDtf & TRANStf).
- unfold transf_function in TRANStf.
- monadInv TRANStf.
- destruct (zlt _ _); try congruence.
- inv EQ. inv EQ0.
- eexists; intuition eauto.
- omega.
-Qed.
-
-
-Inductive is_nth_inst (bb: bblock) (n:Z) (i:Asm.instruction): Prop :=
- | is_nth_label l:
- list_nth_z (header bb) n = Some l ->
- i = Asm.Plabel l ->
- is_nth_inst bb n i
- | is_nth_basic bi:
- list_nth_z (body bb) (n - list_length_z (header bb)) = Some bi ->
- basic_to_instruction bi = OK i ->
- is_nth_inst bb n i
- | is_nth_ctlflow cfi:
- (exit bb) = Some cfi ->
- n = size bb - 1 ->
- i = control_to_instruction cfi ->
- is_nth_inst bb n i.
-
-(* Asmblock and Asm share the same definition of state *)
-Definition match_states (s1 s2 : state) := s1 = s2.
-
-Inductive match_internal: forall n, state -> state -> Prop :=
- | match_internal_intro n rs1 m1 rs2 m2
- (MEM: m1 = m2)
- (AG: forall r, r <> PC -> rs1 r = rs2 r)
- (AGPC: Val.offset_ptr (rs1 PC) (Ptrofs.repr n) = rs2 PC)
- : match_internal n (State rs1 m1) (State rs2 m2).
-
-Lemma match_internal_set_parallel:
- forall n rs1 m1 rs2 m2 r val,
- match_internal n (State rs1 m1) (State rs2 m2) ->
- r <> PC ->
- match_internal n (State (rs1#r <- val) m1) (State (rs2#r <- val ) m2).
-Proof.
- intros n rs1 m1 rs2 m2 r v MI.
- inversion MI; constructor; auto.
- - intros r' NOTPC.
- unfold Pregmap.set; rewrite AG. reflexivity. assumption.
- - unfold Pregmap.set; destruct (PregEq.eq PC r); congruence.
-Qed.
-
-Lemma agree_match_states:
- forall rs1 m1 rs2 m2,
- match_states (State rs1 m1) (State rs2 m2) ->
- forall r : preg, rs1#r = rs2#r.
-Proof.
- intros.
- unfold match_states in *.
- assert (rs1 = rs2) as EQ. { congruence. }
- rewrite EQ. reflexivity.
-Qed.
-
-Lemma match_states_set_parallel:
- forall rs1 m1 rs2 m2 r v,
- match_states (State rs1 m1) (State rs2 m2) ->
- match_states (State (rs1#r <- v) m1) (State (rs2#r <- v) m2).
-Proof.
- intros; unfold match_states in *.
- assert (rs1 = rs2) as RSEQ. { congruence. }
- assert (m1 = m2) as MEQ. { congruence. }
- rewrite RSEQ in *; rewrite MEQ in *; unfold Pregmap.set; reflexivity.
-Qed.
-
-(* match_internal from match_states *)
-Lemma mi_from_ms:
- forall rs1 m1 rs2 m2 b ofs,
- match_states (State rs1 m1) (State rs2 m2) ->
- rs1#PC = Vptr b ofs ->
- match_internal 0 (State rs1 m1) (State rs2 m2).
-Proof.
- intros rs1 m1 rs2 m2 b ofs MS PCVAL.
- inv MS; constructor; auto; unfold Val.offset_ptr;
- rewrite PCVAL; rewrite Ptrofs.add_zero; reflexivity.
-Qed.
-
-Lemma transf_initial_states:
- forall s1, Asmblock.initial_state prog s1 ->
- exists s2, Asm.initial_state tprog s2 /\ match_states s1 s2.
-Proof.
- intros ? INIT_s1.
- inversion INIT_s1 as (m, ?, ge0, rs). unfold ge0 in *.
- econstructor; split.
- - econstructor.
- eapply (Genv.init_mem_transf_partial TRANSF); eauto.
- - rewrite (match_program_main TRANSF); rewrite symbol_addresses_preserved.
- unfold rs; reflexivity.
-Qed.
-
-Lemma transf_final_states:
- forall s1 s2 r,
- match_states s1 s2 -> Asmblock.final_state s1 r -> Asm.final_state s2 r.
-Proof.
- intros s1 s2 r MATCH FINAL_s1.
- inv FINAL_s1; inv MATCH; constructor; assumption.
-Qed.
-
-Definition max_pos (f : Asm.function) := list_length_z f.(Asm.fn_code).
-
-Lemma functions_bound_max_pos: forall fb f tf,
- Genv.find_funct_ptr ge fb = Some (Internal f) ->
- transf_function f = OK tf ->
- max_pos tf <= Ptrofs.max_unsigned.
-Proof.
- intros fb f tf FINDf TRANSf.
- unfold transf_function in TRANSf.
- apply bind_inversion in TRANSf.
- destruct TRANSf as (c & TRANSf).
- destruct TRANSf as (_ & TRANSf).
- destruct (zlt _ _).
- - inversion TRANSf.
- - unfold max_pos.
- assert (Asm.fn_code tf = c) as H. { inversion TRANSf as (H'); auto. }
- rewrite H; omega.
-Qed.
-
-Lemma one_le_max_unsigned:
- 1 <= Ptrofs.max_unsigned.
-Proof.
- unfold Ptrofs.max_unsigned; simpl; unfold Ptrofs.wordsize;
- unfold Wordsize_Ptrofs.wordsize; destruct Archi.ptr64; simpl; omega.
-Qed.
-
-(* NB: does not seem useful anymore, with the [exec_header_simulation] proof below
-Lemma match_internal_exec_label:
- forall n rs1 m1 rs2 m2 l fb f tf,
- Genv.find_funct_ptr ge fb = Some (Internal f) ->
- transf_function f = OK tf ->
- match_internal n (State rs1 m1) (State rs2 m2) ->
- n >= 0 ->
- (* There is no step if n is already max_pos *)
- n < (max_pos tf) ->
- exists rs2' m2', Asm.exec_instr tge tf (Asm.Plabel l) rs2 m2 = Next rs2' m2'
- /\ match_internal (n+1) (State rs1 m1) (State rs2' m2').
-Proof.
- intros. (* XXX auto generated names *)
- unfold Asm.exec_instr.
- eexists; eexists; split; eauto.
- inversion H1; constructor; auto.
- - intros; unfold Asm.nextinstr; unfold Pregmap.set;
- destruct (PregEq.eq r PC); auto; contradiction.
- - unfold Asm.nextinstr; rewrite Pregmap.gss; unfold Ptrofs.one.
- rewrite <- AGPC; rewrite Val.offset_ptr_assoc; unfold Ptrofs.add;
- rewrite Ptrofs.unsigned_repr. rewrite Ptrofs.unsigned_repr; trivial.
- + split.
- * apply Z.le_0_1.
- * apply one_le_max_unsigned.
- + split.
- * apply Z.ge_le; assumption.
- * rewrite <- functions_bound_max_pos; eauto; omega.
-Qed.
-*)
-
-Lemma incrPC_agree_but_pc:
- forall rs r ofs,
- r <> PC ->
- (incrPC ofs rs)#r = rs#r.
-Proof.
- intros rs r ofs NOTPC.
- unfold incrPC; unfold Pregmap.set; destruct (PregEq.eq r PC).
- - contradiction.
- - reflexivity.
-Qed.
-
-Lemma bblock_non_empty bb: body bb <> nil \/ exit bb <> None.
-Proof.
- destruct bb. simpl.
- unfold non_empty_bblockb in correct.
- unfold non_empty_body, non_empty_exit, Is_true in correct.
- destruct body, exit.
- - right. discriminate.
- - contradiction.
- - right. discriminate.
- - left. discriminate.
-Qed.
-
-Lemma list_length_z_aux_increase A (l: list A): forall acc,
- list_length_z_aux l acc >= acc.
-Proof.
- induction l; simpl; intros.
- - omega.
- - generalize (IHl (Z.succ acc)). omega.
-Qed.
-
-Lemma bblock_size_aux_pos bb: list_length_z (body bb) + Z.of_nat (length_opt (exit bb)) >= 1.
-Proof.
- destruct (bblock_non_empty bb), (body bb) as [|hd tl], (exit bb); simpl;
- try (congruence || omega);
- unfold list_length_z; simpl;
- generalize (list_length_z_aux_increase _ tl 1); omega.
-Qed.
-
-
-Lemma list_length_add_acc A (l : list A) acc:
- list_length_z_aux l acc = (list_length_z l) + acc.
-Proof.
- unfold list_length_z, list_length_z_aux. simpl.
- fold list_length_z_aux.
- rewrite (list_length_z_aux_shift l acc 0).
- omega.
-Qed.
-
-Lemma list_length_z_cons A hd (tl : list A):
- list_length_z (hd :: tl) = list_length_z tl + 1.
-Proof.
- unfold list_length_z; simpl; rewrite list_length_add_acc; reflexivity.
-Qed.
-
-(*Lemma length_agree A (l : list A):*)
- (*list_length_z l = Z.of_nat (length l).*)
-(*Proof.*)
- (*induction l as [| ? l IH]; intros.*)
- (*- unfold list_length_z; reflexivity.*)
- (*- simpl; rewrite list_length_z_cons, Zpos_P_of_succ_nat; omega.*)
-(*Qed.*)
-
-Lemma bblock_size_aux bb: size bb = list_length_z (header bb) + list_length_z (body bb) + Z.of_nat (length_opt (exit bb)).
-Proof.
- unfold size.
- repeat (rewrite list_length_z_nat). repeat (rewrite Nat2Z.inj_add). reflexivity.
-Qed.
-
-Lemma header_size_lt_block_size bb:
- list_length_z (header bb) < size bb.
-Proof.
- rewrite bblock_size_aux.
- generalize (bblock_non_empty bb); intros NEMPTY; destruct NEMPTY as [HDR|EXIT].
- - destruct (body bb); try contradiction; rewrite list_length_z_cons;
- repeat rewrite list_length_z_nat; omega.
- - destruct (exit bb); try contradiction; simpl; repeat rewrite list_length_z_nat; omega.
-Qed.
-
-Lemma body_size_le_block_size bb:
- list_length_z (body bb) <= size bb.
-Proof.
- rewrite bblock_size_aux; repeat rewrite list_length_z_nat; omega.
-Qed.
-
-
-Lemma bblock_size_pos bb: size bb >= 1.
-Proof.
- rewrite (bblock_size_aux bb).
- generalize (bblock_size_aux_pos bb).
- generalize (list_length_z_pos (header bb)).
- omega.
-Qed.
-
-Lemma unfold_car_cdr bb bbs tc:
- unfold (bb :: bbs) = OK tc ->
- exists tbb tc', unfold_bblock bb = OK tbb
- /\ unfold bbs = OK tc'
- /\ unfold (bb :: bbs) = OK (tbb ++ tc').
-Proof.
- intros UNFOLD.
- assert (UF := UNFOLD).
- unfold unfold in UNFOLD.
- apply bind_inversion in UNFOLD. destruct UNFOLD as (? & UBB). destruct UBB as (UBB & REST).
- apply bind_inversion in REST. destruct REST as (? & UNFOLD').
- fold unfold in UNFOLD'. destruct UNFOLD' as (UNFOLD' & UNFOLD).
- rewrite <- UNFOLD in UF.
- eauto.
-Qed.
-
-Lemma unfold_cdr bb bbs tc:
- unfold (bb :: bbs) = OK tc ->
- exists tc', unfold bbs = OK tc'.
-Proof.
- intros; exploit unfold_car_cdr; eauto. intros (_ & ? & _ & ? & _).
- eexists; eauto.
-Qed.
-
-Lemma unfold_car bb bbs tc:
- unfold (bb :: bbs) = OK tc ->
- exists tbb, unfold_bblock bb = OK tbb.
-Proof.
- intros; exploit unfold_car_cdr; eauto. intros (? & _ & ? & _ & _).
- eexists; eauto.
-Qed.
-
-Lemma all_blocks_translated:
- forall bbs tc,
- unfold bbs = OK tc ->
- forall bb, In bb bbs ->
- exists c, unfold_bblock bb = OK c.
-Proof.
- induction bbs as [| bb bbs IHbbs].
- - contradiction.
- - intros ? UNFOLD ? IN.
- (* unfold proceeds by unfolding the basic block at the head of the list and
- * then recurring *)
- exploit unfold_car_cdr; eauto. intros (? & ? & ? & ? & _).
- (* basic block is either in head or tail *)
- inversion IN as [EQ | NEQ].
- + rewrite <- EQ; eexists; eauto.
- + eapply IHbbs; eauto.
-Qed.
-
-Lemma entire_body_translated:
- forall lbi tc,
- unfold_body lbi = OK tc ->
- forall bi, In bi lbi ->
- exists bi', basic_to_instruction bi = OK bi'.
-Proof.
- induction lbi as [| a lbi IHlbi].
- - intros. contradiction.
- - intros tc UNFOLD_BODY bi IN.
- unfold unfold_body in UNFOLD_BODY. apply bind_inversion in UNFOLD_BODY.
- destruct UNFOLD_BODY as (? & TRANSbi & REST).
- apply bind_inversion in REST. destruct REST as (? & UNFOLD_BODY' & ?).
- fold unfold_body in UNFOLD_BODY'.
-
- inversion IN as [EQ | NEQ].
- + rewrite <- EQ; eauto.
- + eapply IHlbi; eauto.
-Qed.
-
-Lemma bblock_in_bblocks bbs bb: forall
- tc pos
- (UNFOLD: unfold bbs = OK tc)
- (FINDBB: find_bblock pos bbs = Some bb),
- In bb bbs.
-Proof.
- induction bbs as [| b bbs IH].
- - intros. inversion FINDBB.
- - destruct pos.
- + intros. inversion FINDBB as (EQ). rewrite <- EQ. apply in_eq.
- + intros.
- exploit unfold_cdr; eauto. intros (tc' & UNFOLD').
- unfold find_bblock in FINDBB. simpl in FINDBB.
- fold find_bblock in FINDBB.
- apply in_cons. eapply IH; eauto.
- + intros. inversion FINDBB.
-Qed.
-
-Lemma blocks_translated tc pos bbs bb: forall
- (UNFOLD: unfold bbs = OK tc)
- (FINDBB: find_bblock pos bbs = Some bb),
- exists tbb, unfold_bblock bb = OK tbb.
-Proof.
- intros; exploit bblock_in_bblocks; eauto; intros;
- eapply all_blocks_translated; eauto.
-Qed.
-
-Lemma size_header b pos f bb: forall
- (FINDF: Genv.find_funct_ptr ge b = Some (Internal f))
- (FINDBB: find_bblock pos (fn_blocks f) = Some bb),
- list_length_z (header bb) <= 1.
-Proof.
- intros.
- exploit internal_functions_unfold; eauto.
- intros (tc & FINDtf & TRANStf & ?).
- exploit blocks_translated; eauto. intros TBB.
-
- unfold unfold_bblock in TBB.
- destruct (zle (list_length_z (header bb)) 1).
- - assumption.
- - destruct TBB as (? & TBB). discriminate TBB.
-Qed.
-
-Lemma list_nth_z_neg A (l: list A): forall n,
- n < 0 -> list_nth_z l n = None.
-Proof.
- induction l; simpl; auto.
- intros n H; destruct (zeq _ _); (try eapply IHl); omega.
-Qed.
-
-Lemma find_bblock_neg bbs: forall pos,
- pos < 0 -> find_bblock pos bbs = None.
-Proof.
- induction bbs; simpl; auto.
- intros. destruct (zlt pos 0). { reflexivity. }
- destruct (zeq pos 0); contradiction.
-Qed.
-
-Lemma equal_header_size bb:
- length (header bb) = length (unfold_label (header bb)).
-Proof.
- induction (header bb); auto.
- simpl. rewrite IHl. auto.
-Qed.
-
-Lemma equal_body_size:
- forall bb tb,
- unfold_body (body bb) = OK tb ->
- length (body bb) = length tb.
-Proof.
- intros bb. induction (body bb).
- - simpl. intros ? H. inversion H. auto.
- - intros tb H. simpl in H. apply bind_inversion in H. destruct H as (? & BI & TAIL).
- apply bind_inversion in TAIL. destruct TAIL as (tb' & BODY' & CONS). inv CONS.
- simpl. specialize (IHl tb' BODY'). rewrite IHl. reflexivity.
-Qed.
-
-Lemma equal_exit_size bb:
- length_opt (exit bb) = length (unfold_exit (exit bb)).
-Proof.
- destruct (exit bb); trivial.
-Qed.
-
-Lemma bblock_size_preserved bb tb:
- unfold_bblock bb = OK tb ->
- size bb = list_length_z tb.
-Proof.
- unfold unfold_bblock. intros UNFOLD_BBLOCK.
- destruct (zle (list_length_z (header bb)) 1). 2: { inversion UNFOLD_BBLOCK. }
- apply bind_inversion in UNFOLD_BBLOCK. destruct UNFOLD_BBLOCK as (? & UNFOLD_BODY & CONS).
- inversion CONS.
- unfold size.
- rewrite equal_header_size, equal_exit_size.
- erewrite equal_body_size; eauto.
- rewrite list_length_z_nat.
- repeat (rewrite app_length).
- rewrite plus_assoc. auto.
-Qed.
-
-Lemma size_of_blocks_max_pos_aux:
- forall bbs tbbs pos bb,
- find_bblock pos bbs = Some bb ->
- unfold bbs = OK tbbs ->
- pos + size bb <= list_length_z tbbs.
-Proof.
- induction bbs as [| bb ? IHbbs].
- - intros tbbs ? ? FINDBB; inversion FINDBB.
- - simpl; intros tbbs pos bb' FINDBB UNFOLD.
- apply bind_inversion in UNFOLD; destruct UNFOLD as (tbb & UNFOLD_BBLOCK & H).
- apply bind_inversion in H; destruct H as (tbbs' & UNFOLD & CONS).
- inv CONS.
- destruct (zlt pos 0). { discriminate FINDBB. }
- destruct (zeq pos 0).
- + inv FINDBB.
- exploit bblock_size_preserved; eauto; intros SIZE; rewrite SIZE.
- repeat (rewrite list_length_z_nat). rewrite app_length, Nat2Z.inj_add.
- omega.
- + generalize (IHbbs tbbs' (pos - size bb) bb' FINDBB UNFOLD). intros IH.
- exploit bblock_size_preserved; eauto; intros SIZE.
- repeat (rewrite list_length_z_nat); rewrite app_length.
- rewrite Nat2Z.inj_add; repeat (rewrite <- list_length_z_nat).
- omega.
-Qed.
-
-Lemma size_of_blocks_max_pos pos f tf bi:
- find_bblock pos (fn_blocks f) = Some bi ->
- transf_function f = OK tf ->
- pos + size bi <= max_pos tf.
-Proof.
- unfold transf_function, max_pos.
- intros FINDBB UNFOLD.
- apply bind_inversion in UNFOLD. destruct UNFOLD as (? & UNFOLD & H).
- destruct (zlt Ptrofs.max_unsigned (list_length_z x)). { discriminate H. }
- inv H. simpl.
- eapply size_of_blocks_max_pos_aux; eauto.
-Qed.
-
-Lemma unfold_bblock_not_nil bb:
- unfold_bblock bb = OK nil -> False.
-Proof.
- intros.
- exploit bblock_size_preserved; eauto. unfold list_length_z; simpl. intros SIZE.
- generalize (bblock_size_pos bb). intros SIZE'. omega.
-Qed.
-
-(* same proof as list_nth_z_range (Coqlib) *)
-Lemma find_instr_range:
- forall c n i,
- Asm.find_instr n c = Some i -> 0 <= n < list_length_z c.
-Proof.
- induction c; simpl; intros.
- discriminate.
- rewrite list_length_z_cons. destruct (zeq n 0).
- generalize (list_length_z_pos c); omega.
- exploit IHc; eauto. omega.
-Qed.
-
-Lemma find_instr_tail:
- forall tbb pos c i,
- Asm.find_instr pos c = Some i ->
- Asm.find_instr (pos + list_length_z tbb) (tbb ++ c) = Some i.
-Proof.
- induction tbb as [| ? ? IHtbb].
- - intros. unfold list_length_z; simpl. rewrite Z.add_0_r. assumption.
- - intros. rewrite list_length_z_cons. simpl.
- destruct (zeq (pos + (list_length_z tbb + 1)) 0).
- + exploit find_instr_range; eauto. intros POS_RANGE.
- generalize (list_length_z_pos tbb). omega.
- + replace (pos + (list_length_z tbb + 1) - 1) with (pos + list_length_z tbb) by omega.
- eapply IHtbb; eauto.
-Qed.
-
-Lemma size_of_blocks_bounds fb pos f bi:
- Genv.find_funct_ptr ge fb = Some (Internal f) ->
- find_bblock pos (fn_blocks f) = Some bi ->
- pos + size bi <= Ptrofs.max_unsigned.
-Proof.
- intros; exploit internal_functions_translated; eauto.
- intros (tf & _ & TRANSf).
- assert (pos + size bi <= max_pos tf). { eapply size_of_blocks_max_pos; eauto. }
- assert (max_pos tf <= Ptrofs.max_unsigned). { eapply functions_bound_max_pos; eauto. }
- omega.
-Qed.
-
-Lemma find_instr_bblock_tail:
- forall tbb bb pos c i,
- Asm.find_instr pos c = Some i ->
- unfold_bblock bb = OK tbb ->
- Asm.find_instr (pos + size bb ) (tbb ++ c) = Some i.
-Proof.
- induction tbb.
- - intros. exploit unfold_bblock_not_nil; eauto. intros. contradiction.
- - intros. simpl.
- destruct (zeq (pos + size bb) 0).
- + (* absurd *)
- exploit find_instr_range; eauto. intros POS_RANGE.
- generalize (bblock_size_pos bb). intros SIZE. omega.
- + erewrite bblock_size_preserved; eauto.
- rewrite list_length_z_cons.
- replace (pos + (list_length_z tbb + 1) - 1) with (pos + list_length_z tbb) by omega.
- apply find_instr_tail; auto.
-Qed.
-
-Lemma list_nth_z_find_label:
- forall (ll : list label) il n l,
- list_nth_z ll n = Some l ->
- Asm.find_instr n ((unfold_label ll) ++ il) = Some (Asm.Plabel l).
-Proof.
- induction ll.
- - intros. inversion H.
- - intros. simpl.
- destruct (zeq n 0) as [Z | NZ].
- + inversion H as (H'). rewrite Z in H'. simpl in H'. inv H'. reflexivity.
- + simpl in H. destruct (zeq n 0). { contradiction. }
- apply IHll; auto.
-Qed.
-
-Lemma list_nth_z_find_bi:
- forall lbi bi tlbi n bi' exit,
- list_nth_z lbi n = Some bi ->
- unfold_body lbi = OK tlbi ->
- basic_to_instruction bi = OK bi' ->
- Asm.find_instr n (tlbi ++ exit) = Some bi'.
-Proof.
- induction lbi.
- - intros. inversion H.
- - simpl. intros.
- apply bind_inversion in H0. destruct H0 as (? & ? & ?).
- apply bind_inversion in H2. destruct H2 as (? & ? & ?).
- destruct (zeq n 0) as [Z | NZ].
- + destruct n.
- * inversion H as (BI). rewrite BI in *.
- inversion H3. simpl. congruence.
- * (* absurd *) congruence.
- * (* absurd *) congruence.
- + inv H3. simpl. destruct (zeq n 0). { contradiction. }
- eapply IHlbi; eauto.
-Qed.
-
-Lemma list_nth_z_find_bi_with_header:
- forall ll lbi bi tlbi n bi' (rest : list Asm.instruction),
- list_nth_z lbi (n - list_length_z ll) = Some bi ->
- unfold_body lbi = OK tlbi ->
- basic_to_instruction bi = OK bi' ->
- Asm.find_instr n ((unfold_label ll) ++ (tlbi) ++ (rest)) = Some bi'.
-Proof.
- induction ll.
- - unfold list_length_z. simpl. intros.
- replace (n - 0) with n in H by omega. eapply list_nth_z_find_bi; eauto.
- - intros. simpl. destruct (zeq n 0).
- + rewrite list_length_z_cons in H. rewrite e in H.
- replace (0 - (list_length_z ll + 1)) with (-1 - (list_length_z ll)) in H by omega.
- generalize (list_length_z_pos ll). intros.
- rewrite list_nth_z_neg in H; try omega. inversion H.
- + rewrite list_length_z_cons in H.
- replace (n - (list_length_z ll + 1)) with (n -1 - (list_length_z ll)) in H by omega.
- eapply IHll; eauto.
-Qed.
-
-(* XXX unused *)
-Lemma range_list_nth_z:
- forall (A: Type) (l: list A) n,
- 0 <= n < list_length_z l ->
- exists x, list_nth_z l n = Some x.
-Proof.
- induction l.
- - intros. unfold list_length_z in H. simpl in H. omega.
- - intros n. destruct (zeq n 0).
- + intros. simpl. destruct (zeq n 0). { eauto. } contradiction.
- + intros H. rewrite list_length_z_cons in H.
- simpl. destruct (zeq n 0). { contradiction. }
- replace (Z.pred n) with (n - 1) by omega.
- eapply IHl; omega.
-Qed.
-
-Lemma list_nth_z_n_too_big:
- forall (A: Type) (l: list A) n,
- 0 <= n ->
- list_nth_z l n = None ->
- n >= list_length_z l.
-Proof.
- induction l.
- - intros. unfold list_length_z. simpl. omega.
- - intros. rewrite list_length_z_cons.
- simpl in H0.
- destruct (zeq n 0) as [N | N].
- + inversion H0.
- + (* XXX there must be a more elegant way to prove this simple fact *)
- assert (n > 0). { omega. }
- assert (0 <= n - 1). { omega. }
- generalize (IHl (n - 1)). intros IH.
- assert (n - 1 >= list_length_z l). { auto. }
- assert (n > list_length_z l); omega.
-Qed.
-
-Lemma find_instr_past_header:
- forall labels n rest,
- list_nth_z labels n = None ->
- Asm.find_instr n (unfold_label labels ++ rest) =
- Asm.find_instr (n - list_length_z labels) rest.
-Proof.
- induction labels as [| label labels' IH].
- - unfold list_length_z; simpl; intros; rewrite Z.sub_0_r; reflexivity.
- - intros. simpl. destruct (zeq n 0) as [N | N].
- + rewrite N in H. inversion H.
- + rewrite list_length_z_cons.
- replace (n - (list_length_z labels' + 1)) with (n - 1 - list_length_z labels') by omega.
- simpl in H. destruct (zeq n 0). { contradiction. }
- replace (Z.pred n) with (n - 1) in H by omega.
- apply IH; auto.
-Qed.
-
-(* very similar to find_instr_past_header *)
-Lemma find_instr_past_body:
- forall lbi n tlbi rest,
- list_nth_z lbi n = None ->
- unfold_body lbi = OK tlbi ->
- Asm.find_instr n (tlbi ++ rest) =
- Asm.find_instr (n - list_length_z lbi) rest.
-Proof.
- induction lbi.
- - unfold list_length_z; simpl; intros ? ? ? ? H. inv H; rewrite Z.sub_0_r; reflexivity.
- - intros n tlib ? NTH UNFOLD_BODY.
- unfold unfold_body in UNFOLD_BODY. apply bind_inversion in UNFOLD_BODY.
- destruct UNFOLD_BODY as (? & BI & H).
- apply bind_inversion in H. destruct H as (? & UNFOLD_BODY' & CONS).
- fold unfold_body in UNFOLD_BODY'. inv CONS.
- simpl; destruct (zeq n 0) as [N|N].
- + rewrite N in NTH; inversion NTH.
- + rewrite list_length_z_cons.
- replace (n - (list_length_z lbi + 1)) with (n - 1 - list_length_z lbi) by omega.
- simpl in NTH. destruct (zeq n 0). { contradiction. }
- replace (Z.pred n) with (n - 1) in NTH by omega.
- apply IHlbi; auto.
-Qed.
-
-Lemma n_beyond_body:
- forall bb n,
- 0 <= n < size bb ->
- list_nth_z (header bb) n = None ->
- list_nth_z (body bb) (n - list_length_z (header bb)) = None ->
- n >= Z.of_nat (length (header bb) + length (body bb)).
-Proof.
- intros.
- assert (0 <= n). { omega. }
- generalize (list_nth_z_n_too_big label (header bb) n H2 H0). intros.
- generalize (list_nth_z_n_too_big _ (body bb) (n - list_length_z (header bb))). intros.
- unfold size in H.
-
- assert (0 <= n - list_length_z (header bb)). { omega. }
- assert (n - list_length_z (header bb) >= list_length_z (body bb)). { apply H4; auto. }
-
- assert (n >= list_length_z (header bb) + list_length_z (body bb)). { omega. }
- rewrite Nat2Z.inj_add.
- repeat (rewrite <- list_length_z_nat). assumption.
-Qed.
-
-Lemma exec_arith_instr_dont_move_PC ai rs rs': forall
- (BASIC: exec_arith_instr lk ai rs = rs'),
- rs PC = rs' PC.
-Proof.
- destruct ai; simpl; intros;
- try (rewrite <- BASIC; rewrite Pregmap.gso; auto; discriminate).
- - destruct i; simpl in BASIC.
- + unfold compare_long in BASIC; rewrite <- BASIC.
- repeat rewrite Pregmap.gso; try discriminate. reflexivity.
- + unfold compare_long in BASIC; rewrite <- BASIC.
- repeat rewrite Pregmap.gso; try discriminate. reflexivity.
- + destruct sz;
- try (unfold compare_single in BASIC || unfold compare_float in BASIC);
- destruct (rs r1), (rs r2);
- try (rewrite <- BASIC; repeat rewrite Pregmap.gso; try (discriminate || reflexivity)).
- - destruct i; simpl in BASIC; destruct is;
- try (unfold compare_int in BASIC || unfold compare_long in BASIC);
- try (rewrite <- BASIC; repeat rewrite Pregmap.gso; try (discriminate || reflexivity)).
- - destruct i; simpl in BASIC; destruct sz;
- try (unfold compare_single in BASIC || unfold compare_float in BASIC);
- destruct (rs r1);
- try (rewrite <- BASIC; repeat rewrite Pregmap.gso; try (discriminate || reflexivity)).
- - destruct fsz; rewrite <- BASIC; rewrite Pregmap.gso; try (discriminate || reflexivity).
- - destruct fsz; rewrite <- BASIC; rewrite Pregmap.gso; try (discriminate || reflexivity).
-Qed.
-
-Lemma exec_basic_dont_move_PC bi rs m rs' m': forall
- (BASIC: exec_basic lk ge bi rs m = Next rs' m'),
- rs PC = rs' PC.
-Proof.
- destruct bi; simpl; intros.
- - inv BASIC. exploit exec_arith_instr_dont_move_PC; eauto.
- - unfold exec_load in BASIC.
- destruct Mem.loadv. 2: { discriminate BASIC. }
- inv BASIC. rewrite Pregmap.gso; try discriminate; auto.
- - unfold exec_store in BASIC.
- destruct Mem.storev. 2: { discriminate BASIC. }
- inv BASIC; reflexivity.
- - destruct Mem.alloc, Mem.store. 2: { discriminate BASIC. }
- inv BASIC. repeat (rewrite Pregmap.gso; try discriminate). reflexivity.
- - destruct Mem.loadv. 2: { discriminate BASIC. }
- destruct rs, Mem.free; try discriminate BASIC.
- inv BASIC; rewrite Pregmap.gso; try discriminate; auto.
- - inv BASIC; rewrite Pregmap.gso; try discriminate; auto.
- - inv BASIC; rewrite Pregmap.gso; try discriminate; auto.
- - inv BASIC; rewrite Pregmap.gso; try discriminate; auto.
- - inv BASIC; rewrite Pregmap.gso; try discriminate; auto.
-Qed.
-
-Lemma exec_body_dont_move_PC_aux:
- forall bis rs m rs' m'
- (BODY: exec_body lk ge bis rs m = Next rs' m'),
- rs PC = rs' PC.
-Proof.
- induction bis.
- - intros; inv BODY; reflexivity.
- - simpl; intros.
- remember (exec_basic lk ge a rs m) as bi eqn:BI; destruct bi. 2: { discriminate BODY. }
- symmetry in BI; destruct s in BODY, BI; simpl in BODY, BI.
- exploit exec_basic_dont_move_PC; eauto; intros AGPC; rewrite AGPC.
- eapply IHbis; eauto.
-Qed.
-
-Lemma exec_body_dont_move_PC bb rs m rs' m': forall
- (BODY: exec_body lk ge (body bb) rs m = Next rs' m'),
- rs PC = rs' PC.
-Proof. apply exec_body_dont_move_PC_aux. Qed.
-
-Lemma find_instr_bblock:
- forall n lb pos bb tlb
- (FINDBB: find_bblock pos lb = Some bb)
- (UNFOLD: unfold lb = OK tlb)
- (SIZE: 0 <= n < size bb),
- exists i, is_nth_inst bb n i /\ Asm.find_instr (pos+n) tlb = Some i.
-Proof.
- induction lb as [| b lb IHlb].
- - intros. inversion FINDBB.
- - intros pos bb tlb FINDBB UNFOLD SIZE.
- destruct pos.
- + inv FINDBB. simpl.
- exploit unfold_car_cdr; eauto. intros (tbb & tlb' & UNFOLD_BBLOCK & UNFOLD' & UNFOLD_cons).
- rewrite UNFOLD in UNFOLD_cons. inversion UNFOLD_cons.
- unfold unfold_bblock in UNFOLD_BBLOCK.
- destruct (zle (list_length_z (header bb)) 1). 2: { inversion UNFOLD_BBLOCK. }
- apply bind_inversion in UNFOLD_BBLOCK.
- destruct UNFOLD_BBLOCK as (? & UNFOLD_BODY & H).
- inversion H as (UNFOLD_BBLOCK).
- remember (list_nth_z (header bb) n) as label_opt eqn:LBL. destruct label_opt.
- * (* nth instruction is a label *)
- eexists; split. { eapply is_nth_label; eauto. }
- inversion UNFOLD_cons.
- symmetry in LBL.
- rewrite <- app_assoc.
- apply list_nth_z_find_label; auto.
- * remember (list_nth_z (body bb) (n - list_length_z (header bb))) as bi_opt eqn:BI.
- destruct bi_opt.
- -- (* nth instruction is a basic instruction *)
- exploit list_nth_z_in; eauto. intros INBB.
- exploit entire_body_translated; eauto. intros BI'.
- destruct BI'.
- eexists; split.
- ++ eapply is_nth_basic; eauto.
- ++ repeat (rewrite <- app_assoc). eapply list_nth_z_find_bi_with_header; eauto.
- -- (* nth instruction is the exit instruction *)
- generalize n_beyond_body. intros TEMP.
- assert (n >= Z.of_nat (Datatypes.length (header bb)
- + Datatypes.length (body bb))) as NGE. { auto. } clear TEMP.
- remember (exit bb) as exit_opt eqn:EXIT. destruct exit_opt.
- ++ rewrite <- app_assoc. rewrite find_instr_past_header; auto.
- rewrite <- app_assoc. erewrite find_instr_past_body; eauto.
- assert (SIZE' := SIZE).
- unfold size in SIZE. rewrite <- EXIT in SIZE. simpl in SIZE.
- destruct SIZE as (LOWER & UPPER).
- repeat (rewrite Nat2Z.inj_add in UPPER).
- repeat (rewrite <- list_length_z_nat in UPPER). repeat (rewrite Nat2Z.inj_add in NGE).
- repeat (rewrite <- list_length_z_nat in NGE). simpl in UPPER.
- assert (n = list_length_z (header bb) + list_length_z (body bb)). { omega. }
- assert (n = size bb - 1). {
- unfold size. rewrite <- EXIT. simpl.
- repeat (rewrite Nat2Z.inj_add). repeat (rewrite <- list_length_z_nat). simpl. omega.
- }
- symmetry in EXIT.
- eexists; split.
- ** eapply is_nth_ctlflow; eauto.
- ** simpl.
- destruct (zeq (n - list_length_z (header bb) - list_length_z (body bb)) 0). { reflexivity. }
- (* absurd *) omega.
- ++ (* absurd *)
- unfold size in SIZE. rewrite <- EXIT in SIZE. simpl in SIZE.
- destruct SIZE as (? & SIZE'). rewrite Nat.add_0_r in SIZE'. omega.
- + unfold find_bblock in FINDBB; simpl in FINDBB; fold find_bblock in FINDBB.
- inversion UNFOLD as (UNFOLD').
- apply bind_inversion in UNFOLD'. destruct UNFOLD' as (? & (UNFOLD_BBLOCK' & UNFOLD')).
- apply bind_inversion in UNFOLD'. destruct UNFOLD' as (? & (UNFOLD' & TLB)).
- inversion TLB.
- generalize (IHlb _ _ _ FINDBB UNFOLD'). intros IH.
- destruct IH as (? & (IH_is_nth & IH_find_instr)); eauto.
- eexists; split.
- * apply IH_is_nth.
- * replace (Z.pos p + n) with (Z.pos p + n - size b + size b) by omega.
- eapply find_instr_bblock_tail; try assumption.
- replace (Z.pos p + n - size b) with (Z.pos p - size b + n) by omega.
- apply IH_find_instr.
- + (* absurd *)
- generalize (Pos2Z.neg_is_neg p). intros. exploit (find_bblock_neg (b :: lb)); eauto.
- rewrite FINDBB. intros CONTRA. inversion CONTRA.
-Qed.
-
-Lemma exec_header_simulation b ofs f bb rs m: forall
- (ATPC: rs PC = Vptr b ofs)
- (FINDF: Genv.find_funct_ptr ge b = Some (Internal f))
- (FINDBB: find_bblock (Ptrofs.unsigned ofs) (fn_blocks f) = Some bb),
- exists s', star Asm.step tge (State rs m) E0 s'
- /\ match_internal (list_length_z (header bb)) (State rs m) s'.
-Proof.
- intros.
- exploit internal_functions_unfold; eauto.
- intros (tc & FINDtf & TRANStf & _).
- assert (BNDhead: list_length_z (header bb) <= 1). { eapply size_header; eauto. }
- destruct (header bb) as [|l[|]] eqn: EQhead.
- + (* header nil *)
- eexists; split.
- - eapply star_refl.
- - split; eauto.
- unfold list_length_z; rewrite !ATPC; simpl.
- rewrite Ptrofs.add_zero; auto.
- + (* header one *)
- assert (Lhead: list_length_z (header bb) = 1). { rewrite EQhead; unfold list_length_z; simpl. auto. }
- exploit (find_instr_bblock 0); eauto.
- { generalize (bblock_size_pos bb). omega. }
- intros (i & NTH & FIND_INSTR).
- inv NTH.
- * rewrite EQhead in H; simpl in H. inv H.
- cutrewrite (Ptrofs.unsigned ofs + 0 = Ptrofs.unsigned ofs) in FIND_INSTR; try omega.
- eexists. split.
- - eapply star_one.
- eapply Asm.exec_step_internal; eauto.
- simpl; eauto.
- - unfold list_length_z; simpl. split; eauto.
- intros r; destruct r; simpl; congruence || auto.
- * (* absurd case *)
- erewrite list_nth_z_neg in * |-; [ congruence | rewrite Lhead; omega].
- * (* absurd case *)
- rewrite bblock_size_aux, Lhead in *. generalize (bblock_size_aux_pos bb). omega.
- + (* absurd case *)
- unfold list_length_z in BNDhead. simpl in *.
- generalize (list_length_z_aux_increase _ l1 2); omega.
-Qed.
-
-Lemma eval_addressing_preserved a rs1 rs2:
- (forall r : preg, r <> PC -> rs1 r = rs2 r) ->
- eval_addressing lk a rs1 = Asm.eval_addressing tge a rs2.
-Proof.
- intros EQ.
- destruct a; simpl; try (rewrite !EQ; congruence). auto.
-Qed.
-
-Ltac next_stuck_cong := try (unfold Next, Stuck in *; congruence).
-
-Ltac inv_ok_eq :=
- repeat match goal with
- | [EQ: OK ?x = OK ?y |- _ ]
- => inversion EQ; clear EQ; subst
- end.
-
-Ltac reg_rwrt :=
- match goal with
- | [e: DR _ = DR _ |- _ ]
- => rewrite e in *
- end.
-
-Ltac destruct_reg_inv :=
- repeat match goal with
- | [ H : match ?reg with _ => _ end = _ |- _ ]
- => simpl in *; destruct reg; try congruence; try inv_ok_eq; try reg_rwrt
- end.
-
-Ltac destruct_ireg_inv :=
- repeat match goal with
- | [ H : match ?reg with _ => _ end = _ |- _ ]
- => destruct reg as [[r|]|]; try congruence; try inv_ok_eq; subst
- end.
-
-Ltac destruct_reg_size :=
- simpl in *;
- match goal with
- | [ |- context [ match ?reg with _ => _ end ] ]
- => destruct reg; try congruence
- end.
-
-Ltac find_rwrt_ag :=
- simpl in *;
- match goal with
- | [ AG: forall r, r <> ?PC -> _ r = _ r |- _ ]
- => repeat rewrite <- AG; try congruence
- end.
-
-Ltac inv_matchi :=
- match goal with
- | [ MATCHI : match_internal _ _ _ |- _ ]
- => inversion MATCHI; subst; find_rwrt_ag
- end.
-
-Ltac destruct_ir0_reg :=
- match goal with
- | [ |- context [ ir0 _ _ ?r ] ]
- => unfold ir0 in *; destruct r; find_rwrt_ag; eauto
- end.
-
-Ltac pc_not_sp :=
- match goal with
- | [ |- ?PC <> ?SP ]
- => destruct (PregEq.eq SP PC); repeat congruence; discriminate
- end.
-
-Ltac update_x_access_x :=
- subst; rewrite !Pregmap.gss; auto.
-
-Ltac update_x_access_r :=
- rewrite !Pregmap.gso; auto.
-
-Lemma nextinstr_agree_but_pc rs1 rs2: forall
- (AG: forall r, r <> PC -> rs1 r = rs2 r),
- forall r, r <> PC -> rs1 r = Asm.nextinstr rs2 r.
-Proof.
- intros; unfold Asm.nextinstr in *; rewrite Pregmap.gso in *; eauto.
-Qed.
-
-Lemma ptrofs_nextinstr_agree rs1 rs2 n: forall
- (BOUNDED : 0 <= n <= Ptrofs.max_unsigned)
- (AGPC : Val.offset_ptr (rs1 PC) (Ptrofs.repr n) = rs2 PC),
- Val.offset_ptr (rs1 PC) (Ptrofs.repr (n + 1)) = Asm.nextinstr rs2 PC.
-Proof.
- intros; unfold Asm.nextinstr; rewrite Pregmap.gss.
- rewrite <- Ptrofs.unsigned_one; rewrite <- (Ptrofs.unsigned_repr n); eauto;
- rewrite <- Ptrofs.add_unsigned; rewrite <- Val.offset_ptr_assoc; rewrite AGPC; eauto.
-Qed.
-
-Lemma load_preserved n rs1 m1 rs1' m1' rs2 m2 rd chk f a: forall
- (BOUNDED: 0 <= n <= Ptrofs.max_unsigned)
- (MATCHI: match_internal n (State rs1 m1) (State rs2 m2))
- (HLOAD: exec_load lk chk f a rd rs1 m1 = Next rs1' m1'),
- exists (rs2' : regset) (m2' : mem), Asm.exec_load tge chk f a rd rs2 m2 = Next rs2' m2'
- /\ match_internal (n + 1) (State rs1' m1') (State rs2' m2').
-Proof.
- intros.
- unfold exec_load, Asm.exec_load in *.
- inversion MATCHI as [n0 r1 mx1 r2 mx2 EQM EQR EQPC]; subst.
- rewrite <- (eval_addressing_preserved a rs1 rs2); auto.
- destruct (Mem.loadv _ _ _).
- + inversion HLOAD; auto. repeat (econstructor; eauto).
- * eapply nextinstr_agree_but_pc; intros.
- destruct (PregEq.eq r rd); try update_x_access_x; try update_x_access_r.
- * eapply ptrofs_nextinstr_agree; eauto.
- + next_stuck_cong.
-Qed.
-
-Lemma store_preserved n rs1 m1 rs1' m1' rs2 m2 rd chk a: forall
- (BOUNDED: 0 <= n <= Ptrofs.max_unsigned)
- (MATCHI: match_internal n (State rs1 m1) (State rs2 m2))
- (HSTORE: exec_store lk chk a rd rs1 m1 = Next rs1' m1'),
- exists (rs2' : regset) (m2' : mem), Asm.exec_store tge chk a rd rs2 m2 = Next rs2' m2'
- /\ match_internal (n + 1) (State rs1' m1') (State rs2' m2').
-Proof.
- intros.
- unfold exec_store, Asm.exec_store in *.
- inversion MATCHI as [n0 r1 mx1 r2 mx2 EQM EQR EQPC]; subst.
- rewrite <- (eval_addressing_preserved a rs1 rs2); auto.
- destruct (Mem.storev _ _ _ _).
- + inversion HSTORE; auto. repeat (econstructor; eauto).
- * eapply nextinstr_agree_but_pc; intros.
- subst. apply EQR. auto.
- * eapply ptrofs_nextinstr_agree; subst; eauto.
- + next_stuck_cong.
-Qed.
-
-Lemma next_inst_preserved n rs1 m1 rs1' m1' rs2 m2 (x: dreg) v: forall
- (BOUNDED: 0 <= n <= Ptrofs.max_unsigned)
- (MATCHI: match_internal n (State rs1 m1) (State rs2 m2))
- (NEXTI: Next rs1 # x <- v m1 = Next rs1' m1'),
- exists (rs2' : regset) (m2' : mem),
- Next (Asm.nextinstr rs2 # x <- v) m2 = Next rs2' m2'
- /\ match_internal (n + 1) (State rs1' m1') (State rs2' m2').
-Proof.
- intros.
- inversion MATCHI as [n0 r1 mx1 r2 mx2 EQM EQR EQPC]; subst.
- inversion NEXTI. repeat (econstructor; eauto).
- * eapply nextinstr_agree_but_pc; intros.
- destruct (PregEq.eq r x); try update_x_access_x; try update_x_access_r.
- * eapply ptrofs_nextinstr_agree; eauto.
-Qed.
-
-Lemma match_internal_nextinstr_switch:
- forall n s rs2 m2 r v,
- r <> PC ->
- match_internal n s (State ((Asm.nextinstr rs2)#r <- v) m2) ->
- match_internal n s (State (Asm.nextinstr (rs2#r <- v)) m2).
-Proof.
- unfold Asm.nextinstr; intros n s rs2 m2 r v NOTPC1 MI.
- inversion MI; subst; constructor; auto.
- - eapply nextinstr_agree_but_pc; intros.
- rewrite AG; try congruence.
- destruct (PregEq.eq r r0); try update_x_access_x; try update_x_access_r.
- - rewrite !Pregmap.gss, !Pregmap.gso; try congruence.
- rewrite AGPC.
- rewrite Pregmap.gso, Pregmap.gss; try congruence.
-Qed.
-
-Lemma match_internal_nextinstr_set_parallel:
- forall n rs1 m1 rs2 m2 r v1 v2,
- r <> PC ->
- match_internal n (State rs1 m1) (State (Asm.nextinstr rs2) m2) ->
- v1 = v2 ->
- match_internal n (State (rs1#r <- v1) m1) (State (Asm.nextinstr (rs2#r <- v2)) m2).
-Proof.
- intros; subst; eapply match_internal_nextinstr_switch; eauto.
- intros; eapply match_internal_set_parallel; eauto.
-Qed.
-
-Lemma exec_basic_simulation:
- forall tf n rs1 m1 rs1' m1' rs2 m2 bi tbi
- (BOUNDED: 0 <= n <= Ptrofs.max_unsigned)
- (BASIC: exec_basic lk ge bi rs1 m1 = Next rs1' m1')
- (MATCHI: match_internal n (State rs1 m1) (State rs2 m2))
- (TRANSBI: basic_to_instruction bi = OK tbi),
- exists rs2' m2', Asm.exec_instr tge tf tbi
- rs2 m2 = Next rs2' m2'
- /\ match_internal (n + 1) (State rs1' m1') (State rs2' m2').
-Proof.
- intros.
- destruct bi.
- { (* PArith *)
- simpl in *; destruct i.
- 1,2,3,4,5,6: (* PArithP, PArithPP, PArithPPP, PArithRR0R, PArithRR0, PArithARRRR0 *)
- destruct i;
- try (destruct sumbool_rec; try congruence);
- try (monadInv TRANSBI);
- try (destruct_reg_inv);
- try (inv_matchi);
- try (exploit next_inst_preserved; eauto);
- try (repeat destruct_reg_size);
- try (destruct_ir0_reg).
- { (* PArithComparisonPP *)
- destruct i;
- try (monadInv TRANSBI);
- try (inv_matchi);
- try (destruct_reg_inv);
- simpl in *.
- 1,2: (* compare_long *)
- inversion BASIC; clear BASIC; subst;
- eexists; eexists; split; eauto;
- unfold compare_long;
- repeat (eapply match_internal_nextinstr_set_parallel; [ congruence | idtac | try (rewrite !AG; congruence)]);
- try (econstructor; eauto);
- try (eapply nextinstr_agree_but_pc; eauto);
- try (eapply ptrofs_nextinstr_agree; eauto).
-
- destruct sz.
- - (* compare_single *)
- unfold compare_single in BASIC.
- destruct (rs1 x), (rs1 x0);
- inversion BASIC;
- eexists; eexists; split; eauto;
- repeat (eapply match_internal_nextinstr_set_parallel; [ congruence | idtac | try (rewrite !AG; congruence)]);
- try (econstructor; eauto);
- try (eapply nextinstr_agree_but_pc; eauto);
- try (eapply ptrofs_nextinstr_agree; eauto).
- - (* compare_float *)
- unfold compare_float in BASIC.
- destruct (rs1 x), (rs1 x0);
- inversion BASIC;
- eexists; eexists; split; eauto;
- repeat (eapply match_internal_nextinstr_set_parallel; [ congruence | idtac | try (rewrite !AG; congruence)]);
- try (econstructor; eauto);
- try (eapply nextinstr_agree_but_pc; eauto);
- try (eapply ptrofs_nextinstr_agree; eauto). }
- 1,2: (* PArithComparisonR0R, PArithComparisonP *)
- destruct i;
- try (monadInv TRANSBI);
- try (inv_matchi);
- try (destruct_reg_inv);
- try (destruct_reg_size);
- simpl in *;
- inversion BASIC; clear BASIC; subst;
- eexists; eexists; split; eauto;
- unfold compare_long, compare_int, compare_float, compare_single;
- try (destruct_reg_size);
- repeat (eapply match_internal_nextinstr_set_parallel; [ congruence | idtac | try (rewrite !AG; congruence)]);
- try (econstructor; eauto);
- try (destruct_ir0_reg);
- try (eapply nextinstr_agree_but_pc; eauto);
- try (eapply ptrofs_nextinstr_agree; eauto).
- { (* Pcset *)
- try (monadInv TRANSBI);
- try (inv_matchi).
- try (exploit next_inst_preserved; eauto);
- try (simpl in *; intros;
- unfold if_opt_bool_val in *; unfold eval_testcond in *;
- rewrite <- !AG; try congruence; eauto). }
- { (* Pfmovi *)
- try (monadInv TRANSBI);
- try (inv_matchi);
- try (destruct_reg_size);
- try (destruct_ir0_reg);
- try (exploit next_inst_preserved; eauto). }
- { (* Pcsel *)
- try (destruct_reg_inv);
- try (monadInv TRANSBI);
- try (destruct_reg_inv);
- try (inv_matchi);
- try (exploit next_inst_preserved; eauto);
- simpl in *; intros;
- unfold if_opt_bool_val in *; unfold eval_testcond in *;
- rewrite <- !AG; try congruence; eauto. }
- { (* Pfnmul *)
- try (monadInv TRANSBI);
- try (inv_matchi);
- try (destruct_reg_size);
- try (exploit next_inst_preserved; eauto);
- try (find_rwrt_ag). } }
- { (* PLoad *)
- destruct ld; monadInv TRANSBI; try destruct_ireg_inv; exploit load_preserved; eauto;
- intros; simpl in *; destruct sz; eauto. }
- { (* PStore *)
- destruct st; monadInv TRANSBI; try destruct_ireg_inv; exploit store_preserved; eauto;
- simpl in *; inv_matchi; find_rwrt_ag. }
- { (* Pallocframe *)
- monadInv TRANSBI;
- inv_matchi; try pc_not_sp;
- destruct sz eqn:EQSZ;
- destruct Mem.alloc eqn:EQALLOC;
- destruct Mem.store eqn:EQSTORE; inversion BASIC; try pc_not_sp;
- eexists; eexists; split; eauto;
- repeat (eapply match_internal_nextinstr_set_parallel; [ try (pc_not_sp; congruence) | idtac | try (reflexivity)]);
- try (econstructor; eauto);
- try (eapply nextinstr_agree_but_pc; eauto);
- try (eapply ptrofs_nextinstr_agree; eauto). }
- { (* Pfreeframe *)
- monadInv TRANSBI;
- inv_matchi; try pc_not_sp;
- destruct sz eqn:EQSZ;
- destruct Mem.loadv eqn:EQLOAD;
- destruct (rs1 SP) eqn:EQRS1SP;
- try (destruct Mem.free eqn:EQFREE);
- inversion BASIC; try pc_not_sp;
- eexists; eexists; split; eauto;
- repeat (eapply match_internal_nextinstr_set_parallel; [ try (pc_not_sp; congruence) | idtac | try (reflexivity)]);
- try (econstructor; eauto);
- try (eapply nextinstr_agree_but_pc; eauto);
- try (eapply ptrofs_nextinstr_agree; eauto). }
- 1,2,3,4: (* Ploadsymbol, Pcvtsw2x, Pcvtuw2x, Pcvtx2w *)
- try (monadInv TRANSBI);
- try (inv_matchi);
- try (exploit next_inst_preserved; eauto);
- rewrite symbol_addresses_preserved; eauto;
- try (find_rwrt_ag).
-Qed.
-
-Lemma find_basic_instructions b ofs f bb tc: forall
- (FINDF: Genv.find_funct_ptr ge b = Some (Internal f))
- (FINDBB: find_bblock (Ptrofs.unsigned ofs) (fn_blocks f) = Some bb)
- (UNFOLD: unfold (fn_blocks f) = OK tc),
- forall n,
- (n < length (body bb))%nat ->
- exists (i : Asm.instruction) (bi : basic),
- list_nth_z (body bb) (Z.of_nat n) = Some bi
- /\ basic_to_instruction bi = OK i
- /\ Asm.find_instr (Ptrofs.unsigned ofs
- + (list_length_z (header bb))
- + Z.of_nat n) tc
- = Some i.
-Proof.
- intros until n; intros NLT.
- exploit internal_functions_unfold; eauto.
- intros (tc' & FINDtf & TRANStf & _).
- assert (tc' = tc) by congruence; subst.
- exploit (find_instr_bblock (list_length_z (header bb) + Z.of_nat n)); eauto.
- { unfold size; split.
- - rewrite list_length_z_nat; omega.
- - repeat (rewrite list_length_z_nat). repeat (rewrite Nat2Z.inj_add). omega. }
- intros (i & NTH & FIND_INSTR).
- exists i; intros.
- inv NTH.
- - (* absurd *) apply list_nth_z_range in H; omega.
- - exists bi;
- rewrite Z.add_simpl_l in H;
- rewrite Z.add_assoc in FIND_INSTR;
- intuition.
- - (* absurd *) rewrite bblock_size_aux in H0;
- rewrite H in H0; simpl in H0; repeat rewrite list_length_z_nat in H0; omega.
-Qed.
-
-(** "is_tail" auxiliary lemma about is_tail to move in IterList ou Coqlib (déplacer aussi Machblockgenproof.is_tail_app_inv) ? *)
-
-Lemma is_tail_app_right A (l2 l1: list A): is_tail l1 (l2++l1).
-Proof.
- intros; eapply Machblockgenproof.is_tail_app_inv; econstructor.
-Qed.
-
-Lemma is_tail_app_def A (l1 l2: list A):
- is_tail l1 l2 -> exists l3, l2 = l3 ++ l1.
-Proof.
- induction 1 as [|x l1 l2]; simpl.
- - exists nil; simpl; auto.
- - destruct IHis_tail as (l3 & EQ); rewrite EQ.
- exists (x::l3); simpl; auto.
-Qed.
-
-Lemma is_tail_bound A (l1 l2: list A):
- is_tail l1 l2 -> (length l1 <= length l2)%nat.
-Proof.
- intros H; destruct (is_tail_app_def _ _ _ H) as (l3 & EQ).
- subst; rewrite app_length.
- omega.
-Qed.
-
-Lemma is_tail_list_nth_z A (l1 l2: list A):
- is_tail l1 l2 -> list_nth_z l2 ((list_length_z l2) - (list_length_z l1)) = list_nth_z l1 0.
-Proof.
- induction 1; simpl.
- - replace (list_length_z c - list_length_z c) with 0; omega || auto.
- - assert (X: list_length_z (i :: c2) > list_length_z c1).
- { rewrite !list_length_z_nat, <- Nat2Z.inj_gt.
- exploit is_tail_bound; simpl; eauto.
- omega. }
- destruct (zeq (list_length_z (i :: c2) - list_length_z c1) 0) as [Y|Y]; try omega.
- replace (Z.pred (list_length_z (i :: c2) - list_length_z c1)) with (list_length_z c2 - list_length_z c1); auto.
- rewrite list_length_z_cons.
- omega.
-Qed.
-
-(* TODO: remplacer find_basic_instructions directement par ce lemme ? *)
-Lemma find_basic_instructions_alt b ofs f bb tc n: forall
- (FINDF: Genv.find_funct_ptr ge b = Some (Internal f))
- (FINDBB: find_bblock (Ptrofs.unsigned ofs) (fn_blocks f) = Some bb)
- (UNFOLD: unfold (fn_blocks f) = OK tc)
- (BOUND: 0 <= n < list_length_z (body bb)),
- exists (i : Asm.instruction) (bi : basic),
- list_nth_z (body bb) n = Some bi
- /\ basic_to_instruction bi = OK i
- /\ Asm.find_instr (Ptrofs.unsigned ofs
- + (list_length_z (header bb))
- + n) tc
- = Some i.
-Proof.
- intros; assert ((Z.to_nat n) < length (body bb))%nat.
- { rewrite Nat2Z.inj_lt, <- list_length_z_nat, Z2Nat.id; try omega. }
- exploit find_basic_instructions; eauto.
- rewrite Z2Nat.id; try omega. intros (i & bi & X).
- eexists; eexists; intuition eauto.
-Qed.
-
-Lemma header_body_tail_bound: forall (a: basic) (li: list basic) bb ofs
- (BOUNDBB : Ptrofs.unsigned ofs + size bb <= Ptrofs.max_unsigned)
- (BDYLENPOS : 0 <= list_length_z (body bb) - list_length_z (a :: li) <
- list_length_z (body bb)),
-0 <= list_length_z (header bb) + list_length_z (body bb) - list_length_z (a :: li) <=
-Ptrofs.max_unsigned.
-Proof.
- intros.
- assert (HBBPOS: list_length_z (header bb) >= 0) by eapply list_length_z_pos.
- assert (HBBSIZE: list_length_z (header bb) < size bb) by eapply header_size_lt_block_size.
- assert (OFSBOUND: 0 <= Ptrofs.unsigned ofs <= Ptrofs.max_unsigned) by eapply Ptrofs.unsigned_range_2.
- assert (BBSIZE: size bb <= Ptrofs.max_unsigned) by omega.
- unfold size in BBSIZE.
- rewrite !Nat2Z.inj_add in BBSIZE.
- rewrite <- !list_length_z_nat in BBSIZE.
- omega.
-Qed.
-
-(* A more general version of the exec_body_simulation_plus lemma below.
- This generalization is necessary for the induction proof inside the body.
-*)
-Lemma exec_body_simulation_plus_gen li: forall b ofs f bb rs m s2 rs' m'
- (BLI: is_tail li (body bb))
- (ATPC: rs PC = Vptr b ofs)
- (FINDF: Genv.find_funct_ptr ge b = Some (Internal f))
- (FINDBB: find_bblock (Ptrofs.unsigned ofs) (fn_blocks f) = Some bb)
- (NEMPTY_BODY: li <> nil)
- (MATCHI: match_internal ((list_length_z (header bb)) + (list_length_z (body bb)) - (list_length_z li)) (State rs m) s2)
- (BODY: exec_body lk ge li rs m = Next rs' m'),
- exists s2', plus Asm.step tge s2 E0 s2'
- /\ match_internal (size bb - (Z.of_nat (length_opt (exit bb)))) (State rs' m') s2'.
-Proof.
- induction li as [|a li]; simpl; try congruence.
- intros.
- assert (BDYLENPOS: 0 <= (list_length_z (body bb) - list_length_z (a::li)) < list_length_z (body bb)). {
- assert (Z.of_nat O < list_length_z (a::li) <= list_length_z (body bb)); try omega.
- rewrite !list_length_z_nat; split.
- - rewrite <- Nat2Z.inj_lt. simpl. omega.
- - rewrite <- Nat2Z.inj_le; eapply is_tail_bound; eauto.
- }
- exploit internal_functions_unfold; eauto.
- intros (tc & FINDtf & TRANStf & _).
- exploit find_basic_instructions_alt; eauto.
- intros (tbi & (bi & (NTHBI & TRANSBI & FIND_INSTR))).
- exploit is_tail_list_nth_z; eauto.
- rewrite NTHBI; simpl.
- intros X; inversion X; subst; clear X NTHBI.
- destruct (exec_basic _ _ _ _ _) eqn:EXEC_BASIC; next_stuck_cong.
- destruct s as (rs1 & m1); simpl in *.
- destruct s2 as (rs2 & m2); simpl in *.
- assert (BOUNDBBMAX: Ptrofs.unsigned ofs + size bb <= Ptrofs.max_unsigned)
- by (eapply size_of_blocks_bounds; eauto).
- exploit header_body_tail_bound; eauto. intros BDYTAIL.
- exploit exec_basic_simulation; eauto.
- intros (rs_next' & m_next' & EXEC_INSTR & MI_NEXT).
- exploit exec_basic_dont_move_PC; eauto. intros AGPC.
- inversion MI_NEXT as [A B C D E M_NEXT_AGREE RS_NEXT_AGREE ATPC_NEXT PC_OFS_NEXT RS RS'].
- subst A. subst B. subst C. subst D. subst E.
- rewrite ATPC in AGPC. symmetry in AGPC, ATPC_NEXT.
-
- inv MATCHI. symmetry in AGPC0.
- rewrite ATPC in AGPC0.
- unfold Val.offset_ptr in AGPC0.
-
- simpl in FIND_INSTR.
- (* Execute internal step. *)
- exploit (Asm.exec_step_internal tge b); eauto.
- {
- rewrite Ptrofs.add_unsigned.
- repeat (rewrite Ptrofs.unsigned_repr); try omega.
- 2: {
- assert (BOUNDOFS: 0 <= Ptrofs.unsigned ofs <= Ptrofs.max_unsigned) by eapply Ptrofs.unsigned_range_2.
- assert (list_length_z (body bb) <= size bb) by eapply body_size_le_block_size.
- assert (list_length_z (header bb) <= 1). { eapply size_header; eauto. }
- omega. }
- try rewrite list_length_z_nat; try split;
- simpl; rewrite <- !list_length_z_nat;
- replace (Ptrofs.unsigned ofs + (list_length_z (header bb) + list_length_z (body bb) -
- list_length_z (a :: li))) with (Ptrofs.unsigned ofs + list_length_z (header bb) +
- (list_length_z (body bb) - list_length_z (a :: li))) by omega;
- try assumption; try omega. }
-
- (* This is our STEP hypothesis. *)
- intros STEP_NEXT.
- destruct li as [|a' li]; simpl in *.
- - (* case of a single instruction in li: this our base case in the induction *)
- inversion BODY; subst.
- eexists; split.
- + apply plus_one. eauto.
- + constructor; auto.
- rewrite ATPC_NEXT.
- apply f_equal.
- apply f_equal.
- rewrite bblock_size_aux, list_length_z_cons; simpl.
- omega.
- - exploit (IHli b ofs f bb rs1 m_next' (State rs_next' m_next')); congruence || eauto.
- + exploit is_tail_app_def; eauto.
- intros (l3 & EQ); rewrite EQ.
- exploit (is_tail_app_right _ (l3 ++ a::nil)).
- rewrite <- app_assoc; simpl; eauto.
- + constructor; auto.
- rewrite ATPC_NEXT.
- apply f_equal.
- apply f_equal.
- rewrite! list_length_z_cons; simpl.
- omega.
- + intros (s2' & LAST_STEPS & LAST_MATCHS).
- eexists. split; eauto.
- eapply plus_left'; eauto.
-Qed.
-
-Lemma exec_body_simulation_plus b ofs f bb rs m s2 rs' m': forall
- (ATPC: rs PC = Vptr b ofs)
- (FINDF: Genv.find_funct_ptr ge b = Some (Internal f))
- (FINDBB: find_bblock (Ptrofs.unsigned ofs) (fn_blocks f) = Some bb)
- (NEMPTY_BODY: body bb <> nil)
- (MATCHI: match_internal (list_length_z (header bb)) (State rs m) s2)
- (BODY: exec_body lk ge (body bb) rs m = Next rs' m'),
- exists s2', plus Asm.step tge s2 E0 s2'
- /\ match_internal (size bb - (Z.of_nat (length_opt (exit bb)))) (State rs' m') s2'.
-Proof.
- intros.
- exploit exec_body_simulation_plus_gen; eauto.
- - constructor.
- - replace (list_length_z (header bb) + list_length_z (body bb) - list_length_z (body bb)) with (list_length_z (header bb)); auto.
- omega.
-Qed.
-
-Lemma exec_body_simulation_star b ofs f bb rs m s2 rs' m': forall
- (ATPC: rs PC = Vptr b ofs)
- (FINDF: Genv.find_funct_ptr ge b = Some (Internal f))
- (FINDBB: find_bblock (Ptrofs.unsigned ofs) (fn_blocks f) = Some bb)
- (MATCHI: match_internal (list_length_z (header bb)) (State rs m) s2)
- (BODY: exec_body lk ge (body bb) rs m = Next rs' m'),
- exists s2', star Asm.step tge s2 E0 s2'
- /\ match_internal (size bb - (Z.of_nat (length_opt (exit bb)))) (State rs' m') s2'.
-Proof.
- intros.
- destruct (body bb) eqn: Hbb.
- - simpl in BODY. inv BODY.
- eexists. split.
- eapply star_refl; eauto.
- assert (EQ: (size bb - Z.of_nat (length_opt (exit bb))) = list_length_z (header bb)).
- { rewrite bblock_size_aux. rewrite Hbb; unfold list_length_z; simpl. omega. }
- rewrite EQ; eauto.
- - exploit exec_body_simulation_plus; congruence || eauto.
- { rewrite Hbb; eauto. }
- intros (s2' & PLUS & MATCHI').
- eexists; split; eauto.
- eapply plus_star; eauto.
-Qed.
-
-Lemma list_nth_z_range_exceeded A (l : list A) n:
- n >= list_length_z l ->
- list_nth_z l n = None.
-Proof.
- intros N.
- remember (list_nth_z l n) as opt eqn:H. symmetry in H.
- destruct opt; auto.
- exploit list_nth_z_range; eauto. omega.
-Qed.
-
-Lemma label_in_header_list lbl a:
- is_label lbl a = true -> list_length_z (header a) <= 1 -> header a = lbl :: nil.
-Proof.
- intros.
- eapply is_label_correct_true in H.
- destruct (header a).
- - eapply in_nil in H. contradiction.
- - rewrite list_length_z_cons in H0.
- assert (list_length_z l0 >= 0) by eapply list_length_z_pos.
- assert (list_length_z l0 = 0) by omega.
- rewrite list_length_z_nat in H2.
- assert (Datatypes.length l0 = 0%nat) by omega.
- eapply length_zero_iff_nil in H3. subst.
- unfold In in H. destruct H.
- + subst; eauto.
- + destruct H.
-Qed.
-
-Lemma no_label_in_basic_inst: forall a lbl x,
- basic_to_instruction a = OK x -> Asm.is_label lbl x = false.
-Proof.
- intros.
- destruct a; simpl in *;
- repeat destruct i; simpl in *;
- try (try destruct_reg_inv; monadInv H; simpl in *; reflexivity).
-Qed.
-
-Lemma label_pos_body bdy: forall c1 c2 z ex lbl
- (HUNF : unfold_body bdy = OK c2),
- Asm.label_pos lbl (z + Z.of_nat ((Datatypes.length bdy) + length_opt ex)) c1 = Asm.label_pos lbl (z) ((c2 ++ unfold_exit ex) ++ c1).
-Proof.
- induction bdy.
- - intros. inversion HUNF. simpl in *.
- destruct ex eqn:EQEX.
- + simpl in *. unfold Asm.is_label. destruct c; simpl; try congruence.
- destruct i; simpl; try congruence.
- + simpl in *. ring_simplify (z + 0). auto.
- - intros. inversion HUNF; clear HUNF. monadInv H0. simpl in *.
- erewrite no_label_in_basic_inst; eauto. rewrite <- IHbdy; eauto.
- erewrite Zpos_P_of_succ_nat.
- apply f_equal2; auto. omega.
-Qed.
-
-Lemma asm_label_pos_header: forall z a x0 x1 lbl
- (HUNF: unfold_body (body a) = OK x1),
- Asm.label_pos lbl (z + size a) x0 =
- Asm.label_pos lbl (z + list_length_z (header a)) ((x1 ++ unfold_exit (exit a)) ++ x0).
-Proof.
- intros.
- unfold size.
- rewrite <- plus_assoc. rewrite Nat2Z.inj_add.
- rewrite list_length_z_nat.
- replace (z + (Z.of_nat (Datatypes.length (header a)) + Z.of_nat (Datatypes.length (body a) + length_opt (exit a)))) with (z + Z.of_nat (Datatypes.length (header a)) + Z.of_nat (Datatypes.length (body a) + length_opt (exit a))) by omega.
- eapply (label_pos_body (body a) x0 x1 (z + Z.of_nat (Datatypes.length (header a))) (exit a) lbl). auto.
-Qed.
-
-Lemma header_size_cons_nil: forall (l0: label) (l1: list label)
- (HSIZE: list_length_z (l0 :: l1) <= 1),
- l1 = nil.
-Proof.
- intros.
- destruct l1; try congruence. rewrite !list_length_z_cons in HSIZE.
- assert (list_length_z l1 >= 0) by eapply list_length_z_pos.
- assert (list_length_z l1 + 1 + 1 >= 2) by omega.
- assert (2 <= 1) by omega. contradiction H1. omega.
-Qed.
-
-Lemma label_pos_preserved_gen bbs: forall lbl c z
- (HUNF: unfold bbs = OK c),
- label_pos lbl z bbs = Asm.label_pos lbl z c.
-Proof.
- induction bbs.
- - intros. simpl in *. inversion HUNF. simpl. reflexivity.
- - intros. simpl in *. monadInv HUNF. unfold unfold_bblock in EQ.
- destruct (zle _ _); try congruence. monadInv EQ.
- destruct (is_label _ _) eqn:EQLBL.
- + erewrite label_in_header_list; eauto.
- simpl in *. destruct (peq lbl lbl); try congruence.
- + erewrite IHbbs; eauto.
- rewrite (asm_label_pos_header z a x0 x1 lbl); auto.
- unfold is_label in *.
- destruct (header a).
- * replace (z + list_length_z (@nil label)) with (z); eauto.
- unfold list_length_z. simpl. omega.
- * eapply header_size_cons_nil in l as HL1.
- subst. simpl in *. destruct (in_dec _ _); try congruence.
- simpl in *.
- destruct (peq _ _); try intuition congruence.
-Qed.
-
-Lemma label_pos_preserved f lbl z tf: forall
- (FINDF: transf_function f = OK tf),
- label_pos lbl z (fn_blocks f) = Asm.label_pos lbl z (Asm.fn_code tf).
-Proof.
- intros.
- eapply label_pos_preserved_gen.
- unfold transf_function in FINDF. monadInv FINDF.
- destruct zlt; try congruence. inversion EQ0. eauto.
-Qed.
-
-Lemma goto_label_preserved bb rs1 m1 rs1' m1' rs2 m2 lbl f tf v: forall
- (FINDF: transf_function f = OK tf)
- (BOUNDED: size bb <= Ptrofs.max_unsigned)
- (MATCHI: match_internal (size bb - 1) (State rs1 m1) (State rs2 m2))
- (HGOTO: goto_label f lbl (incrPC v rs1) m1 = Next rs1' m1'),
- exists (rs2' : regset) (m2' : mem), Asm.goto_label tf lbl rs2 m2 = Next rs2' m2'
- /\ match_states (State rs1' m1') (State rs2' m2').
-Proof.
- intros.
- unfold goto_label, Asm.goto_label in *.
- rewrite <- (label_pos_preserved f); auto.
- inversion MATCHI as [n0 r1 mx1 r2 mx2 EQM EQR EQPC]; subst.
- destruct label_pos; next_stuck_cong.
- destruct (incrPC v rs1 PC) eqn:INCRPC; next_stuck_cong.
- inversion HGOTO; auto. repeat (econstructor; eauto).
- rewrite <- EQPC.
- unfold incrPC in *.
- rewrite !Pregmap.gss in *.
- destruct (rs1 PC) eqn:EQRS1; simpl in *; try congruence.
- replace (rs2 # PC <- (Vptr b0 (Ptrofs.repr z))) with ((rs1 # PC <- (Vptr b0 (Ptrofs.add i0 v))) # PC <- (Vptr b (Ptrofs.repr z))); auto.
- eapply functional_extensionality. intros.
- destruct (PregEq.eq x PC); subst.
- rewrite !Pregmap.gss. congruence.
- rewrite !Pregmap.gso; auto.
-Qed.
-
-Lemma next_inst_incr_pc_preserved bb rs1 m1 rs1' m1' rs2 m2 f tf: forall
- (FINDF: transf_function f = OK tf)
- (BOUNDED: size bb <= Ptrofs.max_unsigned)
- (MATCHI: match_internal (size bb - 1) (State rs1 m1) (State rs2 m2))
- (NEXT: Next (incrPC (Ptrofs.repr (size bb)) rs1) m2 = Next rs1' m1'),
- exists (rs2' : regset) (m2' : mem),
- Next (Asm.nextinstr rs2) m2 = Next rs2' m2'
- /\ match_states (State rs1' m1') (State rs2' m2').
-Proof.
- intros; simpl in *; unfold incrPC in NEXT;
- inv_matchi;
- assert (size bb >= 1) by eapply bblock_size_pos;
- assert (0 <= size bb - 1 <= Ptrofs.max_unsigned) by omega;
- inversion NEXT; subst;
- eexists; eexists; split; eauto.
- assert (rs1 # PC <- (Val.offset_ptr (rs1 PC) (Ptrofs.repr (size bb))) = Asm.nextinstr rs2). {
- unfold Pregmap.set. apply functional_extensionality.
- intros x. destruct (PregEq.eq x PC).
- -- unfold Asm.nextinstr. rewrite <- AGPC.
- rewrite Val.offset_ptr_assoc. rewrite Ptrofs.add_unsigned.
- rewrite (Ptrofs.unsigned_repr (size bb - 1)); try omega.
- rewrite Ptrofs.unsigned_one.
- replace (size bb - 1 + 1) with (size bb) by omega.
- rewrite e. rewrite Pregmap.gss.
- reflexivity.
- -- eapply nextinstr_agree_but_pc; eauto. }
- rewrite H1. econstructor.
-Qed.
-
-Lemma pc_reg_overwrite: forall (r: ireg) rs1 m1 rs2 m2 bb
- (MATCHI: match_internal (size bb - 1) (State rs1 m1) (State rs2 m2)),
- rs2 # PC <- (rs2 r) =
- (rs1 # PC <- (Val.offset_ptr (rs1 PC) (Ptrofs.repr (size bb)))) # PC <-
- (rs1 r).
-Proof.
- intros.
- unfold Pregmap.set; apply functional_extensionality.
- intros x; destruct (PregEq.eq x PC) as [X | X]; try discriminate; inv_matchi.
-Qed.
-
-Lemma exec_cfi_simulation:
- forall bb f tf rs1 m1 rs1' m1' rs2 m2 cfi
- (SIZE: size bb <= Ptrofs.max_unsigned)
- (FINDF: transf_function f = OK tf)
- (* Warning: Asmblock's PC is assumed to be already pointing on the next instruction ! *)
- (CFI: exec_cfi ge f cfi (incrPC (Ptrofs.repr (size bb)) rs1) m1 = Next rs1' m1')
- (MATCHI: match_internal (size bb - 1) (State rs1 m1) (State rs2 m2)),
- exists rs2' m2', Asm.exec_instr tge tf (cf_instruction_to_instruction cfi)
- rs2 m2 = Next rs2' m2'
- /\ match_states (State rs1' m1') (State rs2' m2').
-Proof.
- intros.
- assert (BBPOS: size bb >= 1) by eapply bblock_size_pos.
- destruct cfi; inv CFI; simpl.
- - (* Pb *)
- exploit goto_label_preserved; eauto.
- - (* Pbc *)
- inv_matchi.
- unfold eval_testcond in *. destruct c;
- erewrite !incrPC_agree_but_pc in H0; try rewrite <- !AG; try congruence.
- all:
- destruct_reg_size;
- try destruct b eqn:EQB.
- 1,4,7,10,13,16,19,22,25,28,31,34:
- exploit goto_label_preserved; eauto.
- 1,3,5,7,9,11,13,15,17,19,21,23:
- exploit next_inst_incr_pc_preserved; eauto.
- all: repeat (econstructor; eauto).
- - (* Pbl *)
- eexists; eexists; split; eauto.
- assert ( ((incrPC (Ptrofs.repr (size bb)) rs1) # X30 <- (incrPC (Ptrofs.repr (size bb)) rs1 PC))
- # PC <- (Genv.symbol_address ge id Ptrofs.zero)
- = (rs2 # X30 <- (Val.offset_ptr (rs2 PC) Ptrofs.one))
- # PC <- (Genv.symbol_address tge id Ptrofs.zero)
- ) as EQRS. {
- unfold incrPC. unfold Pregmap.set. simpl. apply functional_extensionality.
- intros x. destruct (PregEq.eq x PC).
- * rewrite symbol_addresses_preserved. reflexivity.
- * destruct (PregEq.eq x X30).
- -- inv MATCHI. rewrite <- AGPC. rewrite Val.offset_ptr_assoc.
- unfold Ptrofs.add, Ptrofs.one. repeat (rewrite Ptrofs.unsigned_repr); try omega.
- replace (size bb - 1 + 1) with (size bb) by omega. reflexivity.
- -- inv MATCHI; rewrite AG; try assumption; reflexivity.
- } rewrite EQRS; inv MATCHI; reflexivity.
- - (* Pbs *)
- eexists; eexists; split; eauto.
- assert ( (incrPC (Ptrofs.repr (size bb)) rs1) # PC <-
- (Genv.symbol_address ge id Ptrofs.zero)
- = rs2 # PC <- (Genv.symbol_address tge id Ptrofs.zero)
- ) as EQRS. {
- unfold incrPC, Pregmap.set. rewrite symbol_addresses_preserved. inv MATCHI.
- apply functional_extensionality. intros x. destruct (PregEq.eq x PC); auto.
- } rewrite EQRS; inv MATCHI; reflexivity.
- - (* Pblr *)
- eexists; eexists; split; eauto.
- unfold incrPC. rewrite Pregmap.gss. rewrite Pregmap.gso; try discriminate.
- assert ( (rs2 # X30 <- (Val.offset_ptr (rs2 PC) Ptrofs.one)) # PC <- (rs2 r)
- = ((rs1 # PC <- (Val.offset_ptr (rs1 PC) (Ptrofs.repr (size bb))))
- # X30 <- (Val.offset_ptr (rs1 PC) (Ptrofs.repr (size bb))))
- # PC <- (rs1 r)
- ) as EQRS. {
- unfold Pregmap.set. apply functional_extensionality.
- intros x; destruct (PregEq.eq x PC) as [X | X].
- - inv_matchi; rewrite AG; auto.
- - destruct (PregEq.eq x X30) as [X' | X'].
- + inversion MATCHI; subst. rewrite <- AGPC.
- rewrite Val.offset_ptr_assoc. unfold Ptrofs.one.
- rewrite Ptrofs.add_unsigned. rewrite Ptrofs.unsigned_repr; try omega. rewrite Ptrofs.unsigned_repr; try omega.
- rewrite Z.sub_add; reflexivity.
- + inv_matchi.
- } rewrite EQRS. inv_matchi.
- - (* Pbr *)
- eexists; eexists; split; eauto.
- unfold incrPC. rewrite Pregmap.gso; try discriminate.
- rewrite (pc_reg_overwrite r rs1 m1' rs2 m2 bb); auto.
- inv_matchi.
- - (* Pret *)
- eexists; eexists; split; eauto.
- unfold incrPC. rewrite Pregmap.gso; try discriminate.
- rewrite (pc_reg_overwrite r rs1 m1' rs2 m2 bb); auto.
- inv_matchi.
- - (* Pcbnz *)
- inv_matchi.
- unfold eval_neg_branch in *.
- erewrite incrPC_agree_but_pc in H0; try congruence.
- destruct eval_testzero; next_stuck_cong.
- destruct b.
- * exploit next_inst_incr_pc_preserved; eauto.
- * exploit goto_label_preserved; eauto.
- - (* Pcbz *)
- inv_matchi.
- unfold eval_branch in *.
- erewrite incrPC_agree_but_pc in H0; try congruence.
- destruct eval_testzero; next_stuck_cong.
- destruct b.
- * exploit goto_label_preserved; eauto.
- * exploit next_inst_incr_pc_preserved; eauto.
- - (* Ptbnbz *)
- inv_matchi.
- unfold eval_branch in *.
- erewrite incrPC_agree_but_pc in H0; try congruence.
- destruct eval_testbit; next_stuck_cong.
- destruct b.
- * exploit goto_label_preserved; eauto.
- * exploit next_inst_incr_pc_preserved; eauto.
- - (* Ptbz *)
- inv_matchi.
- unfold eval_neg_branch in *.
- erewrite incrPC_agree_but_pc in H0; try congruence.
- destruct eval_testbit; next_stuck_cong.
- destruct b.
- * exploit next_inst_incr_pc_preserved; eauto.
- * exploit goto_label_preserved; eauto.
- - (* Pbtbl *)
- assert (rs2 # X16 <- Vundef r1 = (incrPC (Ptrofs.repr (size bb)) rs1) # X16 <- Vundef r1)
- as EQUNDEFX16. {
- unfold incrPC, Pregmap.set.
- destruct (PregEq.eq r1 X16) as [X16 | X16]; auto.
- destruct (PregEq.eq r1 PC) as [PC' | PC']; try discriminate.
- inv MATCHI; rewrite AG; auto.
- } rewrite <- EQUNDEFX16 in H0.
- destruct_reg_inv; next_stuck_cong.
- unfold goto_label, Asm.goto_label in *.
- rewrite <- (label_pos_preserved f); auto.
- inversion MATCHI; subst.
- destruct label_pos; next_stuck_cong.
- destruct (((incrPC (Ptrofs.repr (size bb)) rs1) # X16 <- Vundef) # X17 <- Vundef PC) eqn:INCRPC; next_stuck_cong.
- inversion H0; auto. repeat (econstructor; eauto).
- rewrite !Pregmap.gso; try congruence.
- rewrite <- AGPC.
- unfold incrPC in *.
- destruct (rs1 PC) eqn:EQRS1; simpl in *; try discriminate.
- replace (((rs2 # X16 <- Vundef) # X17 <- Vundef) # PC <- (Vptr b0 (Ptrofs.repr z))) with
- ((((rs1 # PC <- (Vptr b0 (Ptrofs.add i1 (Ptrofs.repr (size bb))))) # X16 <-
- Vundef) # X17 <- Vundef) # PC <- (Vptr b (Ptrofs.repr z))); auto.
- eapply functional_extensionality; intros x.
- destruct (PregEq.eq x PC); subst.
- + rewrite Pregmap.gso in INCRPC; try congruence.
- rewrite Pregmap.gso in INCRPC; try congruence.
- rewrite Pregmap.gss in INCRPC.
- rewrite !Pregmap.gss in *; congruence.
- + rewrite Pregmap.gso; auto.
- rewrite (Pregmap.gso (i := x) (j := PC)); auto.
- destruct (PregEq.eq x X17); subst.
- * rewrite !Pregmap.gss; auto.
- * rewrite !(Pregmap.gso (i := x) (j:= X17)); auto. destruct (PregEq.eq x X16); subst.
- -- rewrite !Pregmap.gss; auto.
- -- rewrite !Pregmap.gso; auto.
-Qed.
-
-Lemma last_instruction_cannot_be_label bb:
- list_nth_z (header bb) (size bb - 1) = None.
-Proof.
- assert (list_length_z (header bb) <= size bb - 1). {
- rewrite bblock_size_aux. generalize (bblock_size_aux_pos bb). omega.
- }
- remember (list_nth_z (header bb) (size bb - 1)) as label_opt; destruct label_opt; auto;
- exploit list_nth_z_range; eauto; omega.
-Qed.
-
-Lemma pc_ptr_exec_step: forall ofs bb b rs m _rs _m
- (ATPC : rs PC = Vptr b ofs)
- (MATCHI : match_internal (size bb - 1)
- {| _rs := rs; _m := m |}
- {| _rs := _rs; _m := _m |}),
- _rs PC = Vptr b (Ptrofs.add ofs (Ptrofs.repr (size bb - 1))).
-Proof.
- intros; inv MATCHI. rewrite <- AGPC; rewrite ATPC; unfold Val.offset_ptr; eauto.
-Qed.
-
-Lemma find_instr_ofs_somei: forall ofs bb f tc asmi rs m _rs _m
- (BOUNDOFS : Ptrofs.unsigned ofs + size bb <= Ptrofs.max_unsigned)
- (FIND_INSTR : Asm.find_instr (Ptrofs.unsigned ofs + (size bb - 1)) tc =
- Some (asmi))
- (MATCHI : match_internal (size bb - 1)
- {| _rs := rs; _m := m |}
- {| _rs := _rs; _m := _m |}),
- Asm.find_instr (Ptrofs.unsigned (Ptrofs.add ofs (Ptrofs.repr (size bb - 1))))
- (Asm.fn_code {| Asm.fn_sig := fn_sig f; Asm.fn_code := tc |}) =
- Some (asmi).
-Proof.
- intros; simpl.
- replace (Ptrofs.unsigned (Ptrofs.add ofs (Ptrofs.repr (size bb - 1))))
- with (Ptrofs.unsigned ofs + (size bb - 1)); try assumption.
- generalize (bblock_size_pos bb); generalize (Ptrofs.unsigned_range_2 ofs); intros.
- unfold Ptrofs.add.
- rewrite Ptrofs.unsigned_repr. rewrite Ptrofs.unsigned_repr; try omega.
- rewrite Ptrofs.unsigned_repr; omega.
-Qed.
-
-Lemma eval_builtin_arg_match: forall rs _m _rs a1 b1
- (AG : forall r : preg, r <> PC -> rs r = _rs r)
- (EVAL : eval_builtin_arg tge (fun r : dreg => rs r) (rs SP) _m a1 b1),
- eval_builtin_arg tge _rs (_rs SP) _m (map_builtin_arg DR a1) b1.
-Proof.
- intros; induction EVAL; simpl in *; try rewrite AG; try rewrite AG in EVAL; try discriminate; try congruence; eauto with barg.
- econstructor. rewrite <- AG; try discriminate; auto.
-Qed.
-
-Lemma eval_builtin_args_match: forall bb rs m _rs _m args vargs
- (MATCHI : match_internal (size bb - 1)
- {| _rs := rs; _m := m |}
- {| _rs := _rs; _m := _m |})
- (EVAL : eval_builtin_args tge (fun r : dreg => rs r) (rs SP) m args vargs),
- eval_builtin_args tge _rs (_rs SP) _m (map (map_builtin_arg DR) args) vargs.
-Proof.
- intros; inv MATCHI.
- induction EVAL; subst.
- - econstructor.
- - econstructor.
- + eapply eval_builtin_arg_match; eauto.
- + eauto.
-Qed.
-
-Lemma pc_both_sides: forall (rs _rs: regset) v
- (AG : forall r : preg, r <> PC -> rs r = _rs r),
- rs # PC <- v = _rs # PC <- v.
-Proof.
- intros; unfold Pregmap.set; apply functional_extensionality; intros y.
- destruct (PregEq.eq y PC); try rewrite AG; eauto.
-Qed.
-
-Lemma set_buitin_res_sym res: forall vres rs _rs r
- (NPC: r <> PC)
- (AG : forall r : preg, r <> PC -> rs r = _rs r),
- set_res res vres rs r = set_res res vres _rs r.
-Proof.
- induction res; simpl; intros; unfold Pregmap.set; try rewrite AG; eauto.
-Qed.
-
-Lemma set_builtin_res_dont_move_pc_gen res: forall vres rs _rs v1 v2
- (HV: v1 = v2)
- (AG : forall r : preg, r <> PC -> rs r = _rs r),
- (set_res res vres rs) # PC <- v1 =
- (set_res res vres _rs) # PC <- v2.
-Proof.
- intros. rewrite HV. generalize res vres rs _rs AG v2.
- clear res vres rs _rs AG v1 v2 HV.
- induction res.
- - simpl; intros. apply pc_both_sides; intros.
- unfold Pregmap.set; try rewrite AG; eauto.
- - simpl; intros; apply pc_both_sides; eauto.
- - simpl; intros.
- erewrite IHres2; eauto; intros.
- eapply set_buitin_res_sym; eauto.
-Qed.
-
-Lemma set_builtin_map_not_pc (res: builtin_res dreg): forall vres rs,
- set_res (map_builtin_res DR res) vres rs PC = rs PC.
-Proof.
- induction res.
- - intros; simpl. unfold Pregmap.set. destruct (PregEq.eq PC x); try congruence.
- - intros; simpl; congruence.
- - intros; simpl in *. rewrite IHres2. rewrite IHres1. reflexivity.
-Qed.
-
-Lemma undef_reg_preserved (rl: list mreg): forall rs _rs r
- (NPC: r <> PC)
- (AG : forall r : preg, r <> PC -> rs r = _rs r),
- undef_regs (map preg_of rl) rs r = undef_regs (map preg_of rl) _rs r.
-Proof.
- induction rl.
- - simpl; auto.
- - simpl; intros. erewrite IHrl; eauto.
- intros. unfold Pregmap.set. destruct (PregEq.eq r0 (preg_of a)); try rewrite AG; eauto.
-Qed.
-
-Lemma undef_regs_other:
- forall r rl rs,
- (forall r', In r' rl -> r <> r') ->
- undef_regs rl rs r = rs r.
-Proof.
- induction rl; simpl; intros. auto.
- rewrite IHrl by auto. rewrite Pregmap.gso; auto.
-Qed.
-
-Fixpoint preg_notin (r: preg) (rl: list mreg) : Prop :=
- match rl with
- | nil => True
- | r1 :: nil => r <> preg_of r1
- | r1 :: rl => r <> preg_of r1 /\ preg_notin r rl
- end.
-
-Remark preg_notin_charact:
- forall r rl,
- preg_notin r rl <-> (forall mr, In mr rl -> r <> preg_of mr).
-Proof.
- induction rl; simpl; intros.
- tauto.
- destruct rl.
- simpl. split. intros. intuition congruence. auto.
- rewrite IHrl. split.
- intros [A B]. intros. destruct H. congruence. auto.
- auto.
-Qed.
-
-Lemma undef_regs_other_2:
- forall r rl rs,
- preg_notin r rl ->
- undef_regs (map preg_of rl) rs r = rs r.
-Proof.
- intros. apply undef_regs_other. intros.
- exploit list_in_map_inv; eauto. intros [mr [A B]]. subst.
- rewrite preg_notin_charact in H. auto.
-Qed.
-
-Lemma exec_exit_simulation_plus b ofs f bb s2 t rs m rs' m': forall
- (FINDF: Genv.find_funct_ptr ge b = Some (Internal f))
- (FINDBB: find_bblock (Ptrofs.unsigned ofs) (fn_blocks f) = Some bb)
- (NEMPTY_EXIT: exit bb <> None)
- (MATCHI: match_internal (size bb - Z.of_nat (length_opt (exit bb))) (State rs m) s2)
- (EXIT: exec_exit ge f (Ptrofs.repr (size bb)) rs m (exit bb) t rs' m')
- (ATPC: rs PC = Vptr b ofs),
- plus Asm.step tge s2 t (State rs' m').
-Proof.
- intros.
- exploit internal_functions_unfold; eauto.
- intros (tc & FINDtf & TRANStf & _).
-
- exploit (find_instr_bblock (size bb - 1)); eauto.
- { generalize (bblock_size_pos bb). omega. }
- intros (i' & NTH & FIND_INSTR).
-
- inv NTH.
- + rewrite last_instruction_cannot_be_label in *. discriminate.
- + destruct (exit bb) as [ctrl |] eqn:NEMPTY_EXIT'. 2: { contradiction. }
- rewrite bblock_size_aux in *. rewrite NEMPTY_EXIT' in *. simpl in *.
- (* XXX: Is there a better way to simplify this expression i.e. automatically? *)
- replace (list_length_z (header bb) + list_length_z (body bb) + 1 - 1 -
- list_length_z (header bb)) with (list_length_z (body bb)) in H by omega.
- rewrite list_nth_z_range_exceeded in H; try omega. discriminate.
- + assert (Ptrofs.unsigned ofs + size bb <= Ptrofs.max_unsigned). {
- eapply size_of_blocks_bounds; eauto.
- }
- assert (size bb <= Ptrofs.max_unsigned). { generalize (Ptrofs.unsigned_range_2 ofs); omega. }
- destruct cfi.
- * (* control flow instruction *)
- destruct s2.
- rewrite H in EXIT. (* exit bb is a cfi *)
- inv EXIT.
- rewrite H in MATCHI. simpl in MATCHI.
- exploit internal_functions_translated; eauto.
- rewrite FINDtf.
- intros (tf & FINDtf' & TRANSf). inversion FINDtf'; subst; clear FINDtf'.
- exploit exec_cfi_simulation; eauto.
- (* extract exec_cfi_simulation's conclusion as separate hypotheses *)
- intros (rs2' & m2' & EXECI & MATCHS); rewrite MATCHS.
- apply plus_one.
- eapply Asm.exec_step_internal; eauto.
- - eapply pc_ptr_exec_step; eauto.
- - eapply find_instr_ofs_somei; eauto.
- * (* builtin *)
- destruct s2.
- rewrite H in EXIT.
- rewrite H in MATCHI. simpl in MATCHI.
- simpl in FIND_INSTR.
- inversion EXIT.
- apply plus_one.
- eapply external_call_symbols_preserved in H10; try (apply senv_preserved).
- eapply eval_builtin_args_preserved in H6; try (apply symbols_preserved).
- eapply Asm.exec_step_builtin; eauto.
- - eapply pc_ptr_exec_step; eauto.
- - eapply find_instr_ofs_somei; eauto.
- - eapply eval_builtin_args_match; eauto.
- - inv MATCHI; eauto.
- - inv MATCHI.
- unfold Asm.nextinstr, incrPC.
- assert (HPC: Val.offset_ptr (rs PC) (Ptrofs.repr (size bb))
- = Val.offset_ptr (_rs PC) Ptrofs.one).
- { rewrite <- AGPC. rewrite ATPC. unfold Val.offset_ptr.
- rewrite Ptrofs.add_assoc. unfold Ptrofs.add.
- assert (BBPOS: size bb >= 1) by eapply bblock_size_pos.
- rewrite (Ptrofs.unsigned_repr (size bb - 1)); try omega.
- rewrite Ptrofs.unsigned_one.
- replace (size bb - 1 + 1) with (size bb) by omega.
- reflexivity. }
- apply set_builtin_res_dont_move_pc_gen.
- -- erewrite !set_builtin_map_not_pc.
- erewrite !undef_regs_other_2.
- rewrite HPC; auto. all: rewrite preg_notin_charact; intros; try discriminate.
- -- intros. eapply undef_reg_preserved; eauto.
-Qed.
-
-Lemma exec_exit_simulation_star b ofs f bb s2 t rs m rs' m': forall
- (FINDF: Genv.find_funct_ptr ge b = Some (Internal f))
- (FINDBB: find_bblock (Ptrofs.unsigned ofs) (fn_blocks f) = Some bb)
- (MATCHI: match_internal (size bb - Z.of_nat (length_opt (exit bb))) (State rs m) s2)
- (EXIT: exec_exit ge f (Ptrofs.repr (size bb)) rs m (exit bb) t rs' m')
- (ATPC: rs PC = Vptr b ofs),
- star Asm.step tge s2 t (State rs' m').
-Proof.
- intros.
- destruct (exit bb) eqn: Hex.
- - eapply plus_star.
- eapply exec_exit_simulation_plus; try rewrite Hex; congruence || eauto.
- - inv MATCHI.
- inv EXIT.
- assert (X: rs2 = incrPC (Ptrofs.repr (size bb)) rs). {
- unfold incrPC. unfold Pregmap.set.
- apply functional_extensionality. intros x.
- destruct (PregEq.eq x PC) as [X|].
- - rewrite X. rewrite <- AGPC. simpl.
- replace (size bb - 0) with (size bb) by omega. reflexivity.
- - rewrite AG; try assumption. reflexivity.
- }
- destruct X.
- subst; eapply star_refl; eauto.
-Qed.
-
-Lemma exec_bblock_simulation b ofs f bb t rs m rs' m': forall
- (ATPC: rs PC = Vptr b ofs)
- (FINDF: Genv.find_funct_ptr ge b = Some (Internal f))
- (FINDBB: find_bblock (Ptrofs.unsigned ofs) (fn_blocks f) = Some bb)
- (EXECBB: exec_bblock lk ge f bb rs m t rs' m'),
- plus Asm.step tge (State rs m) t (State rs' m').
-Proof.
- intros; destruct EXECBB as (rs1 & m1 & BODY & CTL).
- exploit exec_header_simulation; eauto.
- intros (s0 & STAR & MATCH0).
- eapply star_plus_trans; traceEq || eauto.
- destruct (bblock_non_empty bb).
- - (* body bb <> nil *)
- exploit exec_body_simulation_plus; eauto.
- intros (s1 & PLUS & MATCH1).
- eapply plus_star_trans; traceEq || eauto.
- eapply exec_exit_simulation_star; eauto.
- erewrite <- exec_body_dont_move_PC; eauto.
- - (* exit bb <> None *)
- exploit exec_body_simulation_star; eauto.
- intros (s1 & STAR1 & MATCH1).
- eapply star_plus_trans; traceEq || eauto.
- eapply exec_exit_simulation_plus; eauto.
- erewrite <- exec_body_dont_move_PC; eauto.
-Qed.
-
-Lemma step_simulation s t s':
- Asmblock.step lk ge s t s' -> plus Asm.step tge s t s'.
-Proof.
- intros STEP.
- inv STEP; simpl; exploit functions_translated; eauto;
- intros (tf0 & FINDtf & TRANSf);
- monadInv TRANSf.
- - (* internal step *) eapply exec_bblock_simulation; eauto.
- - (* external step *)
- apply plus_one.
- exploit external_call_symbols_preserved; eauto. apply senv_preserved.
- intros ?.
- eapply Asm.exec_step_external; eauto.
-Qed.
-
-Lemma transf_program_correct:
- forward_simulation (Asmblock.semantics lk prog) (Asm.semantics tprog).
-Proof.
- eapply forward_simulation_plus.
- - apply senv_preserved.
- - eexact transf_initial_states.
- - eexact transf_final_states.
- - (* TODO step_simulation *)
- unfold match_states.
- simpl; intros; subst; eexists; split; eauto.
- eapply step_simulation; eauto.
-Qed.
-
-End PRESERVATION.
-
-End Asmblock_PRESERVATION.
-
-
-Local Open Scope linking_scope.
-
-Definition block_passes :=
- mkpass Machblockgenproof.match_prog
- ::: mkpass PseudoAsmblockproof.match_prog
- ::: mkpass Asmblockgenproof.match_prog
- (*::: mkpass PostpassSchedulingproof.match_prog*)
- ::: mkpass Asmblock_PRESERVATION.match_prog
- ::: pass_nil _.
-
-Definition match_prog := pass_match (compose_passes block_passes).
-
-Lemma transf_program_match:
- forall p tp, Asmgen.transf_program p = OK tp -> match_prog p tp.
-Proof.
- intros p tp H.
- unfold Asmgen.transf_program in H. apply bind_inversion in H. destruct H.
- inversion_clear H. apply bind_inversion in H1. destruct H1.
- inversion_clear H. inversion H2. remember (Machblockgen.transf_program p) as mbp.
- unfold match_prog; simpl.
- exists mbp; split. apply Machblockgenproof.transf_program_match; auto.
- exists x; split. apply PseudoAsmblockproof.transf_program_match; auto.
- exists x0; split. apply Asmblockgenproof.transf_program_match; auto.
- exists tp; split. apply Asmblock_PRESERVATION.transf_program_match; auto. auto.
-Qed.
-
-(** Return Address Offset *)
-
-Definition return_address_offset: Mach.function -> Mach.code -> ptrofs -> Prop :=
- Machblockgenproof.Mach_return_address_offset (PseudoAsmblockproof.rao Asmblockgenproof.next).
-
-Lemma return_address_exists:
- forall f sg ros c, is_tail (Mach.Mcall sg ros :: c) f.(Mach.fn_code) ->
- exists ra, return_address_offset f c ra.
-Proof.
- intros; eapply Machblockgenproof.Mach_return_address_exists; eauto.
-Admitted.
-
-Section PRESERVATION.
-
-Variable prog: Mach.program.
-Variable tprog: Asm.program.
-Hypothesis TRANSF: match_prog prog tprog.
-Let ge := Genv.globalenv prog.
-Let tge := Genv.globalenv tprog.
-
-Theorem transf_program_correct:
- forward_simulation (Mach.semantics return_address_offset prog) (Asm.semantics tprog).
-Proof.
- unfold match_prog in TRANSF. simpl in TRANSF.
- inv TRANSF. inv H. inv H1. inv H. inv H2. inv H. inv H3. inv H.
- eapply compose_forward_simulations.
- { exploit Machblockgenproof.transf_program_correct; eauto. }
- eapply compose_forward_simulations.
- + apply PseudoAsmblockproof.transf_program_correct; eauto.
- - intros; apply Asmblockgenproof.next_progress.
- - intros; eapply Asmblockgenproof.functions_bound_max_pos; eauto.
- { intros; eapply Asmblock_PRESERVATION.symbol_high_low; eauto. }
- + eapply compose_forward_simulations. apply Asmblockgenproof.transf_program_correct; eauto.
- { intros; eapply Asmblock_PRESERVATION.symbol_high_low; eauto. }
- apply Asmblock_PRESERVATION.transf_program_correct. eauto.
-Qed.
-
-End PRESERVATION.
-
-Instance TransfAsm: TransfLink match_prog := pass_match_link (compose_passes block_passes).
-
-(*******************************************)
-(* Stub actually needed by driver/Compiler *)
-
-Module Asmgenproof0.
-
-Definition return_address_offset := return_address_offset.
-
-End Asmgenproof0.
diff --git a/configure b/configure
index 078932d9..0e7efcaa 100755
--- a/configure
+++ b/configure
@@ -834,7 +834,7 @@ ARCHDIRS=$arch
EXECUTE=kvx-cluster --syscall=libstd_scalls.so --
CFLAGS= -D __KVX_COS__
SIMU=kvx-cluster --
-BACKENDLIB=Machblock.v Machblockgen.v Machblockgenproof.v OptionMonad.v IterList.v PseudoAsmblock.v PseudoAsmblockproof.v\\
+BACKENDLIB=Machblock.v Machblockgen.v Machblockgenproof.v OptionMonad.v IterList.v\\
Asmblock.v Asmblockgen.v Asmblockgenproof0.v Asmblockgenproof1.v Asmblockgenproof.v Asmvliw.v Asmblockprops.v\\
ForwardSimulationBlock.v PostpassScheduling.v PostpassSchedulingproof.v\\
Asmblockdeps.v DecBoolOps.v Chunks.v Peephole.v ExtValues.v ExtFloats.v\\
diff --git a/multiple_labels_crash_test/check.c b/multiple_labels_crash_test/check.c
deleted file mode 100644
index 3c2ff89d..00000000
--- a/multiple_labels_crash_test/check.c
+++ /dev/null
@@ -1,120 +0,0 @@
-#include "init.h"
-
-unsigned long long int checksum () {
- unsigned long long int seed = 0ULL;
- hash(&seed, var_36);
- hash(&seed, var_37);
- hash(&seed, var_38);
- hash(&seed, var_39);
- hash(&seed, var_40);
- hash(&seed, var_41);
- hash(&seed, var_42);
- hash(&seed, var_43);
- hash(&seed, var_44);
- hash(&seed, var_45);
- hash(&seed, var_46);
- hash(&seed, var_47);
- hash(&seed, var_48);
- hash(&seed, var_49);
- hash(&seed, var_50);
- hash(&seed, var_51);
- hash(&seed, var_52);
- hash(&seed, var_53);
- hash(&seed, var_54);
- hash(&seed, var_55);
- hash(&seed, var_56);
- hash(&seed, var_57);
- hash(&seed, var_58);
- hash(&seed, var_59);
- hash(&seed, var_60);
- hash(&seed, var_61);
- hash(&seed, var_62);
- hash(&seed, var_63);
- hash(&seed, var_64);
- hash(&seed, var_65);
- hash(&seed, var_70);
- hash(&seed, var_78);
- hash(&seed, var_82);
- hash(&seed, var_90);
- hash(&seed, var_94);
- hash(&seed, var_100);
- hash(&seed, var_106);
- hash(&seed, var_123);
- hash(&seed, var_129);
- hash(&seed, var_143);
- hash(&seed, var_152);
- hash(&seed, var_156);
- hash(&seed, var_162);
- hash(&seed, var_178);
- hash(&seed, var_217);
- hash(&seed, var_234);
- hash(&seed, var_240);
- hash(&seed, var_241);
- hash(&seed, var_260);
- hash(&seed, var_268);
- hash(&seed, var_284);
- hash(&seed, var_297);
- hash(&seed, var_314);
- hash(&seed, var_358);
- hash(&seed, var_359);
- hash(&seed, var_367);
- hash(&seed, var_392);
- hash(&seed, var_468);
- hash(&seed, var_500);
- hash(&seed, var_514);
- hash(&seed, var_522);
- hash(&seed, var_543);
- hash(&seed, var_544);
- hash(&seed, var_547);
- hash(&seed, var_549);
- hash(&seed, var_558);
- hash(&seed, var_591);
- hash(&seed, struct_obj_5.member_1_0);
- hash(&seed, struct_obj_5.member_1_1);
- hash(&seed, struct_obj_5.member_1_2);
- hash(&seed, struct_obj_5.member_1_3);
- hash(&seed, struct_obj_6.member_5_0);
- hash(&seed, struct_obj_6.member_5_1);
- hash(&seed, struct_obj_6.member_5_2);
- hash(&seed, struct_obj_6.member_5_3);
- hash(&seed, struct_obj_7.member_1_0);
- hash(&seed, struct_obj_7.member_1_1);
- hash(&seed, struct_obj_7.member_1_2);
- hash(&seed, struct_obj_7.member_1_3);
- hash(&seed, struct_obj_8.member_4_0);
- hash(&seed, struct_obj_8.member_4_1.member_3_0);
- hash(&seed, struct_obj_8.member_4_1.member_3_1.member_1_0);
- hash(&seed, struct_obj_8.member_4_1.member_3_1.member_1_1);
- hash(&seed, struct_obj_8.member_4_1.member_3_1.member_1_2);
- hash(&seed, struct_obj_8.member_4_1.member_3_1.member_1_3);
- hash(&seed, struct_obj_8.member_4_2);
- hash(&seed, struct_obj_8.member_4_3);
- hash(&seed, struct_obj_8.member_4_4);
- hash(&seed, struct_obj_8.member_4_5);
- hash(&seed, struct_obj_8.member_4_6);
- hash(&seed, struct_obj_8.member_4_7);
- hash(&seed, struct_obj_8.member_4_8);
- hash(&seed, struct_obj_8.member_4_9.member_1_0);
- hash(&seed, struct_obj_8.member_4_9.member_1_1);
- hash(&seed, struct_obj_8.member_4_9.member_1_2);
- hash(&seed, struct_obj_8.member_4_9.member_1_3);
- hash(&seed, struct_obj_9.member_2_0);
- hash(&seed, struct_obj_9.member_2_1.member_1_0);
- hash(&seed, struct_obj_9.member_2_1.member_1_1);
- hash(&seed, struct_obj_9.member_2_1.member_1_2);
- hash(&seed, struct_obj_9.member_2_1.member_1_3);
- hash(&seed, struct_obj_9.member_2_2);
- hash(&seed, struct_obj_9.member_2_3.member_1_0);
- hash(&seed, struct_obj_9.member_2_3.member_1_1);
- hash(&seed, struct_obj_9.member_2_3.member_1_2);
- hash(&seed, struct_obj_9.member_2_3.member_1_3);
- hash(&seed, struct_obj_9.member_2_4);
- hash(&seed, struct_obj_9.member_2_5);
- hash(&seed, struct_obj_9.member_2_6);
- hash(&seed, struct_obj_9.member_2_7);
- hash(&seed, struct_obj_10.member_1_0);
- hash(&seed, struct_obj_10.member_1_1);
- hash(&seed, struct_obj_10.member_1_2);
- hash(&seed, struct_obj_10.member_1_3);
- return seed;
-} \ No newline at end of file
diff --git a/multiple_labels_crash_test/driver.c b/multiple_labels_crash_test/driver.c
deleted file mode 100644
index 3084e131..00000000
--- a/multiple_labels_crash_test/driver.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <stdio.h>
-#include "init.h"
-
-extern void init ();
-extern void foo ();
-extern unsigned long long int checksum ();
-
-int main () {
- init ();
- foo ();
- printf("%llu\n", checksum ()); return 0;
-} \ No newline at end of file
diff --git a/multiple_labels_crash_test/func.c b/multiple_labels_crash_test/func.c
deleted file mode 100644
index cc9d3653..00000000
--- a/multiple_labels_crash_test/func.c
+++ /dev/null
@@ -1,915 +0,0 @@
-#include "init.h"
-
-void foo ()
-{
- unsigned short var_66 = ~((int) ((((int) (((int) (((int) (-27782)) > ((int) (5913)))) <= ((int) ((signed char) (11720))))) | ((int) (30935))) <= (((~((int) (-17))) * (((int) (92)) * ((int) (7)))) * ((int) (56914)))));
- if ((unsigned short) ((short) (((int) ((unsigned short) (((int) (-5211)) & ((int) (var_47))))) <= (((int) ((short) (15973))) & ((int) (17901))))))
- {
- var_58 = (signed char) (((int) ((((int) (-104)) | ((((int) (-16858)) ^ ((int) (var_24))) ^ ((int) ((signed char) (-45))))) <= ((int) ((signed char) (+((int) (struct_obj_4.member_2_5))))))) != (((int) (4536)) || ((int) (50251))));
- if ((((((int) (63229)) && ((int) ((signed char) (115)))) - ((int) (struct_obj_4.member_2_3.member_1_0))) - (((!((int) (-7155))) || ((int) (-7))) << (((int) ((signed char) (-((int) (var_15))))) - (43)))) || (-((((int) ((signed char) (struct_obj_10.member_1_3))) - (((int) (-24985)) + ((int) (var_31)))) - ((+((int) (253))) + (((int) (-26639)) + ((int) (24190)))))))
- {
- short var_67 = (!((int) (((!((int) (6))) && (!((int) (21935)))) != ((int) ((unsigned short) (((int) (51591)) & ((int) (-41)))))))) << ((int) (((~((int) (-29500))) & (~(((int) (var_27)) & ((int) (struct_obj_6.member_5_2))))) <= ((int) (var_23))));
- signed char var_68 = (short) ((~((int) ((unsigned short) (~((int) (var_28)))))) | (~((int) ((short) (~((int) (var_6)))))));
- if (((((int) (struct_obj_7.member_1_1)) ^ ((((((int) (-12017)) + (2147483647)) >> (((int) (-5)) + (5))) >> ((((int) (struct_obj_4.member_2_7)) ^ ((int) (var_34))) - (9570))) >> ((int) ((~((int) ((short) (struct_obj_4.member_2_1.member_1_0)))) != (((int) ((signed char) (var_1))) | ((int) ((unsigned short) ((((int) (var_19)) & ((int) (struct_obj_1.member_5_2))) & (~((int) (-114))))))))))) + (2147483647)) >> ((((((int) (var_29)) & ((int) (var_8))) | ((int) ((unsigned short) (var_48)))) & ((~((int) (struct_obj_8.member_4_5))) << (((int) ((unsigned short) (struct_obj_8.member_4_6))) - (51692)))) << ((((((int) (49144)) << (((int) (struct_obj_5.member_1_1)) - (28946))) << (((-((int) ((signed char) ((((int) ((short) (-246))) ^ (((int) (var_30)) << (((int) (var_3)) - (49)))) || ((+((int) (var_9))) >> ((((int) (struct_obj_4.member_2_1.member_1_0)) | ((int) (53547))) - (53607))))))) + (20)) - (15))) ^ ((((int) (27896)) ^ ((int) (struct_obj_2.member_5_1))) << ((~((int) (var_56))) + (20190)))) - (100631155))))
- {
- unsigned short var_69 = ((int) (((int) (((int) ((((int) (struct_obj_3.member_5_1)) && ((int) (var_18))) < ((int) (((int) (14551)) <= ((int) (-206)))))) >= ((int) ((~((int) ((short) (struct_obj_4.member_2_1.member_1_0)))) != (((int) ((signed char) (var_1))) | ((int) ((unsigned short) ((((int) (var_19)) & ((int) (struct_obj_1.member_5_2))) & (~((int) (-114))))))))))) != (!(((((int) (-2718)) * ((int) (struct_obj_9.member_2_7))) + (2147483647)) >> (((int) ((unsigned short) (-122))) - (65411)))))) >> ((!((!((int) (-34))) && (!((int) (11439))))) || (((((int) (10371)) || ((int) (18010))) || (((int) (52917)) && ((int) (-118)))) || ((((int) (23)) || ((int) (15037))) && (((int) (93)) && ((int) (-12489))))));
- var_70 = (signed char) (((((((int) (34812)) * ((int) (var_13))) / (((int) (struct_obj_1.member_5_1)) * ((int) (var_65)))) * (!(((int) (var_35)) * ((int) (62))))) * (-((int) ((~((int) ((short) (struct_obj_4.member_2_1.member_1_0)))) != (((int) ((signed char) (var_1))) | ((int) ((unsigned short) ((((int) (var_19)) & ((int) (struct_obj_1.member_5_2))) & (~((int) (-114))))))))))) ^ (-((int) ((signed char) ((((int) ((short) (-246))) ^ (((int) (var_30)) << (((int) (var_3)) - (49)))) || ((+((int) (var_9))) >> ((((int) (struct_obj_4.member_2_1.member_1_0)) | ((int) (53547))) - (53607))))))));
- struct_obj_9.member_2_5 = (unsigned short) (((((-((int) ((signed char) ((((int) ((short) (-246))) ^ (((int) (var_30)) << (((int) (var_3)) - (49)))) || ((+((int) (var_9))) >> ((((int) (struct_obj_4.member_2_1.member_1_0)) | ((int) (53547))) - (53607))))))) ^ (((~((int) (44847))) + (2147483647)) >> (((int) ((short) (var_4))) - (3630)))) + (2147483647)) << (((int) ((unsigned short) ((~((int) (struct_obj_2.member_5_1))) | (~((int) (struct_obj_4.member_2_3.member_1_0)))))) - (65535))) ^ (~(~(((int) ((unsigned short) (var_41))) ^ (((int) (struct_obj_9.member_2_5)) << (((int) (struct_obj_9.member_2_4)) - (13536)))))));
- unsigned short var_71 = (unsigned short) (~((int) ((signed char) ((((int) (15546)) << (((int) (58115)) - (58101))) >> ((~((int) (-17858))) - (17855))))));
- unsigned short var_72 = ((int) ((((int) ((signed char) (((int) (var_53)) > ((int) (struct_obj_7.member_1_0))))) * ((int) (((int) (((int) (struct_obj_1.member_5_2)) <= ((int) (4016)))) > (((int) (23666)) % ((int) (-117)))))) <= (((int) ((((int) (struct_obj_4.member_2_6)) ^ ((int) (struct_obj_1.member_5_3))) <= ((int) (var_52)))) && (~((int) (58979)))))) * ((int) (struct_obj_1.member_5_0));
- short var_73 = ((int) ((((~((int) (var_46))) | (((int) (struct_obj_9.member_2_1.member_1_1)) | ((int) (42879)))) | ((~((int) (var_55))) & (((int) (var_66)) & ((int) (struct_obj_10.member_1_3))))) <= ((int) ((~(!((int) (64290)))) > ((int) ((signed char) (((int) (struct_obj_1.member_5_3)) * ((int) (10324))))))))) >> (!((~(~((int) (var_30)))) >> (((((int) (struct_obj_9.member_2_4)) | ((int) (struct_obj_3.member_5_2))) & ((int) (struct_obj_9.member_2_0))) - (41371))));
- unsigned short var_74 = (((int) (struct_obj_8.member_4_5)) + (2147483647)) << ((((((((int) ((short) (~((((int) ((short) ((short) (~(((int) (65)) << (((int) (-26039)) + (26049))))))) + (2147483647)) >> ((~((int) ((unsigned short) ((((int) (40110)) | ((int) (85))) << ((((int) ((short) (-45))) + (61)) - (14)))))) + (29723)))))) + (29)) - (26)) - (0)) - (0)) - (0)) - (1));
- unsigned short var_75 = ((int) ((short) (23390))) + (((int) (((int) (((int) ((signed char) (struct_obj_10.member_1_3))) <= ((((int) ((short) ((short) (~(((int) (65)) << (((int) (-26039)) + (26049))))))) + (2147483647)) >> ((~((int) ((unsigned short) ((((int) (40110)) | ((int) (85))) << ((((int) ((short) (-45))) + (61)) - (14)))))) + (29723))))) < ((((int) (-41)) && ((int) (var_71))) && (!((int) (5)))))) ^ (((((int) (35578)) * ((int) (struct_obj_5.member_1_0))) * (((int) (var_69)) * ((int) (103)))) || ((int) (struct_obj_8.member_4_7))));
- short var_76 = ((int) (-63)) + ((int) ((short) ((((int) (((int) (46788)) != ((int) (struct_obj_4.member_2_1.member_1_3)))) || (!((int) (-115)))) << (((((int) (struct_obj_4.member_2_1.member_1_1)) * ((int) (var_1))) - (((int) (20657)) + ((int) (struct_obj_9.member_2_0)))) + (1945793196)))));
- short var_77 = +(((+(((int) (117)) * ((int) (-115)))) * ((((int) (57)) * ((int) (-8289))) / ((-((((int) (var_26)) || (((int) (1474)) && ((int) (var_34)))) || ((!((int) (95))) && (((int) (var_26)) || ((int) (7528)))))) - ((int) (struct_obj_4.member_2_0))))) * ((int) ((signed char) (var_65))));
- }
-
- var_78 = (short) (((((((int) (var_61)) | ((int) (var_15))) | (((int) (var_52)) & ((int) (5914)))) & (~((int) (struct_obj_2.member_5_0)))) | (~(~(((int) (31461)) | ((int) (var_24)))))) != ((int) ((signed char) ((~((int) (((int) (struct_obj_6.member_5_0)) < ((int) (struct_obj_9.member_2_6))))) * ((+((int) (21135))) && (!((int) (100))))))));
- if (-((int) (struct_obj_8.member_4_0)))
- {
- signed char var_79 = var_12;
- unsigned short var_80 = var_56;
- short var_81 = !(((((int) (struct_obj_4.member_2_0)) || (((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)) && ((int) (45)))) || ((int) ((short) (((int) (struct_obj_1.member_5_1)) || ((int) (var_67)))))) || ((int) (var_31)));
- var_54 = (short) ((((int) (var_54)) + (2147483647)) >> (((int) ((short) (((int) (var_62)) ^ ((int) (struct_obj_2.member_5_2))))) - (25016)));
- var_82 = (unsigned short) ((~((int) (((~((int) (var_47))) * ((((int) (struct_obj_7.member_1_1)) + (2147483647)) >> (((int) (var_18)) - (75)))) <= ((!((int) (var_66))) % ((int) ((unsigned short) (8))))))) > (+((~((((int) (-22)) * ((int) (struct_obj_4.member_2_3.member_1_3))) / (((int) (-32289)) * ((int) (var_6))))) * (~((((int) (struct_obj_2.member_5_1)) * ((int) (var_4))) * (!((int) (var_7))))))));
- short var_83 = (-(-((int) ((~((int) (struct_obj_10.member_1_3))) <= (((int) (struct_obj_8.member_4_2)) * ((int) (29850))))))) >> (((int) (((int) ((~((int) ((short) (struct_obj_4.member_2_1.member_1_0)))) != (((int) ((signed char) (var_1))) | ((int) ((unsigned short) ((((int) (var_19)) & ((int) (struct_obj_1.member_5_2))) & (~((int) (-114))))))))) <= (((int) (struct_obj_5.member_1_1)) * ((int) (var_51))))) & (((int) ((+((int) (struct_obj_9.member_2_1.member_1_0))) <= ((int) ((signed char) (21412))))) >> (((int) (var_13)) + (23934))));
- signed char var_84 = !(-((int) (struct_obj_5.member_1_0)));
- signed char var_85 = ((int) ((~((int) ((short) (struct_obj_4.member_2_1.member_1_0)))) != (((int) ((signed char) (var_1))) | ((int) ((unsigned short) ((((int) (var_19)) & ((int) (struct_obj_1.member_5_2))) & (~((int) (-114))))))))) * (((int) ((unsigned short) ((~((int) (var_15))) / (((int) (var_23)) * ((int) (var_15)))))) * (((int) ((short) (((int) (struct_obj_1.member_5_2)) * ((int) (struct_obj_3.member_5_0))))) * ((((int) (struct_obj_1.member_5_1)) * ((int) (struct_obj_4.member_2_6))) / (((int) (var_26)) * ((int) (60852))))));
- short var_86 = -((int) (struct_obj_9.member_2_6));
- }
-
- short var_87 = ((int) ((short) ((((int) (((int) (-4380)) > ((int) (var_20)))) || (((int) (struct_obj_2.member_5_1)) >> (((int) (var_56)) - (20160)))) <= ((((int) (struct_obj_4.member_2_3.member_1_3)) && ((int) (struct_obj_2.member_5_2))) || (!((int) (struct_obj_6.member_5_2))))))) < (~(((int) (33)) || ((int) ((short) (((int) (var_12)) * ((int) (var_40)))))));
- }
-
- if ((~(((int) (((int) ((unsigned short) (83))) >= ((int) ((unsigned short) (29637))))) || ((((int) (10308)) && ((int) (struct_obj_3.member_5_0))) || (((int) (var_33)) || ((int) (var_28)))))) < ((int) ((signed char) (+((int) ((signed char) (((int) (var_2)) - ((int) (struct_obj_4.member_2_7)))))))))
- {
- signed char var_88 = (short) (!((int) ((unsigned short) (!(((int) (var_17)) || ((int) (struct_obj_8.member_4_7)))))));
- if (((int) (((int) (((int) ((((int) (59)) && ((int) (var_47))) <= (((int) (17266)) - ((int) (3015))))) != ((int) (var_17)))) >= ((int) ((unsigned short) (struct_obj_4.member_2_7))))) ^ ((~((((int) (80)) >> (((int) (91)) - (69))) | ((int) ((unsigned short) (struct_obj_1.member_5_0))))) ^ (((~((int) (39542))) & ((int) (60573))) ^ ((((int) (-21393)) ^ ((int) (-10090))) << (((int) (-10709)) + (10717))))))
- {
- short var_89 = ~(!(((((int) (64831)) && ((int) (-102))) && (!((int) (-122)))) && (((int) ((signed char) (-26762))) && (((int) (92)) && ((int) (-82))))));
- var_90 = (short) ((signed char) (((((int) ((short) (struct_obj_5.member_1_0))) ^ (((int) (11026)) | ((int) (1914)))) ^ (((int) (var_1)) ^ (((int) (struct_obj_10.member_1_3)) | ((int) (-10))))) & (((int) (struct_obj_8.member_4_9.member_1_0)) | ((int) (var_88)))));
- signed char var_91 = ~(!(~(((int) ((signed char) (struct_obj_9.member_2_1.member_1_3))) & ((int) (var_9)))));
- signed char var_92 = ~(~((~((((int) (63094)) | ((int) (struct_obj_4.member_2_2))) >> ((((int) (23595)) >> (((int) (struct_obj_4.member_2_0)) - (7603))) - (171)))) & ((int) ((unsigned short) (45532)))));
- signed char var_93 = (signed char) (~(~((int) ((signed char) (struct_obj_3.member_5_3)))));
- var_94 = (unsigned short) (((int) ((short) (((((int) (var_16)) ^ ((int) (56567))) & ((int) ((unsigned short) (struct_obj_7.member_1_0)))) | ((int) (var_8))))) & (~((((int) ((short) (var_5))) ^ (~((int) (var_32)))) | ((int) ((signed char) (((int) (var_34)) & ((int) (44163))))))));
- unsigned short var_95 = ~((int) (var_52));
- signed char var_96 = (~(!((int) ((!((int) (struct_obj_4.member_2_3.member_1_0))) > ((int) ((signed char) (19985))))))) <= ((int) ((unsigned short) (((-((int) (14064))) / (((int) (13781)) * ((int) (struct_obj_4.member_2_4)))) * ((((int) (-8630)) * ((int) (var_33))) / ((int) ((short) (struct_obj_2.member_5_2)))))));
- unsigned short var_97 = ~(~(((int) (-7658)) | (!(((int) (-28143)) || ((int) (-16555))))));
- }
- else
- {
- short var_98 = (signed char) (~((int) ((signed char) ((((int) (-8)) * ((int) (38))) * (((int) (44)) * ((int) (-25899)))))));
- short var_99 = ~((!((((int) (45811)) * ((int) (18866))) / (((int) (36128)) * ((int) (57))))) * ((int) (-15867)));
- var_100 = (short) (struct_obj_6.member_5_3);
- unsigned short var_101 = (short) (~(-((((int) (var_12)) * ((int) (struct_obj_4.member_2_4))) / (((int) (63446)) * ((int) (var_5))))));
- unsigned short var_102 = ~(~(-(+((int) ((unsigned short) ((((int) (var_27)) + (((int) (struct_obj_4.member_2_7)) + ((int) (struct_obj_2.member_5_1)))) - (+((int) (22407)))))))));
- unsigned short var_103 = ((int) (((((((int) (-103)) + (2147483647)) >> (((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)) + (103))) ^ ((int) ((unsigned short) (var_42)))) >> (((int) (struct_obj_7.member_1_0)) + (87))) < (+((int) ((unsigned short) ((((int) (var_27)) + (((int) (struct_obj_4.member_2_7)) + ((int) (struct_obj_2.member_5_1)))) - (+((int) (22407))))))))) | ((int) ((signed char) ((!(((int) (var_32)) * ((int) (struct_obj_8.member_4_9.member_1_2)))) << ((~((int) ((unsigned short) (121)))) + (152)))));
- signed char var_104 = +(-((int) ((signed char) ((unsigned short) (((int) (-127)) > ((int) (-91)))))));
- signed char var_105 = ((((-((int) (30661))) * ((int) ((unsigned short) (var_5)))) / ((int) ((signed char) (-((int) (struct_obj_2.member_5_3)))))) / (~(~(-(+((int) ((unsigned short) ((((int) (var_27)) + (((int) (struct_obj_4.member_2_7)) + ((int) (struct_obj_2.member_5_1)))) - (+((int) (22407))))))))))) * ((+((int) ((unsigned short) ((((int) (var_27)) + (((int) (struct_obj_4.member_2_7)) + ((int) (struct_obj_2.member_5_1)))) - (+((int) (22407))))))) * ((+(((int) (var_11)) * ((int) (struct_obj_8.member_4_3)))) * (((int) ((unsigned short) (struct_obj_1.member_5_2))) / (((int) (-95)) * ((int) (var_50))))));
- }
-
- var_106 = (short) ((signed char) (struct_obj_8.member_4_8));
- unsigned short var_107 = ((((int) ((((int) (struct_obj_4.member_2_3.member_1_3)) % ((int) (43869))) < ((((int) (var_55)) + (2147483647)) >> (((int) (var_3)) - (28))))) / (((int) ((unsigned short) (var_29))) - ((int) ((signed char) (var_26))))) * ((int) ((signed char) ((short) (((int) (-65)) * ((int) (struct_obj_3.member_5_0))))))) != (+(~((int) ((signed char) ((((int) ((short) ((unsigned short) (struct_obj_1.member_5_1)))) / (-(((int) (var_32)) * ((int) (struct_obj_4.member_2_3.member_1_0))))) * ((~(-((int) (struct_obj_1.member_5_0)))) * ((int) (var_27))))))));
- if (32515)
- {
- var_46 = (unsigned short) (!(((int) ((unsigned short) ((~((int) (var_3))) ^ (((int) (19146)) | ((int) (struct_obj_2.member_5_2)))))) & ((~(((int) (struct_obj_8.member_4_4)) ^ ((int) (var_2)))) & ((((int) (33293)) | ((int) (var_55))) ^ (~((int) (struct_obj_4.member_2_1.member_1_0)))))));
- short var_108 = (short) ((((((int) (14)) & ((int) (var_53))) | (((int) (var_53)) & ((int) (var_19)))) | (~(~((int) (var_54))))) ^ (((((int) (-18302)) & ((int) (63))) & ((int) (struct_obj_1.member_5_2))) ^ (~((int) ((unsigned short) (8902))))));
- unsigned short var_109 = (unsigned short) (+((int) ((+((int) ((unsigned short) (61136)))) != (-((int) ((signed char) (var_28)))))));
- short var_110 = (signed char) (~(~((int) (struct_obj_4.member_2_5))));
- var_40 = (signed char) ((((~((((int) (31124)) ^ ((int) (32575))) | ((((int) (-25599)) + (2147483647)) << ((((((((int) (43839)) - (43838)) - (0)) - (0)) - (0)) - (0)) - (1))))) + (2147483647)) << ((((~(((int) (56)) | ((int) (42861)))) + (2147483647)) << ((((((~((int) ((unsigned short) (29861)))) + (29886)) - (23)) - (0)) - (0)) - (1))) - (2147440759))) || ((int) ((short) (-(~((int) (((int) (struct_obj_9.member_2_2)) > ((int) (-28602)))))))));
- unsigned short var_111 = ((int) ((signed char) (((int) ((((int) (var_14)) << (((int) (5053)) - (5042))) >= (~((int) ((unsigned short) (-(((int) (var_31)) * (!((int) (struct_obj_4.member_2_3.member_1_2)))))))))) & ((int) ((unsigned short) (4610)))))) << (((int) (var_20)) - (49510));
- unsigned short var_112 = (unsigned short) (((((int) ((unsigned short) (var_7))) && (((int) (struct_obj_8.member_4_9.member_1_1)) && ((int) (var_11)))) && ((((int) (struct_obj_7.member_1_1)) || ((int) (var_17))) || (((int) (var_10)) || ((int) (24048))))) % (((int) ((unsigned short) (((int) (12332)) * ((int) (59))))) * (~(-((int) (var_17))))));
- signed char var_113 = ~((((int) ((short) ((signed char) (44957)))) | ((~((int) (15636))) | (((int) (var_59)) ^ ((int) (var_109))))) & ((int) (13)));
- short var_114 = ~((((~((int) (var_16))) | (~((int) (var_40)))) & (~(((int) (struct_obj_10.member_1_2)) & ((int) (struct_obj_8.member_4_9.member_1_0))))) ^ ((int) ((short) (((int) ((unsigned short) (struct_obj_8.member_4_2))) & (~((int) (7475)))))));
- unsigned short var_115 = (-((int) (28145))) - (((((int) ((unsigned short) (25233))) + ((int) ((signed char) (110)))) - ((((int) (17997)) - ((int) (var_45))) + ((int) ((signed char) (29))))) + (((((int) (26576)) - ((int) (struct_obj_9.member_2_4))) - (((int) (var_47)) + ((int) (118)))) - (+((int) ((signed char) (-101))))));
- }
-
- }
- else
- {
- unsigned short var_116 = ((((((int) (29480)) * ((int) (47))) * (~((int) (-106)))) * ((((int) (-5906)) * ((int) (var_47))) / (((int) (struct_obj_10.member_1_3)) * ((int) (var_49))))) * ((int) (var_17))) * (!((((int) (var_14)) * (((int) (var_22)) * ((int) (struct_obj_10.member_1_3)))) * ((((int) (9930)) * ((int) (-39))) / (((int) (var_50)) * ((int) (7597))))));
- short var_117 = 23937;
- var_37 = (signed char) (((int) ((((int) ((signed char) (((int) (struct_obj_4.member_2_1.member_1_3)) % ((int) (struct_obj_2.member_5_1))))) | ((int) (((int) ((unsigned short) (-10713))) >= (((int) (struct_obj_8.member_4_9.member_1_1)) || ((int) (struct_obj_4.member_2_1.member_1_1)))))) > (((int) ((unsigned short) (((~((((int) (var_15)) ^ ((int) (struct_obj_2.member_5_3))) | (((int) (-117)) & ((int) (struct_obj_4.member_2_0))))) & ((int) (var_9))) | ((int) (struct_obj_4.member_2_1.member_1_0))))) * ((int) (struct_obj_4.member_2_3.member_1_3))))) & ((((~((int) (var_21))) | ((int) ((signed char) (6873)))) | ((((int) (11866)) & ((int) (1866))) & (((int) (120)) | ((int) (51141))))) & ((~(((int) (var_23)) ^ ((int) (var_21)))) ^ (((int) (var_38)) & (~((int) (var_61)))))));
- unsigned short var_118 = var_39;
- short var_119 = (short) (((((int) ((signed char) (struct_obj_4.member_2_3.member_1_3))) || (!((int) (var_60)))) % ((int) (((int) (var_59)) != (((int) (var_42)) & ((int) (var_5)))))) - ((int) ((unsigned short) (+((int) (41572))))));
- }
-
- if ((short) ((((int) ((unsigned short) (145))) || (!((int) (struct_obj_8.member_4_8)))) || ((!(!((int) (52600)))) && (!(((int) (struct_obj_1.member_5_1)) || ((int) (-45)))))))
- {
- if (((int) (struct_obj_7.member_1_1)) || ((int) (var_14)))
- {
- short var_120 = (((int) (-25025)) * (((int) ((signed char) (((int) (var_41)) || ((int) (-6379))))) * ((int) ((((int) (struct_obj_2.member_5_1)) || ((int) (var_66))) >= ((int) (struct_obj_2.member_5_1)))))) != (((int) ((unsigned short) ((((int) (struct_obj_4.member_2_6)) % ((int) (var_58))) % (~((int) (var_27)))))) && (~((~((int) (14817))) | (((int) (struct_obj_9.member_2_6)) | ((int) (80))))));
- unsigned short var_121 = ~((int) (40954));
- unsigned short var_122 = (short) ((((int) ((signed char) (+((int) (38261))))) * ((int) ((unsigned short) (((int) (struct_obj_1.member_5_3)) * ((int) (var_14)))))) * ((!(-((int) (var_25)))) * ((((int) (var_21)) * ((int) (struct_obj_3.member_5_0))) * (!((int) (struct_obj_8.member_4_6))))));
- var_123 = (unsigned short) (struct_obj_9.member_2_0);
- signed char var_124 = ((int) ((+(~(((int) (1985)) * ((int) (104))))) <= ((int) (-17923)))) || ((~((((int) (struct_obj_8.member_4_1.member_3_0)) << (((int) (var_24)) + (4604))) >> (((int) ((signed char) (-29108))) - (70)))) | ((~((int) (46864))) | ((((int) (var_65)) + (2147483647)) >> (((((int) (struct_obj_10.member_1_3)) + (2147483647)) >> (((int) (var_25)) - (111))) - (32745)))));
- unsigned short var_125 = ((int) (struct_obj_8.member_4_5)) * (+((+(~((int) (var_21)))) - ((int) ((unsigned short) ((unsigned short) (-12))))));
- short var_126 = ((int) (struct_obj_4.member_2_1.member_1_0)) && ((((!((int) (60288))) || ((int) (96))) && ((((int) (-57)) || ((int) (19530))) || (((int) (17387)) && ((int) (48289))))) || (!((((int) (29335)) && ((int) (-23143))) || (((int) (-16)) && ((int) (9431))))));
- short var_127 = (+((int) (((int) ((short) (((int) (struct_obj_1.member_5_1)) - ((int) (32370))))) < ((int) (60992))))) - ((int) ((((int) ((short) (((int) (var_8)) ^ ((int) (-54))))) & ((~((int) (32))) ^ (((int) (-29031)) | ((int) (126))))) != (((+(((int) (struct_obj_8.member_4_0)) ^ ((int) (struct_obj_5.member_1_0)))) + (2147483647)) >> ((~((int) (18))) || (((int) (struct_obj_4.member_2_2)) && ((int) (-39)))))));
- unsigned short var_128 = !((int) ((((int) ((unsigned short) (~((int) (83))))) * ((int) ((((int) (-23)) ^ ((int) (62519))) >= ((int) (((int) (41099)) > ((int) (62255))))))) >= (~((~((int) (81))) * (((int) (-103)) * ((int) (23532)))))));
- }
- else
- {
- var_129 = (short) ((unsigned short) (var_20));
- unsigned short var_130 = var_66;
- unsigned short var_131 = ((int) ((unsigned short) (((~((int) (-45))) & (~((int) (30782)))) ^ ((((int) (52410)) ^ ((int) (-29797))) ^ (~((int) (23))))))) & ((((int) ((((int) (24037)) % ((int) (struct_obj_8.member_4_4))) <= ((int) ((short) (29870))))) | (((((int) (struct_obj_8.member_4_6)) + (2147483647)) >> (((int) (struct_obj_5.member_1_0)) + (105))) ^ (((int) (var_28)) - ((((+((int) (struct_obj_4.member_2_3.member_1_0))) - (+((int) (17696)))) - ((int) (var_22))) + (((int) ((short) ((unsigned short) (var_27)))) + (((int) (var_23)) + (-((int) (var_1))))))))) || (~((int) ((short) (~((int) (-31180)))))));
- short var_132 = (+(((int) (var_58)) * ((((int) (struct_obj_1.member_5_3)) * ((int) (struct_obj_4.member_2_1.member_1_1))) / ((int) ((unsigned short) (struct_obj_8.member_4_1.member_3_1.member_1_2)))))) * ((int) ((signed char) ((!(((int) (var_28)) - ((((+((int) (struct_obj_4.member_2_3.member_1_0))) - (+((int) (17696)))) - ((int) (var_22))) + (((int) ((short) ((unsigned short) (var_27)))) + (((int) (var_23)) + (-((int) (var_1)))))))) * (!(((int) (var_28)) - ((((+((int) (struct_obj_4.member_2_3.member_1_0))) - (+((int) (17696)))) - ((int) (var_22))) + (((int) ((short) ((unsigned short) (var_27)))) + (((int) (var_23)) + (-((int) (var_1)))))))))));
- signed char var_133 = ~(~(((((int) (var_31)) & ((int) (-6036))) | (((int) (struct_obj_8.member_4_1.member_3_0)) & ((int) (119)))) & ((int) ((short) (((int) (var_51)) & ((int) (struct_obj_6.member_5_1)))))));
- signed char var_134 = ((int) (var_28)) - ((((+((int) (struct_obj_4.member_2_3.member_1_0))) - (+((int) (17696)))) - ((int) (var_22))) + (((int) ((short) ((unsigned short) (var_27)))) + (((int) (var_23)) + (-((int) (var_1))))));
- unsigned short var_135 = (!((!(((int) (41271)) && ((int) (13731)))) || (((int) (25327)) || (!((int) (-8624)))))) && ((!((((int) (6099)) || ((int) (122))) && (((int) (39583)) || ((int) (32873))))) || (!((!((int) (16105))) || (((int) (var_28)) - ((((+((int) (struct_obj_4.member_2_3.member_1_0))) - (+((int) (17696)))) - ((int) (var_22))) + (((int) ((short) ((unsigned short) (var_27)))) + (((int) (var_23)) + (-((int) (var_1))))))))));
- signed char var_136 = (signed char) (((int) (((int) ((((int) (var_35)) % ((int) (struct_obj_6.member_5_1))) <= ((int) ((signed char) (var_20))))) <= (~(((int) (-26722)) ^ ((int) (-5)))))) * ((!(((int) (struct_obj_2.member_5_2)) % ((int) (var_12)))) >> (!(!((int) (10583))))));
- unsigned short var_137 = ~((int) ((signed char) (~(~((int) ((unsigned short) (var_8)))))));
- }
-
- signed char var_138 = ((~((((int) (struct_obj_9.member_2_4)) + ((int) (var_48))) - ((int) (((int) (25852)) > ((int) (32844)))))) || (((int) ((unsigned short) (((int) (12)) < ((int) (35004))))) + ((int) (20954)))) >= ((int) (struct_obj_4.member_2_6));
- if (~(~(((int) (var_9)) ^ (~(((int) (var_56)) & ((int) (-97)))))))
- {
- unsigned short var_139 = ((int) (struct_obj_4.member_2_3.member_1_1)) < ((((((int) (59174)) ^ ((int) (-69))) & (~((int) (122)))) & ((((int) (24)) & ((int) (61565))) ^ (((int) (54007)) | ((int) (-60))))) & ((~(((int) (-1951)) | ((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)))) & (~(((int) (var_55)) ^ ((int) (54148))))));
- short var_140 = (((int) (struct_obj_3.member_5_1)) && ((int) ((unsigned short) ((((int) (var_18)) || ((int) (struct_obj_8.member_4_1.member_3_1.member_1_0))) > (((int) (23085)) & ((int) (-10998))))))) & (((!(((int) (var_64)) && ((int) (22)))) || ((!((int) (-372))) && (((int) (196)) || ((int) (28127))))) && (!((!((int) (var_28))) || (((int) (-3298)) || ((int) (86))))));
- signed char var_141 = 32;
- unsigned short var_142 = (short) (((int) (-91)) || (!(!(((int) (-2370)) || ((int) (-120))))));
- var_143 = (signed char) ((unsigned short) ((~((int) (struct_obj_6.member_5_0))) & ((int) ((signed char) ((short) ((signed char) (struct_obj_4.member_2_6)))))));
- short var_144 = 65519;
- }
-
- var_55 = (signed char) (((-((int) ((((int) (struct_obj_10.member_1_3)) - ((int) (struct_obj_8.member_4_9.member_1_1))) < ((((int) (struct_obj_5.member_1_3)) + (2147483647)) >> ((((int) (-2633)) + (2665)) - (21)))))) & (~(((int) (21384)) * (((int) (struct_obj_4.member_2_3.member_1_0)) * ((int) (struct_obj_4.member_2_1.member_1_3)))))) == ((~(~(((int) (var_11)) | ((int) (28869))))) | (((int) (struct_obj_10.member_1_2)) | (~(((int) (struct_obj_7.member_1_2)) & ((int) (var_31)))))));
- short var_145 = (((int) (((int) ((unsigned short) (66))) == (~(((int) (-108)) & ((int) (var_50)))))) / (-(+((int) (((int) (var_49)) != ((int) (var_43))))))) == (((int) (var_60)) | (-(-(+((int) (-28574))))));
- short var_146 = (((int) ((signed char) (((int) (((int) (struct_obj_6.member_5_2)) <= ((int) (var_51)))) && ((int) ((unsigned short) (var_23)))))) * ((int) (((int) (struct_obj_1.member_5_2)) == ((((int) (var_66)) & ((int) (37785))) & ((int) ((~((int) (var_15))) != (~((((((int) (struct_obj_4.member_2_7)) + (2147483647)) << ((((int) (var_30)) - (42704)) - (1))) | ((int) (var_18))) << (((int) ((unsigned short) (~((int) (struct_obj_3.member_5_3))))) - (26655)))))))))) % ((int) ((unsigned short) (((+((int) (var_20))) + (((int) (struct_obj_4.member_2_2)) * ((int) (var_52)))) + (+(+((int) (var_58)))))));
- if ((signed char) ((((((int) (var_50)) ^ ((int) (58076))) ^ (((int) (struct_obj_2.member_5_1)) << (((int) (struct_obj_8.member_4_0)) - (17338)))) >> ((~(~((int) (var_8)))) - (14640))) << (((int) (((int) (((int) (27168)) < ((int) (var_45)))) < (((int) (41179)) & ((int) (-9862))))) >> (((int) (-56)) + (59)))))
- {
- unsigned short var_147 = var_7;
- unsigned short var_148 = (((int) ((signed char) ((((int) (struct_obj_4.member_2_3.member_1_1)) + ((int) (-42))) - (((int) (struct_obj_8.member_4_9.member_1_2)) + ((int) (var_24)))))) - ((int) ((~((int) (var_15))) != (~((((((int) (struct_obj_4.member_2_7)) + (2147483647)) << ((((int) (var_30)) - (42704)) - (1))) | ((int) (var_18))) << (((int) ((unsigned short) (~((int) (struct_obj_3.member_5_3))))) - (26655))))))) % (((-(+((int) (struct_obj_2.member_5_0)))) >> ((((int) (19611)) << (((int) (7596)) - (7595))) >> (((int) ((short) (struct_obj_8.member_4_1.member_3_1.member_1_2))) + (90)))) % (-((int) (struct_obj_4.member_2_3.member_1_3))));
- signed char var_149 = (signed char) (9177);
- signed char var_150 = ~((((((int) (var_32)) >> (((int) (var_63)) - (21651))) >> ((((int) (var_52)) & ((int) (var_28))) - (9212))) << ((((int) ((short) (var_37))) << (((int) (var_59)) >> (((int) (struct_obj_8.member_4_0)) - (17332)))) - (924))) << ((~(~(((int) (struct_obj_1.member_5_1)) & ((int) (var_65))))) - (19726)));
- short var_151 = ((int) (((int) ((~(~((int) (var_28)))) >= (((int) ((unsigned short) (45))) % ((int) ((unsigned short) (59243)))))) != ((int) ((unsigned short) (!((int) (2861))))))) && (-(((-((int) (struct_obj_6.member_5_0))) * ((int) (76))) / (~(~((int) (struct_obj_6.member_5_0))))));
- var_152 = (short) ((short) ((!((((int) (-48)) && ((int) (var_29))) && (!((int) (27080))))) | ((int) ((signed char) (+(+((int) (var_47))))))));
- short var_153 = ~(!(((int) ((~((int) (var_15))) != (~((((((int) (struct_obj_4.member_2_7)) + (2147483647)) << ((((int) (var_30)) - (42704)) - (1))) | ((int) (var_18))) << (((int) ((unsigned short) (~((int) (struct_obj_3.member_5_3))))) - (26655)))))) ^ ((int) ((short) (((int) (13313)) >> (((int) (4429)) - (4409)))))));
- short var_154 = (signed char) (((int) ((signed char) (((~((int) (38068))) + (2147483647)) >> ((((int) (5010)) << ((((int) (-97)) + (120)) - (9))) - (82083818))))) & (((((int) (var_27)) >> (((int) (var_34)) + (88))) >> ((((int) (var_6)) ^ ((int) (struct_obj_4.member_2_1.member_1_0))) - (40569))) | ((int) (23074))));
- }
-
- }
-
- short var_155 = ((~((int) ((signed char) ((short) (struct_obj_4.member_2_3.member_1_2))))) | (~(((((int) (var_8)) | ((int) (struct_obj_1.member_5_0))) + (2147483647)) << ((((int) (var_18)) << (((int) (struct_obj_2.member_5_3)) - (25447))) - (157696))))) > ((int) ((((!((int) (55608))) || (((int) (42069)) && ((int) (struct_obj_4.member_2_0)))) && (!((int) ((signed char) (struct_obj_8.member_4_1.member_3_1.member_1_0))))) == ((((int) (((int) (struct_obj_1.member_5_1)) <= ((int) (var_18)))) & ((int) (((int) (7701)) != ((int) (var_7))))) && ((int) ((((int) (struct_obj_9.member_2_2)) - ((int) (var_1))) <= (((int) (struct_obj_4.member_2_1.member_1_1)) ^ ((int) (struct_obj_10.member_1_3))))))));
- if (((!((((int) (var_1)) || ((int) (struct_obj_8.member_4_1.member_3_1.member_1_2))) || (((int) (struct_obj_8.member_4_6)) || ((int) (var_49))))) && ((!(((int) (var_29)) || ((int) (95)))) && (!((int) ((short) (struct_obj_6.member_5_1)))))) || (!((!(((int) (var_48)) || ((int) (var_31)))) && (((int) ((unsigned short) (struct_obj_8.member_4_5))) && (!((int) (var_25)))))))
- {
- var_156 = (signed char) (+(((int) (struct_obj_4.member_2_2)) / (~((int) ((unsigned short) (~((int) (struct_obj_8.member_4_6))))))));
- signed char var_157 = (short) (((int) (var_15)) << (((int) ((signed char) (((int) (struct_obj_8.member_4_9.member_1_0)) & ((int) (17017))))) >> ((((((int) (struct_obj_1.member_5_1)) << (((int) (var_39)) - (28162))) & ((int) (struct_obj_1.member_5_2))) - (55360)) - (15))));
- signed char var_158 = ~((int) (struct_obj_9.member_2_7));
- unsigned short var_159 = (((int) (((int) ((unsigned short) (((int) (var_14)) << ((int) (struct_obj_4.member_2_3.member_1_0))))) < (((int) (((int) (struct_obj_8.member_4_9.member_1_2)) > ((int) (5)))) * (((int) (-30137)) * ((int) (49178)))))) && (((int) ((short) (struct_obj_8.member_4_5))) & ((~((int) (var_39))) ^ (((int) (var_48)) & ((int) (struct_obj_1.member_5_0)))))) >> ((int) ((unsigned short) (!(((int) ((signed char) (42511))) & (((int) (struct_obj_8.member_4_2)) >> (((int) (struct_obj_4.member_2_3.member_1_2)) + (83)))))));
- short var_160 = ((int) (((int) (30759)) < (~((int) ((short) (((int) (var_34)) ^ ((int) (struct_obj_8.member_4_1.member_3_0)))))))) <= ((-((int) ((((int) (-24352)) && ((int) (struct_obj_8.member_4_9.member_1_0))) < ((int) ((signed char) (struct_obj_3.member_5_2)))))) | (((((int) (struct_obj_8.member_4_6)) && ((int) (struct_obj_9.member_2_1.member_1_0))) ^ (((int) (-3094)) & ((int) (var_1)))) / ((int) ((signed char) (+((int) (var_42)))))));
- short var_161 = (short) ((-((int) ((signed char) (((int) (struct_obj_8.member_4_5)) ^ ((int) (var_36)))))) > (((((int) (var_54)) & ((int) (-24453))) | (~((int) (struct_obj_9.member_2_1.member_1_3)))) | ((((int) (struct_obj_8.member_4_7)) | ((int) (var_159))) & (((int) (var_63)) & ((int) (var_13))))));
- if (-((int) ((unsigned short) (!((int) (16141))))))
- {
- var_162 = (signed char) ((short) (19938));
- var_38 = (signed char) (((int) ((signed char) ((((int) ((unsigned short) (struct_obj_4.member_2_3.member_1_3))) << ((((int) (var_16)) ^ ((int) (66))) - (7830))) & ((((int) (16)) << (((int) (28592)) - (28568))) ^ (((int) (14689)) ^ ((int) (-24415))))))) & ((int) (struct_obj_4.member_2_3.member_1_2)));
- unsigned short var_163 = (signed char) (((~((int) ((unsigned short) (var_50)))) - ((((int) (55181)) >> (((int) (-105)) + (108))) | (((int) (50003)) << ((((int) (var_30)) - (42689)) - (15))))) & ((int) (struct_obj_8.member_4_0)));
- unsigned short var_164 = struct_obj_10.member_1_3;
- unsigned short var_165 = struct_obj_4.member_2_7;
- unsigned short var_166 = ((int) (var_56)) >> ((int) (((~(((int) (var_33)) ^ ((int) (2184)))) & ((int) ((((int) (var_30)) ^ ((int) (13945))) != ((((int) (-25)) + (2147483647)) >> (((int) (struct_obj_1.member_5_1)) - (32568)))))) <= ((int) (struct_obj_4.member_2_7))));
- }
- else
- {
- short var_167 = (short) (~(((((int) (-125)) & ((int) (var_55))) | (((int) (30445)) | ((int) (var_14)))) | ((((int) (struct_obj_4.member_2_6)) | ((int) (struct_obj_3.member_5_1))) | (((int) (struct_obj_4.member_2_1.member_1_3)) ^ ((int) (42952))))));
- unsigned short var_168 = (((int) ((unsigned short) ((~((int) (36216))) | ((int) (-29579))))) >> ((~((((int) (10544)) & ((int) (11868))) << ((((int) (26935)) | ((int) (struct_obj_8.member_4_1.member_3_0))) - (27566)))) + (5251073))) << ((((((~((int) (struct_obj_10.member_1_2))) ^ (((int) (77)) << (((int) (var_66)) - (65517)))) << ((((((int) (-78)) + (2147483647)) << (((int) (var_60)) - (21585))) << ((((int) ((signed char) (struct_obj_4.member_2_4))) + (15)) - (10))) - (2147483563))) | (~((int) ((signed char) (((int) (73)) >> (((int) (6327)) - (6305))))))) + (18)) - (13));
- short var_169 = ((((int) (var_23)) & ((((int) (var_54)) + (2147483647)) << (((((((int) (-6568)) + (2147483647)) >> (((int) (-25044)) + (25060))) - (32766)) - (0)) - (1)))) >> (((int) ((signed char) ((signed char) (~((int) (32011)))))) + (12))) && (((!(((int) (var_11)) || ((int) (struct_obj_9.member_2_6)))) || ((!((int) (struct_obj_9.member_2_0))) || (((int) (struct_obj_4.member_2_3.member_1_2)) || ((int) (struct_obj_2.member_5_2))))) || (!((int) ((short) (((int) (-29488)) && ((int) (struct_obj_4.member_2_3.member_1_2)))))));
- signed char var_170 = (unsigned short) (var_26);
- signed char var_171 = !(((int) ((signed char) ((((int) (struct_obj_6.member_5_3)) - ((int) (var_65))) - (((int) (struct_obj_8.member_4_9.member_1_0)) << (((int) (struct_obj_4.member_2_2)) - (30774)))))) || (((int) (var_158)) * ((int) ((short) (((int) (var_157)) && ((int) (var_27)))))));
- unsigned short var_172 = (~((int) ((signed char) ((((int) (13)) % ((int) (struct_obj_8.member_4_7))) > ((int) ((unsigned short) (-112))))))) >= (~((((int) (struct_obj_8.member_4_3)) ^ (((int) (var_155)) << (((int) (struct_obj_7.member_1_2)) + (146)))) >> ((~(((int) (var_46)) >> (((int) (struct_obj_2.member_5_2)) - (41436)))) + (80))));
- short var_173 = -(-(-(-((int) (struct_obj_1.member_5_2)))));
- }
-
- if (((int) (((int) (((int) (struct_obj_2.member_5_2)) >= ((((int) (var_45)) | ((int) (15962))) | (((int) (struct_obj_9.member_2_6)) ^ ((int) (64811)))))) <= ((int) ((unsigned short) (~(((int) (var_39)) || ((int) (struct_obj_4.member_2_7)))))))) >> ((int) ((signed char) (((int) ((~((int) (struct_obj_8.member_4_8))) <= (((int) (struct_obj_2.member_5_1)) * ((int) (var_43))))) == (-(+((int) (22055))))))))
- {
- signed char var_174 = ((int) (var_47)) ^ (((((int) ((signed char) ((((int) (struct_obj_4.member_2_3.member_1_0)) >> (((int) (var_17)) - (32638))) % (((int) (var_3)) && ((int) (var_3)))))) * (((int) ((short) (!((int) (struct_obj_2.member_5_3))))) * ((((int) (var_12)) * ((int) (76))) / (((int) (struct_obj_2.member_5_3)) * ((int) (var_35)))))) + (~((int) (var_33)))) & ((int) (struct_obj_4.member_2_6)));
- short var_175 = (~((((int) ((signed char) ((((int) (struct_obj_4.member_2_3.member_1_0)) >> (((int) (var_17)) - (32638))) % (((int) (var_3)) && ((int) (var_3)))))) * (((int) ((short) (!((int) (struct_obj_2.member_5_3))))) * ((((int) (var_12)) * ((int) (76))) / (((int) (struct_obj_2.member_5_3)) * ((int) (var_35)))))) + (~((int) (var_33))))) <= (((((int) (var_31)) & ((int) ((unsigned short) (43682)))) & ((int) ((short) (((int) (var_9)) | ((int) (var_18)))))) ^ (~(((int) (struct_obj_4.member_2_1.member_1_3)) ^ (~((int) (52103))))));
- short var_176 = (((((((int) (-75)) ^ ((int) (31369))) + (2147483647)) >> (((int) ((unsigned short) (-29))) - (65506))) & ((int) (2146))) << (((((int) (var_2)) * ((int) (struct_obj_3.member_5_3))) / ((((int) ((signed char) ((((int) (struct_obj_4.member_2_3.member_1_0)) >> (((int) (var_17)) - (32638))) % (((int) (var_3)) && ((int) (var_3)))))) * (((int) ((short) (!((int) (struct_obj_2.member_5_3))))) * ((((int) (var_12)) * ((int) (76))) / (((int) (struct_obj_2.member_5_3)) * ((int) (var_35)))))) + (~((int) (var_33))))) * ((((int) (var_24)) * ((int) (var_47))) / (((int) (var_5)) * ((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)))))) * ((int) ((unsigned short) ((((int) (27537)) / (((int) (-15573)) * ((int) (struct_obj_9.member_2_0)))) * (!(((int) (12)) * ((int) (struct_obj_8.member_4_0)))))));
- unsigned short var_177 = ((((((int) (40535)) * ((int) (var_30))) * (!((int) (struct_obj_6.member_5_1)))) * ((((int) (var_50)) / ((int) (58121))) * (((int) (54878)) * ((int) (struct_obj_8.member_4_0))))) * ((((int) ((short) (53))) * (((int) (32)) * ((int) (var_175)))) * (((int) ((signed char) (19151))) * (~((int) (16207)))))) * ((int) (var_16));
- var_178 = (short) ((~(~((int) ((signed char) (~((int) (4771))))))) >> ((((!(((int) (64904)) && ((int) (-98)))) * ((int) ((signed char) (~((int) (34931)))))) - (((int) (struct_obj_7.member_1_1)) & (((int) (((int) (struct_obj_9.member_2_0)) < ((int) (40)))) || (((int) (struct_obj_6.member_5_0)) % ((int) (struct_obj_5.member_1_1)))))) + (32)));
- unsigned short var_179 = ~((int) ((unsigned short) (((((int) (var_174)) | ((int) (struct_obj_2.member_5_0))) | (((int) (struct_obj_8.member_4_1.member_3_1.member_1_2)) ^ ((int) (struct_obj_8.member_4_7)))) ^ (~(~((int) (struct_obj_8.member_4_6)))))));
- signed char var_180 = ((int) (((int) ((!((int) ((unsigned short) (47545)))) <= (~(~((int) (2410)))))) >= ((int) (((((int) (1)) ^ ((int) (13528))) | ((int) ((signed char) (var_65)))) == ((+((int) (var_175))) & ((int) ((unsigned short) (14219)))))))) <= (((int) ((signed char) (((int) (((int) (var_6)) <= ((int) (var_23)))) <= ((int) ((signed char) (var_58)))))) + (((((int) (struct_obj_4.member_2_1.member_1_1)) ^ ((int) (var_4))) ^ ((int) (struct_obj_9.member_2_1.member_1_3))) && ((((int) (-3265)) & ((int) (12497))) * ((int) (((int) (struct_obj_9.member_2_0)) == ((int) (struct_obj_9.member_2_1.member_1_1)))))));
- signed char var_181 = (+((((int) ((signed char) ((((int) (struct_obj_4.member_2_3.member_1_0)) >> (((int) (var_17)) - (32638))) % (((int) (var_3)) && ((int) (var_3)))))) * (((int) ((short) (!((int) (struct_obj_2.member_5_3))))) * ((((int) (var_12)) * ((int) (76))) / (((int) (struct_obj_2.member_5_3)) * ((int) (var_35)))))) + (~((int) (var_33))))) + ((((~((int) (7403))) & (((int) (struct_obj_4.member_2_0)) ^ ((int) (var_58)))) & (((((int) ((signed char) ((((int) (struct_obj_4.member_2_3.member_1_0)) >> (((int) (var_17)) - (32638))) % (((int) (var_3)) && ((int) (var_3)))))) * (((int) ((short) (!((int) (struct_obj_2.member_5_3))))) * ((((int) (var_12)) * ((int) (76))) / (((int) (struct_obj_2.member_5_3)) * ((int) (var_35)))))) + (~((int) (var_33)))) & (((int) (struct_obj_8.member_4_5)) & ((int) (struct_obj_3.member_5_3))))) * (~((int) ((+((int) (struct_obj_8.member_4_7))) <= (((int) (-24292)) - ((int) (38418)))))));
- var_46 = (unsigned short) (~(!((int) ((signed char) (((int) (((int) (55161)) < ((int) (var_36)))) + (+((int) (var_55))))))));
- }
- else
- {
- signed char var_182 = (~(~((~((int) (struct_obj_1.member_5_1))) & (((int) (13831)) | ((int) (struct_obj_4.member_2_1.member_1_0)))))) | (~(((((int) (97)) | ((int) (struct_obj_4.member_2_3.member_1_3))) & ((int) ((signed char) (var_4)))) & ((((int) (119)) ^ ((int) (-1))) | ((int) (struct_obj_9.member_2_0)))));
- signed char var_183 = ~(((!(!((int) (var_20)))) | ((int) ((short) (((int) (struct_obj_6.member_5_1)) >> (((int) (12242)) - (12212)))))) || (~((((int) (var_32)) & ((int) (var_63))) ^ (((int) (29262)) & ((int) (var_3))))));
- short var_184 = ((((int) ((signed char) ((unsigned short) (43)))) & (~(((int) (struct_obj_4.member_2_3.member_1_3)) ^ ((int) (52))))) ^ (~((int) (struct_obj_10.member_1_2)))) << (((int) (struct_obj_4.member_2_7)) + (9528));
- unsigned short var_185 = ~((int) (struct_obj_3.member_5_1));
- short var_186 = ((int) ((short) (-((((int) (struct_obj_8.member_4_5)) - ((int) (var_65))) - (((int) (28254)) - ((int) (struct_obj_6.member_5_3))))))) * ((+((-((int) (struct_obj_8.member_4_7))) + ((int) ((signed char) (struct_obj_4.member_2_3.member_1_3))))) + ((int) ((short) (struct_obj_4.member_2_1.member_1_3))));
- short var_187 = struct_obj_5.member_1_3;
- }
-
- if (~((+(!((int) ((signed char) (struct_obj_9.member_2_1.member_1_0))))) * ((int) ((short) ((short) (~((int) (var_19))))))))
- {
- unsigned short var_188 = (~(-((int) (((int) ((unsigned short) (-23))) <= (((int) (struct_obj_4.member_2_1.member_1_0)) || ((int) (24497))))))) | ((+(~(((int) (var_43)) * ((int) (struct_obj_4.member_2_1.member_1_1))))) + ((int) (struct_obj_8.member_4_3)));
- unsigned short var_189 = (unsigned short) ((~((~((int) (97))) & (+((int) ((unsigned short) (+(((int) (((int) (var_21)) < ((int) (var_19)))) / (+((int) (-23249)))))))))) | (((int) ((short) (-15924))) ^ ((((int) (31)) ^ ((int) (var_7))) ^ (~((int) (struct_obj_6.member_5_1))))));
- signed char var_190 = ((((((int) (14001)) | ((int) (73))) & ((int) ((unsigned short) (12149)))) & ((((int) (-78)) | ((int) (39))) | (+((int) ((unsigned short) (+(((int) (((int) (var_21)) < ((int) (var_19)))) / (+((int) (-23249)))))))))) | ((int) (((int) (24297)) <= (+((int) ((unsigned short) (+(((int) (((int) (var_21)) < ((int) (var_19)))) / (+((int) (-23249))))))))))) != ((int) ((unsigned short) (18898)));
- signed char var_191 = (~(((~((int) (-11939))) & (~((int) (var_26)))) >> (((((int) (struct_obj_4.member_2_6)) >> (((int) (10058)) - (10057))) & (((int) (struct_obj_9.member_2_1.member_1_3)) << (((int) (var_10)) - (21745)))) - (10531)))) | ((((~((int) (var_1))) | (((int) (struct_obj_6.member_5_2)) << (((int) (-15680)) + (15686)))) | (((int) ((signed char) (60447))) | (((int) (-11899)) & ((int) (var_15))))) & ((((int) (var_43)) >> ((~((int) (struct_obj_4.member_2_0))) + (7623))) ^ ((~((int) (struct_obj_7.member_1_0))) | (((int) (30163)) & ((int) (var_21))))));
- signed char var_192 = ((!((int) ((unsigned short) (((int) (28)) && ((int) (var_40)))))) || (!((int) ((signed char) (((int) (var_48)) || ((int) (struct_obj_9.member_2_0))))))) ^ ((int) (((int) (((int) (-113)) <= ((((int) (12)) || ((int) (52))) ^ (((int) (2031)) * ((int) (8257)))))) == ((int) ((signed char) ((((int) (struct_obj_3.member_5_1)) & ((int) (var_11))) & (((int) (var_2)) ^ ((int) (struct_obj_8.member_4_4))))))));
- signed char var_193 = 18614;
- }
-
- short var_194 = ~((((int) (47259)) ^ (+((int) ((unsigned short) (+(((int) (((int) (var_21)) < ((int) (var_19)))) / (+((int) (-23249))))))))) & ((((int) (57390)) << ((((int) (25700)) << ((int) (14))) - (421068788))) << (((int) (var_27)) - (15318))));
- }
-
- signed char var_195 = ((~(~(~((int) (struct_obj_8.member_4_9.member_1_0))))) ^ ((~(((int) (struct_obj_8.member_4_3)) ^ ((int) (8)))) & (((int) (-23)) | ((int) (5564))))) ^ (+(~((int) ((-((int) (118))) != ((int) (((int) (-117)) != ((int) (34786))))))));
- if ((((~((((int) (struct_obj_8.member_4_2)) | ((int) (struct_obj_9.member_2_2))) & ((int) ((unsigned short) (var_11))))) + (2147483647)) >> (((!((int) (struct_obj_7.member_1_1))) && (((int) (-27411)) && ((int) (var_57)))) * (((int) (((int) (var_53)) > ((int) (struct_obj_8.member_4_0)))) * (-((int) (var_11)))))) & (((((int) (120)) & ((int) ((unsigned short) (struct_obj_8.member_4_1.member_3_0)))) & ((int) ((signed char) (-((int) (2523)))))) && (!((int) ((short) (((int) (var_1)) - ((int) (struct_obj_2.member_5_3))))))))
- {
- if ((~((int) ((short) ((((int) (-7247)) ^ ((int) (96))) & (((int) (115)) | ((int) (42355))))))) & ((((int) (63543)) & ((int) ((unsigned short) (((int) (17803)) ^ ((int) (11828)))))) | (((int) (-29)) | ((int) ((short) (~((int) (10016))))))))
- {
- short var_196 = var_1;
- unsigned short var_197 = ((((int) ((unsigned short) (((int) (struct_obj_9.member_2_1.member_1_0)) ^ ((int) (struct_obj_7.member_1_1))))) | (((int) (struct_obj_9.member_2_1.member_1_0)) | (((int) (-51)) ^ ((int) (struct_obj_8.member_4_1.member_3_1.member_1_0))))) & (((((int) (110)) & ((int) (-28957))) | ((int) (struct_obj_9.member_2_1.member_1_0))) & ((~((int) (var_21))) & ((int) ((signed char) (-15740)))))) & ((~((~((int) (struct_obj_8.member_4_9.member_1_1))) & (((int) (var_38)) | ((int) (-4512))))) & (((int) ((signed char) (26344))) ^ (((int) (23010)) | ((int) (21555)))));
- short var_198 = ((int) (((int) ((short) (-((int) (21555))))) <= ((int) (((int) ((((int) (59115)) || ((int) (73))) <= ((int) ((short) (var_1))))) <= (~(((int) (struct_obj_7.member_1_1)) * ((int) (var_15)))))))) <= ((int) ((((((int) (struct_obj_4.member_2_7)) || ((int) (var_42))) & ((int) (21555))) + ((int) ((unsigned short) (21555)))) <= ((int) (((int) ((unsigned short) (-((int) (var_57))))) != ((int) ((signed char) (~((int) (struct_obj_5.member_1_3)))))))));
- var_39 = (unsigned short) (+((int) (21555)));
- short var_199 = ((int) (((int) (struct_obj_6.member_5_3)) > (((((int) (55447)) - ((int) (121))) - (((int) (124)) + ((int) (23562)))) + ((int) (67))))) == ((int) (21555));
- var_46 = (unsigned short) (-((int) (var_196)));
- short var_200 = (-((int) (struct_obj_3.member_5_0))) - (~((int) (var_55)));
- unsigned short var_201 = ((int) ((((((int) (var_65)) && ((int) (var_7))) && ((int) ((unsigned short) (29456)))) && ((((int) (-11627)) || ((int) (var_62))) || ((int) ((unsigned short) (struct_obj_8.member_4_4))))) <= ((int) ((((int) (((int) (39895)) == ((int) (struct_obj_4.member_2_0)))) - ((int) (((int) (18541)) <= ((int) (var_197))))) == ((((int) (-6609)) | ((int) (-118))) * (((int) (var_195)) >> (((int) (50558)) - (50551)))))))) < (((int) ((short) (((int) ((unsigned short) (var_5))) || (((int) (struct_obj_2.member_5_1)) && ((int) (var_43)))))) || (((!((int) (51194))) && (!((int) (41084)))) && (((int) ((signed char) (struct_obj_4.member_2_0))) || (!((int) (var_42))))));
- signed char var_202 = ((~((int) ((short) (((int) (-6444)) | ((int) (17)))))) | ((int) ((signed char) ((((int) (var_49)) ^ ((int) (120))) | (((int) (struct_obj_2.member_5_2)) | ((int) (-10264))))))) ^ (((((int) ((short) (struct_obj_1.member_5_2))) & (((int) (var_34)) & ((int) (64379)))) | ((((int) (-20555)) & ((int) (struct_obj_8.member_4_3))) & (((int) (struct_obj_8.member_4_4)) & ((int) (20891))))) | (((((int) (struct_obj_2.member_5_3)) & ((int) (30905))) | ((int) (21555))) ^ (~(((int) (struct_obj_4.member_2_3.member_1_3)) & ((int) (var_52))))));
- short var_203 = (!((((int) ((signed char) (~((!(((int) (27437)) && ((int) (-123)))) / (~((int) (((int) (var_31)) <= ((int) (var_26))))))))) * (((int) (23332)) * ((int) (var_23)))) / ((int) ((short) (((int) (43615)) * ((int) (var_56))))))) != (-((int) ((unsigned short) (((int) ((short) (struct_obj_9.member_2_6))) & (((int) (var_36)) ^ ((int) (var_45)))))));
- }
-
- var_49 = (signed char) (~(~(~(((~((int) (var_66))) + (2147483647)) << (((((int) (-6282)) | ((int) (var_4))) + (4231)) - (5))))));
- if (((int) ((signed char) (~((((int) (var_54)) ^ ((int) (struct_obj_8.member_4_0))) ^ (~((int) (var_54))))))) & ((int) ((short) (((~((int) (20559))) | (~((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)))) & ((int) (-27))))))
- {
- signed char var_204 = ((~((int) (var_54))) ^ (((((int) (var_32)) & ((int) (var_11))) | (((int) (-113)) ^ ((int) (var_28)))) ^ (~(((int) (struct_obj_8.member_4_1.member_3_0)) & ((int) (var_51)))))) & ((int) ((unsigned short) ((unsigned short) (var_44))));
- short var_205 = (signed char) ((+((int) ((short) (((int) (-7851)) + ((int) (struct_obj_5.member_1_1)))))) + ((int) ((short) ((((int) (5103)) - ((int) (var_22))) - (((int) (var_7)) - ((int) (struct_obj_10.member_1_0)))))));
- short var_206 = (~((int) ((unsigned short) (~((int) ((short) (43004))))))) > ((int) ((signed char) (((int) ((short) (((int) (-4829)) | ((int) (struct_obj_9.member_2_5))))) >= ((int) (((int) (struct_obj_10.member_1_3)) <= ((int) ((unsigned short) (-29121))))))));
- unsigned short var_207 = ~((int) (var_49));
- short var_208 = (short) (((int) ((unsigned short) (~((int) ((short) (((int) (struct_obj_3.member_5_2)) ^ ((int) (var_18)))))))) ^ ((((((int) (20589)) >> (((int) (-20937)) + (20947))) ^ ((int) (47282))) | (~(~((int) (23))))) & (((((int) (struct_obj_3.member_5_1)) << (((int) (var_7)) - (42))) << (((int) (var_33)) >> (((int) (struct_obj_2.member_5_1)) - (25738)))) << (((int) ((short) (var_34))) + (89)))));
- }
-
- if (((int) (struct_obj_9.member_2_6)) << ((int) (((int) ((!((int) ((unsigned short) (var_43)))) <= ((int) (var_7)))) > (((int) (72)) ^ ((((int) (var_28)) & ((int) (24924))) | (~((int) (struct_obj_7.member_1_0))))))))
- {
- unsigned short var_209 = ~((((~((int) (18314))) | ((int) ((unsigned short) (var_14)))) & ((((int) (struct_obj_9.member_2_2)) & ((int) (struct_obj_8.member_4_9.member_1_0))) ^ (~((int) (-31087))))) ^ (((int) (80)) | ((((int) (struct_obj_8.member_4_9.member_1_0)) & ((int) (struct_obj_4.member_2_5))) ^ (((int) (47697)) | ((int) (53))))));
- signed char var_210 = var_38;
- unsigned short var_211 = ((int) ((unsigned short) ((~((int) (-10493))) < (!(-((int) (var_3))))))) <= (!(~((~((int) (var_36))) | (((int) (struct_obj_3.member_5_2)) | ((int) (struct_obj_4.member_2_3.member_1_3))))));
- signed char var_212 = ((((int) ((signed char) (((int) (16621)) ^ ((int) (17647))))) | ((((int) (var_7)) | ((int) (-95))) | (((int) (var_64)) & ((int) (struct_obj_1.member_5_0))))) | (((int) (struct_obj_8.member_4_4)) ^ ((~((int) (-19306))) | (((int) (-8522)) ^ ((int) (7284)))))) ^ ((~(((int) ((short) (struct_obj_10.member_1_3))) ^ (((int) (struct_obj_5.member_1_3)) ^ ((int) (struct_obj_9.member_2_0))))) ^ (((int) (var_5)) | ((~((int) (35989))) | (((int) (125)) ^ ((int) (struct_obj_4.member_2_1.member_1_1))))));
- signed char var_213 = (((int) (var_41)) & (((((int) (struct_obj_1.member_5_3)) ^ ((int) (6820))) ^ (~((int) (var_41)))) ^ (~(((int) (16070)) ^ ((int) (struct_obj_1.member_5_0)))))) ^ (~(((((int) (var_56)) << ((((int) (var_54)) + (24931)) - (19))) | (((int) (9)) & ((int) (46955)))) << (((~((int) ((signed char) (var_12)))) + (63)) - (19))));
- short var_214 = ((!((((int) (var_41)) || ((int) (var_4))) || (!((int) (var_1))))) && (!(((int) (struct_obj_10.member_1_3)) || (((int) (21126)) || ((int) (var_210)))))) && ((((int) ((unsigned short) (var_42))) || ((int) ((short) (struct_obj_4.member_2_1.member_1_1)))) && ((int) (struct_obj_5.member_1_1)));
- unsigned short var_215 = (((int) (struct_obj_7.member_1_2)) + (2147483647)) >> ((~(((int) (((int) (-30700)) != ((int) (struct_obj_10.member_1_2)))) - ((int) (var_58)))) || (~(((int) ((short) (4835))) ^ ((int) (struct_obj_9.member_2_1.member_1_0)))));
- }
-
- signed char var_216 = +((int) ((signed char) ((short) ((((int) (29926)) - ((int) (struct_obj_4.member_2_1.member_1_1))) + (-((int) (var_9)))))));
- var_217 = (signed char) (~(~(-((~((int) (11848))) & (((int) (-110)) & ((int) (struct_obj_3.member_5_1)))))));
- signed char var_218 = (~((~(~((int) (struct_obj_8.member_4_0)))) << ((((int) (5903)) ^ ((int) (var_10))) >> ((((int) (var_4)) & ((int) (-13690))) - (2545))))) > (-(-(~(~((int) (struct_obj_9.member_2_1.member_1_1))))));
- unsigned short var_219 = (~((int) ((short) (((int) (((int) (var_195)) <= ((int) (struct_obj_1.member_5_1)))) | ((int) (-70)))))) <= ((int) ((unsigned short) ((unsigned short) ((((int) (-126)) & ((int) (struct_obj_8.member_4_1.member_3_1.member_1_0))) ^ (((int) (struct_obj_9.member_2_0)) ^ ((int) (var_19)))))));
- signed char var_220 = (unsigned short) ((((int) (-23)) ^ (((int) ((unsigned short) (var_42))) | ((int) (-27960)))) & (((~((int) (62588))) ^ (((int) (struct_obj_4.member_2_2)) | ((int) (struct_obj_4.member_2_3.member_1_3)))) & (~((int) (struct_obj_10.member_1_2)))));
- if (((((((int) (3)) && ((int) (var_54))) && (((int) (struct_obj_10.member_1_3)) || ((int) (struct_obj_8.member_4_8)))) || (!(((int) (struct_obj_8.member_4_6)) && ((int) (struct_obj_3.member_5_2))))) && (((int) ((signed char) (!((int) (struct_obj_4.member_2_1.member_1_0))))) || ((int) (32382)))) <= (((~(((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159))))))))) ^ ((int) ((signed char) (-21650))))) + (2147483647)) >> ((int) (((int) (((int) (((int) (struct_obj_8.member_4_4)) <= ((int) (-601)))) != (!((int) (struct_obj_8.member_4_0))))) > ((int) (((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159))))))))) < (!((int) (9829)))))))))
- {
- short var_221 = ((((-((int) (var_17))) - (((int) (var_30)) + ((int) (struct_obj_4.member_2_2)))) / (((int) (struct_obj_8.member_4_3)) - (((int) (var_5)) * ((int) (var_3))))) * (((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159))))))))) + (-(((int) (14421)) + ((int) (23698)))))) + ((((((int) (struct_obj_9.member_2_2)) + ((int) (25482))) - (((int) (-46)) - ((int) (struct_obj_5.member_1_1)))) / ((-((int) (var_216))) + (+((int) (64628))))) - ((((int) ((signed char) (-7))) - (+((int) (var_54)))) - ((int) (struct_obj_8.member_4_1.member_3_1.member_1_1))));
- var_65 = (short) ((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159)))))))));
- unsigned short var_222 = ((int) ((unsigned short) (((int) (var_63)) ^ (~((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159))))))))))))) & ((((int) ((signed char) (~(((int) (var_12)) & ((int) (109)))))) + (2147483647)) << (((((int) ((unsigned short) (var_27))) - (15320)) - (0)) - (1)));
- unsigned short var_223 = ((((int) (struct_obj_4.member_2_3.member_1_2)) + (2147483647)) >> (((~(~((int) (var_18)))) << (((((int) (68)) | ((int) (struct_obj_4.member_2_1.member_1_3))) & (((int) (struct_obj_1.member_5_2)) ^ ((int) (-16242)))) + (58826))) - (5046248))) || (((int) ((unsigned short) ((-((int) (9390))) / (((int) (31664)) * ((int) (-70)))))) << ((((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159))))))))) | ((int) ((unsigned short) ((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159)))))))))))) - (15329)));
- unsigned short var_224 = ((int) (((int) (-11433)) > ((int) (-13855)))) || (~(((int) ((short) (((int) (struct_obj_6.member_5_3)) && ((int) (struct_obj_4.member_2_3.member_1_3))))) ^ (~((int) (((int) (32)) <= ((int) (11233)))))));
- signed char var_225 = (((~(((int) (-26)) | ((int) (-117)))) & ((((int) (111)) & ((int) (22599))) ^ (((int) (10345)) << ((((int) (-66)) + (88)) - (12))))) >> (((int) (-3619)) + (3621))) >> ((~((int) (struct_obj_6.member_5_1))) + (44653));
- unsigned short var_226 = ((int) ((((~((int) (struct_obj_9.member_2_5))) | ((int) (22048))) & ((((int) (struct_obj_4.member_2_3.member_1_1)) & ((int) (var_4))) | (((int) (struct_obj_3.member_5_1)) | ((int) (27648))))) <= ((int) (((int) ((signed char) ((((int) (struct_obj_7.member_1_0)) + (2147483647)) >> (((int) (var_15)) - (38610))))) != ((int) ((signed char) ((short) (struct_obj_1.member_5_3)))))))) > (((int) (var_44)) >> ((int) ((unsigned short) (((int) (struct_obj_6.member_5_2)) >> ((~((int) (-18530))) - (18509))))));
- signed char var_227 = ((int) (18755)) * ((int) (((int) ((unsigned short) ((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159))))))))))) > ((~(~((int) (37454)))) & ((~((int) (-7983))) | (((int) (-31547)) & ((int) (22310)))))));
- signed char var_228 = !(~((int) ((((int) (((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)) != ((int) (struct_obj_8.member_4_1.member_3_1.member_1_2)))) || (-((int) (42)))) >= ((int) ((short) (((int) (var_195)) ^ ((int) (struct_obj_8.member_4_4))))))));
- unsigned short var_229 = (-(~(~(((int) (var_32)) & ((int) (-23)))))) && ((int) ((signed char) ((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159)))))))))));
- }
- else
- {
- short var_230 = (short) (struct_obj_4.member_2_5);
- unsigned short var_231 = ((int) ((signed char) (((int) ((short) (((int) (struct_obj_9.member_2_1.member_1_3)) << (((int) (struct_obj_8.member_4_5)) + (1331))))) & ((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159)))))))))))) % ((int) ((short) ((unsigned short) (~((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159)))))))))))));
- short var_232 = (unsigned short) ((((int) (49)) || ((!((int) (7))) || ((int) ((short) (struct_obj_3.member_5_1))))) && (!((int) (52603))));
- signed char var_233 = (~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159))))))));
- var_234 = (short) ((((int) ((signed char) ((unsigned short) (~((int) (var_50)))))) & (~((int) ((short) (((int) (6)) | ((int) (var_40))))))) <= (((-((((int) (struct_obj_8.member_4_4)) & ((int) (struct_obj_9.member_2_4))) | ((int) (61009)))) + (2147483647)) >> (!(((~((~(((int) (32286)) ^ ((int) (99)))) ^ (~(((int) (6)) ^ ((int) (-93)))))) & ((int) ((short) (((((int) (43755)) ^ ((int) (struct_obj_1.member_5_0))) & (((int) (var_29)) ^ ((int) (124)))) ^ ((int) ((signed char) (~((int) (12159))))))))) * (((int) (struct_obj_1.member_5_3)) * ((int) (-53)))))));
- signed char var_235 = !(!((int) ((signed char) ((!((int) (var_23))) && (((int) (var_2)) && ((int) (-40)))))));
- short var_236 = ((~((int) (((int) (-9)) != ((int) (((int) (-6685)) <= ((int) (-51))))))) || ((((int) (((int) (var_9)) >= ((int) (struct_obj_9.member_2_1.member_1_0)))) || (((int) (var_233)) - ((int) (var_28)))) && ((int) (15198)))) || (((-(((int) (8864)) - ((int) (struct_obj_4.member_2_3.member_1_3)))) - ((((int) (-81)) - ((int) (struct_obj_4.member_2_0))) - ((int) ((signed char) (67))))) && (-((int) (((int) ((unsigned short) (29545))) < (((int) (var_54)) / ((int) (23)))))));
- }
-
- }
-
- }
-
- if ((((int) (-30504)) ^ (((int) (struct_obj_9.member_2_0)) & ((~((int) (16009))) & (((int) (59488)) ^ ((int) (-25101)))))) & ((int) ((unsigned short) ((signed char) ((((int) (-70)) ^ ((int) ((-127 - 1)))) ^ (~((int) (-18198))))))))
- {
- short var_237 = ((int) ((unsigned short) (~(~(((int) (32724)) & ((int) (-57))))))) > (~((int) (((int) (var_15)) <= (((int) ((unsigned short) (var_65))) + (((int) (var_16)) && ((int) (var_37)))))));
- short var_238 = ((int) (-1594)) <= (((int) (var_37)) + ((int) (var_237)));
- signed char var_239 = (((~(((((int) (var_65)) ^ ((int) (56889))) + (2147483647)) >> ((((int) (var_37)) << (((int) (struct_obj_9.member_2_4)) - (13527))) - (15204328)))) + (2147483647)) << (((int) ((unsigned short) ((((int) (-29413)) | ((int) (struct_obj_1.member_5_3))) | (~((int) (var_61)))))) - (36863))) | ((((((int) (var_22)) & ((int) (-10107))) << ((((int) (-7266)) | ((int) (struct_obj_10.member_1_0))) + (7232))) << (((int) ((signed char) (var_28))) & (((int) (var_238)) >> (((int) (struct_obj_9.member_2_5)) - (26951))))) << (((((int) ((short) (((int) (31750)) ^ ((int) (struct_obj_8.member_4_8))))) + (2147483647)) << ((((((~((int) ((signed char) (struct_obj_4.member_2_5)))) + (139)) - (25)) - (0)) - (0)) - (1))) - (2147463623)));
- var_49 = (signed char) ((~((~((int) (struct_obj_1.member_5_0))) | ((~((int) (var_38))) ^ (~((int) (var_18)))))) * (~(((int) ((short) ((((int) (-74)) + (2147483647)) << (((((int) (-7673)) + (7685)) - (11)) - (1))))) | ((int) ((short) ((unsigned short) (struct_obj_8.member_4_1.member_3_1.member_1_1)))))));
- if (var_30)
- {
- if ((-(((((int) (struct_obj_10.member_1_0)) * ((int) (4200))) * (~((int) (-32)))) * (~(-((int) (var_40)))))) >= ((int) (((~(((int) (7439)) & ((int) (var_33)))) && ((int) (((int) (var_27)) != (((int) (struct_obj_9.member_2_6)) << (((int) (43587)) - (43579)))))) < ((int) ((!((int) ((signed char) (struct_obj_8.member_4_5)))) >= ((~((int) (9170))) & (((int) (18966)) & ((int) (var_36)))))))))
- {
- var_240 = (signed char) ((+(((((int) (39678)) + ((int) (-20537))) + (((int) (-20330)) - ((int) (-35)))) * ((+((int) (-32053))) + ((int) (-29363))))) >> ((((int) (var_8)) || ((!((int) (22))) || (((int) (53763)) || ((int) (11024))))) && (((((int) (struct_obj_9.member_2_2)) && ((int) (var_20))) || ((int) (62563))) || (((int) ((short) (-28548))) && ((int) (struct_obj_9.member_2_5))))));
- var_241 = (unsigned short) (-((int) ((((((int) (90)) / ((int) (var_14))) >> ((-((int) (-3575))) - (3547))) | ((int) ((((int) (var_10)) * ((int) (61679))) > (((int) (var_3)) % ((int) (-39)))))) < (((int) (((int) ((signed char) (21447))) <= ((int) (((int) (struct_obj_8.member_4_1.member_3_1.member_1_2)) > ((int) (struct_obj_9.member_2_2)))))) / (~(((int) (5083)) | ((int) (var_62))))))));
- short var_242 = ((int) (((int) ((signed char) ((((int) (-123)) && ((int) (20950))) < ((int) (((int) (26747)) < ((int) (-37))))))) >= ((int) ((((int) (58514)) && ((int) (-20862))) != (!(!((int) (struct_obj_10.member_1_3)))))))) % (((((int) ((signed char) (var_55))) * (~((int) (var_40)))) % (~(((int) (struct_obj_5.member_1_3)) + ((int) (19833))))) ^ (~((((int) (6964)) || ((int) (struct_obj_5.member_1_0))) & ((int) ((short) (var_62))))));
- unsigned short var_243 = +((((int) ((unsigned short) (+((int) (struct_obj_4.member_2_7))))) / ((-((int) (struct_obj_9.member_2_1.member_1_0))) * (+((int) (struct_obj_9.member_2_1.member_1_1))))) * (+((int) ((short) (+((int) (23962)))))));
- unsigned short var_244 = ((int) ((((int) ((unsigned short) (~((int) (var_54))))) ^ (~(((int) (var_38)) ^ ((int) (struct_obj_8.member_4_6))))) >= ((int) ((short) (((int) (25080)) >> ((((int) (var_21)) * ((int) (struct_obj_8.member_4_8))) + (3109978))))))) < ((int) (struct_obj_9.member_2_4));
- struct_obj_9.member_2_2 = (unsigned short) (((int) (((int) (((int) (var_33)) >= ((~((int) (27357))) | ((int) (58514))))) < ((((((int) (-24728)) + (2147483647)) >> ((((int) (-12450)) + (12482)) - (29))) >> ((((int) (57)) * ((int) (14104))) - (803923))) / ((int) (((int) (58514)) != ((int) (((int) (struct_obj_4.member_2_0)) != ((int) (struct_obj_8.member_4_5))))))))) != ((int) ((unsigned short) ((((int) ((signed char) (((int) (48)) | ((int) (var_59))))) + (2147483647)) << (((~(((int) (struct_obj_4.member_2_7)) & ((int) (var_239)))) + (102)) - (26))))));
- signed char var_245 = ((int) ((signed char) (-22439))) << ((((int) ((signed char) (((int) (var_22)) >> (((int) (var_33)) - (40281))))) / ((int) (25526))) || ((((int) ((short) (var_60))) / (((int) (-53)) * ((int) (24333)))) * ((((int) (struct_obj_8.member_4_1.member_3_1.member_1_1)) * ((int) (struct_obj_6.member_5_0))) / (((int) (7947)) * ((int) (struct_obj_9.member_2_4))))));
- var_57 = (signed char) ((short) (~((((int) ((unsigned short) (struct_obj_8.member_4_1.member_3_1.member_1_0))) | (((int) (struct_obj_6.member_5_2)) | ((int) (-127)))) ^ ((~((int) (-18008))) & (((int) (var_7)) & ((int) (var_1)))))));
- signed char var_246 = (((!(((int) (-31124)) && ((int) (42538)))) / ((((int) (-26184)) & ((int) (-6497))) | (((int) (1782)) & ((int) (111))))) ^ (-((int) ((unsigned short) (((int) (10177)) > ((int) (8727))))))) - (-((int) (((int) (-72)) < (((int) ((unsigned short) (63))) ^ (((int) (-13275)) & ((int) (-32755)))))));
- signed char var_247 = ((int) (((int) ((signed char) ((~((int) (var_44))) || ((int) ((signed char) (59533)))))) < ((int) (((-((int) (var_11))) & (((int) (-951)) ^ ((int) (struct_obj_8.member_4_9.member_1_1)))) != ((((int) (37950)) >> (((int) (19587)) - (19587))) && ((int) (((int) (24323)) == ((int) (var_41))))))))) >> ((int) (((!((int) (struct_obj_9.member_2_4))) && ((!((int) (-25737))) && (((int) (var_59)) || ((int) (struct_obj_9.member_2_1.member_1_0))))) == ((int) (((((int) (var_40)) | ((int) (46921))) | ((int) (struct_obj_4.member_2_3.member_1_2))) <= ((int) ((!((int) (struct_obj_8.member_4_1.member_3_1.member_1_2))) <= (((int) (119)) & ((int) (-31)))))))));
- }
-
- if ((-((int) ((short) ((signed char) ((short) (var_20)))))) <= (((int) (((((int) (struct_obj_8.member_4_1.member_3_0)) ^ ((int) (struct_obj_9.member_2_1.member_1_0))) << ((((int) (58)) ^ ((int) (var_45))) + (128))) == ((int) (var_31)))) ^ ((int) (((((int) (struct_obj_1.member_5_1)) | ((int) (37360))) | (~((int) (var_5)))) <= ((int) (8))))))
- {
- unsigned short var_248 = (unsigned short) (((((int) (struct_obj_4.member_2_3.member_1_2)) * ((int) ((short) (26360)))) / (((int) ((signed char) (8410))) * (((int) (957)) * ((int) (16064))))) * (-((-((int) (1))) * ((int) ((unsigned short) (-15383))))));
- short var_249 = (signed char) (((((int) ((short) ((((int) (-15020)) + (2147483647)) << (((int) (var_12)) - (29985))))) + (2147483647)) << ((((((int) (var_25)) | ((int) (struct_obj_7.member_1_1))) ^ (((int) (var_7)) ^ ((int) (struct_obj_2.member_5_3)))) + (31452)) - (3))) << (((int) (106)) - (106)));
- short var_250 = (signed char) ((~((((int) (var_249)) * ((int) (26))) * ((int) ((signed char) (var_44))))) * (~((int) (-6112))));
- short var_251 = ~((int) ((short) (((((int) (var_60)) * ((int) (var_14))) * ((int) ((signed char) (var_35)))) * (-(((int) (struct_obj_8.member_4_3)) / ((int) (var_44)))))));
- short var_252 = (~((int) ((((int) ((unsigned short) (68))) ^ (~((int) (28040)))) >= ((int) ((signed char) ((signed char) (struct_obj_8.member_4_0))))))) * ((!((((int) (var_8)) || ((int) (struct_obj_9.member_2_1.member_1_3))) && ((int) ((short) (var_59))))) && (!((((int) (21061)) && ((int) (-24998))) && (((int) (var_51)) || ((int) (var_9))))));
- short var_253 = ((int) ((signed char) (var_48))) <= ((int) (struct_obj_8.member_4_6));
- }
- else
- {
- unsigned short var_254 = ((((((int) (102)) * ((int) (15365))) / (-((int) (-17680)))) * (-(((int) (-27940)) * ((int) (-40))))) / (((int) ((short) (-63))) * (~(((int) (struct_obj_8.member_4_1.member_3_1.member_1_2)) * ((int) (var_58)))))) & ((int) ((((int) (var_22)) + (((int) (31276)) & (~((int) (-102))))) < ((int) (((int) (struct_obj_4.member_2_6)) > ((int) ((short) (((int) (var_58)) && ((int) (struct_obj_8.member_4_1.member_3_1.member_1_1)))))))));
- signed char var_255 = +((int) (var_52));
- short var_256 = var_7;
- short var_257 = (((int) ((signed char) ((short) ((unsigned short) (struct_obj_9.member_2_5))))) >> ((int) ((((int) (35251)) / ((int) ((unsigned short) (var_255)))) <= ((int) ((unsigned short) (((int) (struct_obj_9.member_2_6)) > ((int) (var_42)))))))) < ((int) (var_52));
- struct_obj_9.member_2_6 = (unsigned short) (((((int) ((short) (((int) (struct_obj_4.member_2_7)) - ((int) (13943))))) + (-(-((int) (-16676))))) + (((int) (-38)) - ((-((int) (struct_obj_9.member_2_1.member_1_1))) + (-((int) (69)))))) ^ ((int) ((signed char) ((~(((int) (-28)) ^ ((int) (var_254)))) | ((int) ((unsigned short) (((int) (-28119)) ^ ((int) (-71)))))))));
- unsigned short var_258 = (~((!((int) ((signed char) (11992)))) || ((((int) (15514)) && ((int) (-73))) || (((int) (26696)) && ((int) (-5402)))))) > ((((int) ((short) ((unsigned short) ((signed char) (var_63))))) + (2147483647)) << ((((((int) ((short) (~(~((int) (-81)))))) + (103)) - (21)) - (0)) - (1)));
- signed char var_259 = (short) ((((((int) (struct_obj_8.member_4_9.member_1_0)) * ((int) (var_16))) - ((int) (var_7))) + (+(((int) (struct_obj_4.member_2_7)) - ((int) (struct_obj_5.member_1_3))))) * ((int) (15489)));
- var_260 = (signed char) ((unsigned short) (((int) (((((int) (var_58)) >> (((int) (struct_obj_4.member_2_2)) - (30767))) >> ((((int) (var_16)) << ((int) (var_254))) - (7881))) > ((int) (-17)))) / (((int) (((int) ((unsigned short) (22400))) != (((int) (struct_obj_8.member_4_4)) & ((int) (-7838))))) ^ ((int) ((signed char) (~((int) (var_255))))))));
- }
-
- if ((signed char) ((short) (((((int) (-10196)) ^ ((int) (var_39))) ^ ((int) ((signed char) (19637)))) & ((int) ((unsigned short) (((int) (33)) ^ ((int) (var_14))))))))
- {
- signed char var_261 = ((int) ((signed char) (~((int) ((short) (((int) (9625)) ^ ((int) (var_66)))))))) && (((int) (((~((int) (struct_obj_4.member_2_3.member_1_3))) ^ (((int) (var_14)) | ((int) (var_64)))) <= ((int) ((unsigned short) (-((int) (41740))))))) | ((int) (struct_obj_2.member_5_2)));
- unsigned short var_262 = struct_obj_8.member_4_6;
- short var_263 = struct_obj_8.member_4_9.member_1_2;
- signed char var_264 = struct_obj_6.member_5_2;
- signed char var_265 = (unsigned short) (~(-(-((int) (((int) (47121)) > ((int) (30366)))))));
- unsigned short var_266 = -((int) ((signed char) (((((int) (-9)) * ((int) (struct_obj_6.member_5_1))) / (((int) (var_61)) * ((int) (var_11)))) * ((int) ((signed char) ((short) (48373)))))));
- short var_267 = (((int) (var_46)) & (~((~((int) (struct_obj_8.member_4_3))) | ((int) ((unsigned short) (29846)))))) / (((int) ((short) (((int) ((unsigned short) (var_51))) || (((int) (struct_obj_8.member_4_4)) && ((int) (var_62)))))) && (((int) ((signed char) ((signed char) (-32)))) && ((((int) (var_8)) || ((int) (struct_obj_4.member_2_3.member_1_0))) && ((int) (-103)))));
- var_268 = (signed char) (((int) (var_21)) - ((-((((int) (struct_obj_8.member_4_9.member_1_1)) - ((int) (var_14))) + (-((int) (var_17))))) + ((int) (struct_obj_9.member_2_5))));
- unsigned short var_269 = (~((int) ((~((int) ((unsigned short) (~((~((int) (var_27))) & (((int) (var_8)) & ((int) (-26607)))))))) != (+(!((int) (31000))))))) * (((int) (((int) (256)) >= ((int) (9376)))) % (((((int) (6933)) ^ ((int) (43243))) & (((int) (21486)) >> (((int) (-17065)) + (17068)))) << ((((int) ((short) (100))) & ((int) ((signed char) (-13)))) - (95))));
- signed char var_270 = (short) (((int) (((((int) (35227)) && ((int) (var_61))) && (!((int) (14283)))) > ((int) ((((int) (15621)) ^ ((int) (24148))) <= (((int) (struct_obj_8.member_4_9.member_1_2)) || ((int) (11653))))))) < (-((int) ((short) (((int) (struct_obj_5.member_1_3)) | ((int) (-10)))))));
- }
- else
- {
- unsigned short var_271 = (~((int) ((unsigned short) ((((int) (var_17)) & ((int) (var_4))) ^ (((int) (13016)) & ((int) (struct_obj_2.member_5_0))))))) & ((!(~(!((int) (var_17))))) / ((((int) ((signed char) (var_35))) ^ (~((int) (struct_obj_4.member_2_3.member_1_1)))) & ((~((int) (var_12))) | ((((int) (-29314)) + (2147483647)) << ((((int) (62)) - (61)) - (1))))));
- short var_272 = ((int) ((unsigned short) (((~((int) (84))) | (~((int) (110)))) & (~(((int) (115)) | ((int) (-76))))))) - ((int) (var_23));
- signed char var_273 = (signed char) ((((((int) (-16844)) | ((int) (17775))) ^ (((int) (7963)) | ((int) (12142)))) | ((~((int) (15627))) ^ (((int) (26739)) ^ ((int) (-125))))) && (((int) (((int) (((int) (var_24)) <= ((-((int) (var_16))) * ((int) ((short) (var_34)))))) < ((int) (struct_obj_3.member_5_3)))) | ((int) (((int) ((signed char) (~(((int) (var_4)) + ((int) (25973)))))) <= ((int) (-123))))));
- struct_obj_8.member_4_1.member_3_1.member_1_0 = (signed char) (~((int) ((unsigned short) (+((int) ((short) ((short) (var_62))))))));
- signed char var_274 = (-(((int) ((~((int) (var_15))) <= ((int) ((signed char) (var_271))))) % (~(~((int) (var_28)))))) * ((((int) (((int) (((int) (var_24)) <= ((-((int) (var_16))) * ((int) ((short) (var_34)))))) < ((int) (struct_obj_3.member_5_3)))) | ((int) (((int) ((signed char) (~(((int) (var_4)) + ((int) (25973)))))) <= ((int) (-123))))) ^ ((~(((int) (-19317)) & ((int) (65)))) & (!((int) (((int) (8677)) <= ((int) (12375)))))));
- short var_275 = ((~(((int) (((((int) (var_65)) + (2147483647)) >> (((int) (-16890)) + (16891))) != (~((int) (17071))))) % ((int) ((unsigned short) (~((int) (var_38))))))) + (2147483647)) >> (((int) ((unsigned short) (-(((int) (struct_obj_9.member_2_1.member_1_3)) * ((int) (struct_obj_9.member_2_2)))))) && ((~(((int) (struct_obj_8.member_4_9.member_1_0)) * ((int) (var_46)))) & ((int) (struct_obj_4.member_2_0))));
- signed char var_276 = (((((int) (((int) (((int) (var_24)) <= ((-((int) (var_16))) * ((int) ((short) (var_34)))))) < ((int) (struct_obj_3.member_5_3)))) | ((int) (((int) ((signed char) (~(((int) (var_4)) + ((int) (25973)))))) <= ((int) (-123))))) || (-(~((int) (51098))))) % (((((int) (struct_obj_4.member_2_7)) & ((int) (-112))) & ((int) ((short) (25098)))) ^ ((~((int) (-101))) | (((int) (var_28)) & ((int) (-7003)))))) * ((int) ((short) (((int) ((-((int) (27204))) != (-((int) (63928))))) || ((((int) (-43)) * ((int) (-26382))) / (((int) (83)) * ((int) (14127)))))));
- short var_277 = (~((int) ((short) (((int) (((int) (((int) (var_24)) <= ((-((int) (var_16))) * ((int) ((short) (var_34)))))) < ((int) (struct_obj_3.member_5_3)))) | ((int) (((int) ((signed char) (~(((int) (var_4)) + ((int) (25973)))))) <= ((int) (-123)))))))) || (~((int) (var_56)));
- signed char var_278 = (~((int) ((signed char) ((((int) (var_56)) ^ ((int) (var_64))) ^ (((int) (struct_obj_1.member_5_2)) & ((int) (struct_obj_8.member_4_7))))))) >= (((int) (((int) (((int) (var_24)) <= ((-((int) (var_16))) * ((int) ((short) (var_34)))))) < ((int) (struct_obj_3.member_5_3)))) | ((int) (((int) ((signed char) (~(((int) (var_4)) + ((int) (25973)))))) <= ((int) (-123)))));
- }
-
- short var_279 = (unsigned short) (((+((int) (var_1))) + ((int) ((signed char) (~((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)))))) / (((int) (struct_obj_9.member_2_5)) && (~((int) ((signed char) (struct_obj_7.member_1_1))))));
- if (~(~((int) ((unsigned short) (~(((int) (43)) >> (((int) (39844)) - (39841))))))))
- {
- short var_280 = (-(-(!((int) (16816))))) > ((((((int) (-20572)) | ((int) (struct_obj_8.member_4_0))) & (((int) (struct_obj_9.member_2_1.member_1_3)) | ((int) (30439)))) & ((((int) (-98)) ^ ((int) (-27720))) | (((int) (struct_obj_2.member_5_2)) & ((int) (7077))))) << (((int) (var_28)) - (13388)));
- signed char var_281 = (short) ((signed char) (!(!(((int) (17428)) || ((int) (27105))))));
- unsigned short var_282 = (((-(((int) (56239)) | ((int) (4)))) * ((int) (((int) (((int) (23297)) <= ((int) (-220)))) > (((int) (-17097)) * ((int) (-121)))))) || ((int) (((int) (-14340)) != ((int) (((int) (20335)) < (((int) (59459)) && ((int) (-107)))))))) - (((((int) (((~(-((int) (217)))) >> (((int) (-24993)) + (25001))) <= (!((int) ((~((int) (23529))) < (((int) (105)) + ((int) (-6170)))))))) >> ((((int) (-54)) ^ ((int) ((signed char) ((unsigned short) (((int) (-3615)) ^ ((int) (struct_obj_4.member_2_1.member_1_0))))))) - (115))) & ((int) ((unsigned short) (((int) (-87)) & ((int) (-83)))))) && ((int) (((int) (-2)) != (+(((int) (17715)) & ((int) (22)))))));
- unsigned short var_283 = ((~(~((int) ((short) (40109))))) | ((int) (57193))) ^ (((~((int) ((signed char) (var_239)))) ^ ((((int) (1415)) & ((int) (13531))) | (((int) (struct_obj_3.member_5_2)) | ((int) (-7807))))) & (((~((int) (23824))) ^ (~((int) (-50)))) & ((int) (-23004))));
- var_284 = (short) (!((int) ((short) ((((int) (53609)) ^ ((int) (((int) (var_29)) != ((int) (var_26))))) >= ((((int) (var_48)) / ((int) (11584))) | (((int) (-96)) ^ ((int) (23703))))))));
- struct_obj_8.member_4_5 = (short) ((short) (((~(((int) ((unsigned short) ((~(((int) (((~(-((int) (217)))) >> (((int) (-24993)) + (25001))) <= (!((int) ((~((int) (23529))) < (((int) (105)) + ((int) (-6170)))))))) >> ((((int) (-54)) ^ ((int) ((signed char) ((unsigned short) (((int) (-3615)) ^ ((int) (struct_obj_4.member_2_1.member_1_0))))))) - (115)))) ^ ((int) ((short) (((int) ((signed char) (18462))) | (((int) (var_30)) & ((int) (var_5))))))))) & ((int) (-23)))) + (2147483647)) << (((((int) (struct_obj_9.member_2_1.member_1_3)) | (((int) (52011)) | ((int) (29618)))) >> (((((int) (-17)) ^ ((int) (struct_obj_8.member_4_6))) | (((int) (struct_obj_2.member_5_2)) & ((int) (46991)))) - (46995))) - (4091))));
- }
-
- unsigned short var_285 = (signed char) (~(((int) ((signed char) (((int) (48619)) * ((int) (struct_obj_9.member_2_2))))) * (((int) (((~(-((int) (217)))) >> (((int) (-24993)) + (25001))) <= (!((int) ((~((int) (23529))) < (((int) (105)) + ((int) (-6170)))))))) >> ((((int) (-54)) ^ ((int) ((signed char) ((unsigned short) (((int) (-3615)) ^ ((int) (struct_obj_4.member_2_1.member_1_0))))))) - (115)))));
- }
- else
- {
- struct_obj_8.member_4_0 = (unsigned short) (!(-(!((((int) (58592)) & ((int) (var_17))) ^ (((int) (32236)) ^ ((int) (struct_obj_8.member_4_5)))))));
- if (-((int) (21770)))
- {
- unsigned short var_286 = (~((int) ((signed char) ((((int) (7)) & ((int) (struct_obj_4.member_2_4))) ^ ((int) ((signed char) (var_64))))))) <= (((~((int) (35976))) * ((((int) (struct_obj_2.member_5_1)) * ((int) (16694))) / (((int) (var_39)) * ((int) (struct_obj_2.member_5_1))))) * (((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))));
- unsigned short var_287 = var_237;
- signed char var_288 = (((~(((int) (10329)) | ((int) (-70)))) << (((int) ((short) (((int) (struct_obj_8.member_4_3)) >> (((int) (var_41)) - (48528))))) - (431))) & ((((int) ((signed char) (((int) (21261)) | ((int) (41469))))) + (2147483647)) << (((((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) + (24)) - (14)) - (0)) - (1)))) ^ ((((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) + (2147483647)) << (((((int) ((signed char) (~((int) (18910))))) - (32)) - (0)) - (1))) ^ (((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))));
- signed char var_289 = ((int) (((int) ((unsigned short) ((((int) (struct_obj_8.member_4_1.member_3_1.member_1_2)) ^ ((int) (var_238))) & (((int) (struct_obj_9.member_2_1.member_1_0)) & ((int) (-14985)))))) < (+(+((int) (struct_obj_4.member_2_6)))))) == (-((int) (((~((int) (var_26))) - ((int) ((short) (struct_obj_8.member_4_7)))) != ((((int) (var_52)) >> (((int) (var_9)) - (13476))) % ((int) (((int) (var_32)) > ((int) (struct_obj_9.member_2_6))))))));
- short var_290 = ~((int) (var_46));
- short var_291 = ((-(-(((int) (4132)) * ((int) (var_6))))) * (!(((int) (var_5)) / (((int) (struct_obj_4.member_2_5)) * ((int) (struct_obj_10.member_1_3)))))) / (((-(((int) (11642)) * ((int) (var_28)))) / ((((int) (var_30)) * ((int) (struct_obj_1.member_5_1))) / ((int) (108)))) * (+(-(((int) (36557)) * ((int) (-91))))));
- short var_292 = ((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))));
- short var_293 = (((int) ((short) ((~((int) (43459))) & ((((int) (var_292)) + (2147483647)) >> (((int) (44780)) - (44767)))))) && ((int) ((!(((int) (var_44)) || ((int) (-117)))) < ((int) (14679))))) ^ (-((int) (11578)));
- }
-
- if (~((int) ((unsigned short) ((unsigned short) (((int) ((signed char) (var_17))) & (((int) (struct_obj_8.member_4_9.member_1_0)) & ((int) (struct_obj_9.member_2_6))))))))
- {
- short var_294 = (((((~((int) (47532))) + (2147483647)) >> (((int) ((short) (140))) - (114))) ^ (~((int) (10977)))) & (((int) ((signed char) (((int) (var_16)) & ((int) (var_58))))) | ((int) (-29488)))) && ((int) ((unsigned short) ((((int) ((short) (((int) (struct_obj_7.member_1_2)) | ((int) (31723))))) + (2147483647)) << (((int) (var_49)) >> (~((int) (var_61)))))));
- signed char var_295 = (unsigned short) (var_58);
- short var_296 = ((int) (((((int) (45)) ^ (((int) (-12922)) & ((int) (struct_obj_8.member_4_6)))) - (-(((int) (var_46)) % ((int) (var_66))))) > ((((int) ((unsigned short) (var_64))) || (((int) (struct_obj_4.member_2_3.member_1_3)) || ((int) (var_10)))) || (((int) (struct_obj_4.member_2_1.member_1_0)) && (((int) (9298)) || ((int) (var_43))))))) <= ((((int) ((signed char) (((int) (-1967)) * ((int) (var_32))))) / (-(((int) (var_1)) * ((int) (struct_obj_4.member_2_1.member_1_3))))) >> ((((((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)) * ((int) (-27550))) / (((int) (var_31)) - ((int) (var_34)))) - ((((int) (23777)) * ((int) (-12271))) - ((int) (var_32)))) - (291814241)));
- var_297 = (unsigned short) ((~(((int) ((signed char) ((signed char) (-27)))) & ((((int) (-12274)) ^ ((int) (50858))) | (((int) (-24967)) | ((int) (-117)))))) >> ((((int) (29155)) << (((((int) ((signed char) (32757))) + (2147483647)) >> ((~((int) (14434))) + (14457))) - (509))) >> ((~((int) (-118))) - (98))));
- short var_298 = -((int) ((~((((int) (var_63)) - ((int) (21024))) & (((int) (var_53)) || ((int) (var_21))))) != ((int) (struct_obj_2.member_5_1))));
- var_65 = (short) (var_42);
- short var_299 = ((int) ((signed char) ((!(((int) (9107)) | ((int) (36489)))) != ((((int) ((((int) (var_6)) | (~((int) (var_15)))) > (((int) (-91)) ^ ((int) (var_8))))) && ((((int) (-53)) & (((int) (struct_obj_3.member_5_1)) * ((int) (struct_obj_3.member_5_1)))) * ((int) ((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) > (!((int) (62742))))))) * ((int) (((int) ((unsigned short) (-2983))) <= (((int) ((short) (((int) (44)) | ((int) (var_28))))) % ((((int) (22182)) & ((int) (77))) ^ (((int) (struct_obj_3.member_5_3)) ^ ((int) (var_5))))))))))) * ((((int) ((((int) (var_6)) | (~((int) (var_15)))) > (((int) (-91)) ^ ((int) (var_8))))) && ((((int) (-53)) & (((int) (struct_obj_3.member_5_1)) * ((int) (struct_obj_3.member_5_1)))) * ((int) ((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) > (!((int) (62742))))))) * ((int) (((int) ((unsigned short) (-2983))) <= (((int) ((short) (((int) (44)) | ((int) (var_28))))) % ((((int) (22182)) & ((int) (77))) ^ (((int) (struct_obj_3.member_5_3)) ^ ((int) (var_5))))))));
- unsigned short var_300 = ~(((int) ((short) ((~((int) (-2669))) ^ (~((int) (var_29)))))) | (((((int) (var_16)) | ((int) (struct_obj_8.member_4_5))) ^ (((int) (var_57)) & ((int) (var_33)))) | (~((int) (struct_obj_6.member_5_2)))));
- }
- else
- {
- short var_301 = (!((((int) (struct_obj_8.member_4_5)) || (!((int) (13152)))) && ((((int) (struct_obj_2.member_5_3)) && ((int) (var_20))) || (((int) (32258)) || ((int) (var_49)))))) || (!((!((int) ((signed char) (var_24)))) || (!(((int) (var_32)) && ((int) (var_23))))));
- signed char var_302 = ~((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) + ((+((int) ((unsigned short) (-6620)))) + (+((int) ((signed char) (struct_obj_4.member_2_1.member_1_0))))));
- short var_303 = ((int) (((int) ((~(((int) (26)) | ((int) (38463)))) != ((int) ((short) (((int) (24326)) && ((int) (-59))))))) <= ((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) / (-(((int) (7532)) || ((int) (19696))))))) & ((int) ((signed char) (~(~(((int) (57632)) << (((int) (-7168)) + (7176)))))));
- signed char var_304 = (unsigned short) ((unsigned short) ((((-((int) (54))) + (2147483647)) >> (((int) ((short) (-9386))) + (9392))) & ((int) (((int) ((short) (struct_obj_7.member_1_0))) <= (((int) (-25666)) & ((int) (var_27)))))));
- short var_305 = (((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) * (-(-(((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))))));
- short var_306 = ~((((~((((int) (var_302)) + (2147483647)) >> (((int) (var_61)) + (30)))) + (2147483647)) >> ((((int) (var_2)) << ((((int) ((short) (struct_obj_6.member_5_2))) + (19600)) - (29))) - (142254))) << (((((~((int) (29941))) | (~((int) (-12126)))) + (2147483647)) >> (((((int) (62210)) | ((int) (48372))) >> ((((int) (57460)) ^ ((int) (-31908))) + (40156))) - (4074))) - (1016)));
- signed char var_307 = ~(((~((int) ((signed char) (-12247)))) | ((int) ((unsigned short) (~((int) (13491)))))) & ((int) ((short) ((((int) (var_54)) | ((int) (27838))) | (((((int) ((short) ((signed char) (((int) (var_33)) | ((int) (struct_obj_4.member_2_3.member_1_2)))))) + (2147483647)) >> (((~((int) (var_10))) | (~((int) (var_21)))) & (((((int) (-42)) + (2147483647)) >> ((((int) (var_32)) - (46768)) - (9))) >> ((~((int) (var_21))) - (48))))) / ((-(((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))))) >> ((int) ((signed char) (((int) (struct_obj_4.member_2_3.member_1_1)) && (((int) (99)) || ((int) (var_9))))))))))));
- short var_308 = struct_obj_4.member_2_1.member_1_3;
- signed char var_309 = (unsigned short) (((int) ((signed char) ((+((int) (-43))) - ((int) ((unsigned short) (21945)))))) + ((int) ((signed char) ((((int) (var_41)) - ((int) (77))) + (((((int) ((short) ((signed char) (((int) (var_33)) | ((int) (struct_obj_4.member_2_3.member_1_2)))))) + (2147483647)) >> (((~((int) (var_10))) | (~((int) (var_21)))) & (((((int) (-42)) + (2147483647)) >> ((((int) (var_32)) - (46768)) - (9))) >> ((~((int) (var_21))) - (48))))) / ((-(((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))))) >> ((int) ((signed char) (((int) (struct_obj_4.member_2_3.member_1_1)) && (((int) (99)) || ((int) (var_9))))))))))));
- }
-
- if ((~(((~((int) (var_12))) & (((int) (struct_obj_6.member_5_0)) & ((int) (var_239)))) << (((~((int) (-74))) ^ (~((int) (114)))) + (75)))) && ((int) ((((((int) (13630)) ^ ((int) (19614))) >> (((int) (-34)) + (44))) | (((((int) (-65)) + (2147483647)) << (((int) (38398)) - (38398))) & (((int) (28940)) ^ ((int) (14947))))) > ((int) (((int) ((signed char) (((int) (var_48)) * ((int) (1346))))) != ((int) (var_239)))))))
- {
- signed char var_310 = ((((int) (struct_obj_10.member_1_2)) | ((~((int) (-28776))) & (~((int) (struct_obj_9.member_2_4))))) & ((~(((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))))) & ((((int) (-84)) ^ ((int) (20424))) ^ ((int) ((unsigned short) (-14767)))))) ^ (((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))));
- unsigned short var_311 = (unsigned short) (var_28);
- unsigned short var_312 = ((-((int) ((unsigned short) (54857)))) * ((int) (((~((int) (struct_obj_3.member_5_3))) & (((int) (var_7)) || ((int) (struct_obj_4.member_2_1.member_1_0)))) < (-((int) (var_1)))))) * (~(((int) (-38)) ^ ((((int) (0)) & ((int) (-104))) & (((int) (-110)) & ((int) (-92))))));
- signed char var_313 = (unsigned short) (~((int) ((short) ((~((int) (struct_obj_9.member_2_1.member_1_3))) ^ (~((int) (102)))))));
- var_314 = (signed char) (!(((((int) ((signed char) (-18731))) * (((int) (struct_obj_4.member_2_3.member_1_0)) * ((int) (struct_obj_8.member_4_4)))) * ((((int) (struct_obj_6.member_5_0)) * ((int) (86))) / (((int) (45398)) * ((int) (1603))))) << ((~((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) & (((int) (37)) & ((int) (55829))))) + (30))));
- signed char var_315 = struct_obj_4.member_2_3.member_1_0;
- signed char var_316 = (~((int) ((short) (((int) ((signed char) (struct_obj_7.member_1_1))) < (((int) (13)) || ((int) (struct_obj_8.member_4_6))))))) || (+((int) (((((int) (var_66)) >> (((int) (struct_obj_1.member_5_3)) - (710))) | (((int) (var_5)) & ((int) (8143)))) >= (-(((int) (5864)) & ((int) (var_63)))))));
- unsigned short var_317 = ((int) ((unsigned short) (~(((~((int) (44320))) + (2147483647)) >> ((((int) (20877)) & ((int) (-14066))) - (16645)))))) || ((int) (struct_obj_5.member_1_3));
- short var_318 = !((int) ((~(~(((int) (var_25)) | ((int) (struct_obj_1.member_5_0))))) <= ((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) | (((int) ((unsigned short) (struct_obj_5.member_1_0))) << ((((int) (23789)) ^ ((int) (struct_obj_3.member_5_1))) - (56480))))));
- short var_319 = -(((int) ((unsigned short) ((((int) (-6974)) && ((int) (11892))) && (((int) (-3845)) || ((int) (-41)))))) || ((!(((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))))) && ((int) (-19831))));
- }
- else
- {
- short var_320 = struct_obj_4.member_2_5;
- unsigned short var_321 = struct_obj_6.member_5_0;
- unsigned short var_322 = ~((int) (struct_obj_8.member_4_4));
- unsigned short var_323 = ((int) (var_41)) >> ((int) (((int) (((int) (((int) ((short) (var_27))) == (~(~((int) (struct_obj_4.member_2_5)))))) < (((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) + (2147483647)) << (((int) ((((int) (var_28)) || ((int) (struct_obj_2.member_5_0))) != (((int) (var_19)) & ((int) (struct_obj_4.member_2_1.member_1_1))))) >> (!((int) (struct_obj_2.member_5_3))))))) != ((int) (((int) ((signed char) (((int) (var_36)) - ((int) (struct_obj_2.member_5_1))))) != (!((int) (struct_obj_6.member_5_3)))))));
- unsigned short var_324 = ((int) (((int) ((short) (var_27))) == (~(~((int) (struct_obj_4.member_2_5)))))) < (((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) + (2147483647)) << (((int) ((((int) (var_28)) || ((int) (struct_obj_2.member_5_0))) != (((int) (var_19)) & ((int) (struct_obj_4.member_2_1.member_1_1))))) >> (!((int) (struct_obj_2.member_5_3)))));
- short var_325 = ((((int) (((int) (((int) ((short) (var_27))) == (~(~((int) (struct_obj_4.member_2_5)))))) < (((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) + (2147483647)) << (((int) ((((int) (var_28)) || ((int) (struct_obj_2.member_5_0))) != (((int) (var_19)) & ((int) (struct_obj_4.member_2_1.member_1_1))))) >> (!((int) (struct_obj_2.member_5_3))))))) ^ ((((int) (-122)) | ((int) (11927))) ^ (((int) (-62)) & ((int) (118))))) ^ (~((~((int) (25738))) & (~((int) (39921)))))) & ((int) ((signed char) (~(~((int) ((unsigned short) (struct_obj_3.member_5_0)))))));
- signed char var_326 = (-((int) ((short) ((~((int) (-4583))) == (-((int) (var_36))))))) - ((int) (((((((int) (var_66)) >> (((int) (var_39)) - (28144))) ^ (~((int) (var_1)))) + (2147483647)) << (((((((int) (struct_obj_6.member_5_1)) << (((int) (var_8)) - (14653))) | (((int) (struct_obj_8.member_4_2)) | ((int) (101)))) - (22861934)) - (0)) - (1))) > (((int) (((int) (((int) (2)) >= ((int) (-8179)))) > (((int) (26581)) >> (((int) (-19231)) + (19234))))) >> ((int) (((int) (struct_obj_1.member_5_1)) <= (((int) (var_324)) << (((int) (var_22)) - (100))))))));
- unsigned short var_327 = ((int) ((short) (~((((int) (26866)) ^ ((int) (var_325))) & ((int) (struct_obj_3.member_5_3)))))) & ((int) ((signed char) (~((((int) (-5)) & ((int) (43))) & (((int) (var_51)) | ((int) (var_62)))))));
- unsigned short var_328 = ((((((int) (var_58)) & ((int) (struct_obj_2.member_5_1))) ^ (~((int) (struct_obj_4.member_2_4)))) >> ((((int) (17357)) << (((~((int) (var_41))) + (48559)) - (8))) - (568754148))) | ((int) ((unsigned short) (((((int) (struct_obj_7.member_1_0)) + (2147483647)) >> (((int) (var_32)) - (46780))) & (((int) (var_9)) | ((int) (-22456))))))) <= (-(~((int) ((-((int) (var_43))) < (((int) (var_62)) | ((int) (struct_obj_3.member_5_1)))))));
- }
-
- signed char var_329 = ((int) ((unsigned short) (!(!(!((int) (struct_obj_2.member_5_1))))))) != (-((int) (((int) ((((int) (9111)) * ((int) (45153))) <= (!((int) (17457))))) <= (~(((int) (77)) | ((int) (119)))))));
- if (((int) ((unsigned short) (((((int) (var_12)) ^ ((int) (var_62))) | (((int) (struct_obj_10.member_1_3)) | ((int) (struct_obj_2.member_5_0)))) | (((int) ((signed char) (-7510))) ^ (((int) (-22547)) | ((int) (24754))))))) & (((~(((int) (struct_obj_3.member_5_3)) | ((int) (8)))) ^ (~(((int) (56)) ^ ((int) (3137))))) | (~((~((int) (12881))) & (((int) (var_8)) & ((int) (var_25)))))))
- {
- signed char var_330 = ((int) ((unsigned short) (~((((int) (39713)) * ((int) (var_65))) * ((int) ((signed char) (struct_obj_4.member_2_1.member_1_1))))))) <= (!(~((((int) (struct_obj_4.member_2_1.member_1_0)) + ((int) (var_50))) * ((int) ((short) (29769))))));
- short var_331 = ~(((~(((int) (4598)) & ((int) (2017)))) | (((int) ((signed char) (32350))) | (((int) (-20556)) & ((int) (-79))))) ^ (((~((int) (-515))) & (((int) (61)) & ((int) (43194)))) | (((int) ((unsigned short) (11581))) & (~((int) (13360))))));
- signed char var_332 = (+(-(!(((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))))))) <= (((~(((int) (var_28)) * ((int) (struct_obj_5.member_1_0)))) / ((((int) (var_24)) * ((int) (-103))) * (-((int) (var_58))))) * (~(((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))))));
- unsigned short var_333 = (signed char) ((~((((int) (struct_obj_4.member_2_3.member_1_2)) | ((int) (var_10))) & (~((int) (var_31))))) & ((int) (((int) ((unsigned short) (((int) (-65)) * ((int) (-23009))))) < ((((int) (14)) >> (((int) (9306)) - (9299))) % ((int) (((int) (-1206)) != ((int) (96))))))));
- unsigned short var_334 = !(((~(((int) (-23006)) & ((int) (39022)))) ^ (~(((int) (14922)) | ((int) (-15058))))) | (((((int) (6629)) >> (((int) (35537)) - (35535))) & ((((int) (-16560)) + (2147483647)) >> (((int) (122)) - (118)))) >> (((((int) (16902)) >> ((int) (0))) ^ (~((int) (12194)))) + (28097))));
- short var_335 = ((((((int) (3251)) && ((int) (55))) || (((int) (49719)) && ((int) (-65)))) || (!(((int) (11)) || ((int) (1092))))) && ((int) (52871))) * (!((int) ((short) (struct_obj_3.member_5_1))));
- signed char var_336 = (((int) (((!((int) (20447))) || (((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))))) < (((int) ((signed char) (var_49))) >> ((((int) (var_23)) % ((int) (var_331))) - (2293))))) % ((int) ((unsigned short) (~((int) (struct_obj_2.member_5_1)))))) <= (~((int) ((short) ((((int) (var_21)) && ((int) (29492))) && (!((int) (var_332)))))));
- }
- else
- {
- unsigned short var_337 = (signed char) ((-((((int) (struct_obj_8.member_4_3)) * ((int) (struct_obj_5.member_1_0))) * (~((int) (struct_obj_4.member_2_1.member_1_0))))) & ((int) ((unsigned short) ((((int) (var_7)) >> (((int) (struct_obj_4.member_2_5)) - (10080))) <= (((int) (70)) & ((int) (-14194)))))));
- signed char var_338 = (-((int) (((((int) (struct_obj_8.member_4_6)) ^ ((int) (53070))) ^ (((int) (struct_obj_4.member_2_1.member_1_3)) | ((int) (var_59)))) < ((((int) (var_46)) & ((int) (-73))) && (((int) (var_39)) ^ ((int) (var_63))))))) <= ((int) (((((int) ((short) (struct_obj_8.member_4_1.member_3_0))) ^ (((int) (var_40)) % ((int) (var_22)))) && ((int) ((short) ((unsigned short) (var_19))))) < (((((int) (-62)) * ((int) (struct_obj_4.member_2_3.member_1_3))) * (!((int) (var_44)))) * (((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))))));
- unsigned short var_339 = (((~((int) (struct_obj_9.member_2_1.member_1_3))) ^ (~((int) ((short) (var_238))))) & (((int) ((signed char) (((int) (-12841)) | ((int) (var_37))))) ^ ((int) ((short) (~((int) (var_49))))))) | ((int) ((short) ((unsigned short) (var_4))));
- unsigned short var_340 = ((((int) (-11424)) | (~(~((int) (46432))))) & (((int) (-2781)) * ((((int) (64292)) & ((int) (-22641))) * ((int) (((int) (23837)) <= ((int) (61))))))) - ((int) (25957));
- short var_341 = ((int) ((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) > (((int) ((short) (((int) (struct_obj_4.member_2_0)) & ((int) (struct_obj_9.member_2_2))))) >> ((int) ((((int) (struct_obj_10.member_1_3)) * ((int) (4087))) <= (~((int) (var_13)))))))) + ((int) (struct_obj_8.member_4_2));
- }
-
- signed char var_342 = ~(((~((int) (struct_obj_3.member_5_3))) | ((((int) (struct_obj_9.member_2_1.member_1_1)) | ((int) (struct_obj_8.member_4_1.member_3_0))) | (((int) (854)) | ((int) (struct_obj_2.member_5_0))))) | (~((~((int) (var_21))) & ((int) (struct_obj_1.member_5_3)))));
- if (!((int) ((((int) ((signed char) (-19215))) / ((!((int) (354))) | (((int) (10)) * ((int) (47875))))) > ((-(((int) (18345)) >> ((((int) (14143)) - (14111)) - (6)))) >> (((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) - (((int) (12698)) + ((int) (20337)))) + (33070))))))
- {
- signed char var_343 = (unsigned short) (((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)) * (!((int) (var_34))));
- unsigned short var_344 = (~(~((((int) (-7563)) ^ ((int) (19679))) & (((int) (var_51)) | ((int) (var_60)))))) < ((int) ((short) (!(!(((int) (var_41)) || ((int) (var_42)))))));
- short var_345 = (signed char) ((signed char) (!(((int) (9488)) || (((int) (struct_obj_4.member_2_3.member_1_2)) && ((int) (struct_obj_1.member_5_2))))));
- signed char var_346 = var_20;
- short var_347 = (((int) (28581)) / (~((((int) (-39)) ^ ((int) (66))) ^ (((int) (-11597)) & ((int) (58452)))))) >> ((int) ((-(~((int) (((int) (83)) <= ((int) (26306)))))) > ((int) (((int) ((!((int) (-99))) <= (((int) (12533)) * ((int) (7321))))) > ((~((int) (26337))) | ((int) ((short) (36444))))))));
- unsigned short var_348 = ((int) (struct_obj_4.member_2_6)) + ((int) (((((~((int) (struct_obj_8.member_4_1.member_3_0))) & (~((int) (struct_obj_9.member_2_6)))) + (2147483647)) >> ((~(((int) (-11)) ^ ((int) (var_52)))) - (9858))) < (!(!(((int) (struct_obj_1.member_5_3)) || ((int) (3)))))));
- signed char var_349 = (~(((int) (2973)) ^ ((int) (57652)))) | (~(((int) ((short) (~((int) (46420))))) & ((int) ((signed char) (~((int) (5937)))))));
- signed char var_350 = ((int) (((-(((int) (var_36)) * ((int) (struct_obj_9.member_2_1.member_1_0)))) / ((+((int) (var_5))) - ((int) (struct_obj_9.member_2_2)))) > (((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))))) != (~((int) (((~((int) (var_30))) & (~((int) (13)))) == (~(((int) (struct_obj_10.member_1_3)) && ((int) (struct_obj_7.member_1_1)))))));
- }
- else
- {
- short var_351 = ((((int) ((short) (28973))) ^ ((((int) (5)) & ((int) (-25148))) & ((((int) (-4462)) + (2147483647)) << ((((int) (-95)) + (112)) - (17))))) | (((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) + (2147483647)) >> ((((int) ((short) (-32))) | (((int) (58)) >> (((int) (83)) - (53)))) + (59)))) < ((int) (((((int) (-14523)) && (((int) (24739)) >> (((int) (6042)) - (6039)))) + ((int) (-9773))) >= (((!((int) (34844))) || (((int) (50)) && ((int) (108)))) && (((int) ((unsigned short) (52136))) && (((int) (63576)) || ((int) (-30405)))))));
- unsigned short var_352 = (((int) (((int) ((signed char) ((unsigned short) (var_27)))) < ((int) ((((int) (-12442)) / ((int) (10549))) != (((int) (18542)) * ((int) (struct_obj_2.member_5_1))))))) / (-((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) * (((int) (7)) * ((int) (struct_obj_1.member_5_3)))))) | ((int) ((signed char) (((((int) (struct_obj_9.member_2_6)) * ((int) (var_17))) / ((int) (var_23))) / (((int) ((short) (var_32))) * (~((int) (struct_obj_1.member_5_3)))))));
- short var_353 = (signed char) ((short) (((((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172)))))) && (!((int) (31901)))) && (!(((int) (24490)) && ((int) (var_14))))));
- unsigned short var_354 = ~((((~((int) ((unsigned short) (struct_obj_7.member_1_2)))) + (2147483647)) >> (((((int) ((short) (-16611))) + (2147483647)) >> ((int) (((int) (var_237)) < ((int) (-59))))) - (2147467024))) & ((((int) (2632)) << ((~((int) (-70))) - (60))) | (((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))))));
- short var_355 = ~(((int) ((signed char) ((((int) (var_238)) | ((int) (-28688))) | (~((int) (struct_obj_8.member_4_7)))))) & (-((int) (-18035))));
- unsigned short var_356 = -(~((-(((int) (var_239)) ^ ((int) (struct_obj_4.member_2_5)))) % (!(!((int) (struct_obj_3.member_5_3))))));
- }
-
- short var_357 = ((((int) ((short) (((int) (struct_obj_9.member_2_0)) & ((int) (15110))))) | ((~((int) (var_8))) ^ (((int) (struct_obj_8.member_4_7)) | ((int) (var_66))))) ^ ((((int) ((unsigned short) (-163))) & ((int) ((short) (-51)))) ^ ((~((int) (struct_obj_8.member_4_0))) ^ ((int) ((unsigned short) (var_5)))))) < ((((((int) (struct_obj_9.member_2_1.member_1_3)) ^ ((int) (var_43))) >> ((~((int) (-19756))) - (19725))) & (~(((int) (var_60)) << ((int) (var_237))))) & ((((((int) (-91)) & ((int) (-28291))) + (2147483647)) >> ((((int) (51254)) << ((((int) (var_53)) - (13724)) - (13))) - (410005))) & ((int) (var_45))));
- var_358 = (unsigned short) (((int) (((int) ((((int) (var_2)) ^ ((int) ((unsigned short) (var_16)))) < ((int) ((signed char) (((int) (40083)) & ((int) (var_16))))))) <= ((int) (14594)))) != ((int) ((signed char) (((int) (((int) ((((int) (-5)) & ((int) (-31721))) != ((int) ((signed char) (var_35))))) <= (((int) ((unsigned short) (55455))) / (((int) (struct_obj_4.member_2_3.member_1_0)) && ((int) (struct_obj_4.member_2_6)))))) >> (((-((int) ((signed char) (var_8)))) % (((int) (-9)) + (-(((-((int) (-23416))) - ((int) ((unsigned short) (55908)))) / ((((int) (-24160)) - ((int) (28547))) * ((int) (19172))))))) + (10))))));
- }
-
- var_359 = (short) (!((~((int) ((unsigned short) (((int) (8977)) ^ ((int) (-2109)))))) ^ ((int) ((signed char) ((unsigned short) (~((int) (22))))))));
- if ((((int) ((short) (~(~((int) (var_43)))))) | (((~((int) (struct_obj_4.member_2_2))) + (2147483647)) >> ((((((int) (struct_obj_2.member_5_0)) & ((int) (-15349))) + (2147483647)) << (((((((((int) (-4)) + (2147483647)) >> (((int) (var_66)) - (65529))) - (67108862)) - (0)) - (0)) - (0)) - (1))) - (2147451885)))) & (((((int) (var_7)) ^ (((int) (struct_obj_4.member_2_5)) << (((int) (36)) - (31)))) << ((((int) (38)) & ((int) (var_60))) << (((int) (struct_obj_9.member_2_2)) >> (((int) (var_50)) - (46957))))) & (~((((int) (struct_obj_8.member_4_9.member_1_0)) << (((int) (7420)) - (7409))) | (~((int) (76)))))))
- {
- short var_360 = (((int) (var_17)) ^ (~((int) (39)))) - (~(((((int) (struct_obj_1.member_5_3)) & ((int) (struct_obj_5.member_1_3))) >> ((((int) (var_58)) & ((int) (struct_obj_4.member_2_3.member_1_1))) - (25))) | (~(((int) (struct_obj_10.member_1_3)) ^ ((int) (var_40))))));
- unsigned short var_361 = (!(((((int) (-22027)) | ((int) (struct_obj_2.member_5_3))) | (((int) (-7382)) ^ ((int) (var_35)))) & ((int) ((signed char) (~((int) (var_6))))))) & ((int) (((int) (struct_obj_9.member_2_1.member_1_3)) > (~(((~((int) (var_41))) + (2147483647)) >> ((((int) (-5606)) + (2147483647)) >> (((int) (-10)) + (38)))))));
- if (109)
- {
- signed char var_362 = (short) ((signed char) ((((int) (24460)) + ((int) (14314))) * ((((int) (54241)) - ((int) (18419))) + (((int) (struct_obj_10.member_1_3)) + ((int) (struct_obj_2.member_5_3))))));
- unsigned short var_363 = ((((((int) (3103)) | ((int) (var_60))) << ((((int) (var_22)) | ((int) (struct_obj_8.member_4_5))) - (1270))) >> ((~(~((int) (var_36)))) - (27384))) >> (((int) ((short) (struct_obj_8.member_4_5))) - (1174))) * ((((int) ((((int) (35729)) || ((int) (var_38))) <= (!((int) (var_26))))) - (!(((int) (20238)) << (((int) (struct_obj_9.member_2_2)) - (40620))))) ^ ((int) (var_361)));
- unsigned short var_364 = ((~(((int) ((unsigned short) (-12425))) & ((int) ((short) (52122))))) ^ (((~((int) (22591))) ^ (((int) (-14345)) & ((int) (51874)))) ^ ((((int) (51549)) ^ ((int) (3763))) ^ (((int) (43867)) ^ ((int) (-14)))))) & ((int) ((signed char) (14314)));
- signed char var_365 = ((int) ((short) (~((int) (14314))))) >= (-(+((int) ((short) (((int) (struct_obj_5.member_1_3)) - ((int) (struct_obj_10.member_1_2)))))));
- short var_366 = ((int) ((unsigned short) ((short) ((((int) (26517)) || ((int) (-9710))) && (((int) (struct_obj_9.member_2_1.member_1_0)) || ((int) (var_60))))))) >> ((int) (((int) (14314)) != ((((int) ((short) (struct_obj_6.member_5_3))) & (((int) (struct_obj_9.member_2_5)) & ((int) (-37)))) ^ (~((int) ((signed char) (struct_obj_8.member_4_9.member_1_2)))))));
- var_367 = (signed char) (((int) (18490)) << ((~(~((~((int) (var_56))) ^ (((int) (-35)) | ((int) (var_50)))))) - (20202)));
- short var_368 = (~((int) ((short) ((-((int) (struct_obj_4.member_2_1.member_1_3))) || ((int) ((signed char) (40213))))))) <= ((int) ((~((int) ((signed char) (((int) (var_60)) & ((int) (43)))))) <= ((~(((int) (var_12)) | ((int) (var_6)))) | ((int) ((signed char) (((int) (var_42)) & ((int) (var_66))))))));
- short var_369 = ((int) (struct_obj_4.member_2_3.member_1_1)) & (~((int) ((unsigned short) (((int) (14314)) ^ (((int) (-90)) & ((int) (74)))))));
- short var_370 = ((int) ((-((int) (var_11))) < (((int) (var_46)) >> ((((((int) (var_3)) ^ ((int) (struct_obj_3.member_5_0))) + (2147483647)) >> (((~((int) (var_54))) - (24876)) - (30))) - (536863949))))) >= (!(((int) (14314)) << ((int) ((~((int) (var_38))) == (((int) (var_8)) & ((int) (struct_obj_9.member_2_2)))))));
- short var_371 = ((int) (14314)) % ((int) (122));
- }
-
- var_46 = (unsigned short) (((int) (((int) ((~(((int) (17)) << (((int) (var_56)) - (20181)))) > ((((int) (var_35)) || ((int) (struct_obj_4.member_2_3.member_1_3))) || (((int) (struct_obj_9.member_2_2)) || ((int) (struct_obj_5.member_1_0)))))) <= (((((int) (struct_obj_8.member_4_9.member_1_0)) ^ ((int) (struct_obj_1.member_5_3))) ^ (((int) (var_46)) ^ ((int) (-14806)))) && ((~((int) (struct_obj_5.member_1_3))) & (((int) (struct_obj_1.member_5_3)) & ((int) (struct_obj_8.member_4_1.member_3_1.member_1_0))))))) || ((int) (((((int) (((int) (42)) >= ((int) (43439)))) & ((int) ((unsigned short) (var_360)))) % ((int) ((unsigned short) (~((int) (var_239)))))) <= ((int) (14314)))));
- signed char var_372 = !((int) ((signed char) (!(!(((int) (var_20)) || ((int) (struct_obj_9.member_2_0)))))));
- short var_373 = (((int) (((int) (var_59)) != ((int) ((unsigned short) (-((int) (var_39))))))) & (!(~((int) (struct_obj_8.member_4_2))))) > (+(((((int) (13707)) & ((int) (7604))) | (((int) (-25846)) & ((int) (-16556)))) & (~(~((int) (-31893))))));
- signed char var_374 = (((int) ((unsigned short) ((((int) (var_24)) - ((int) (-19514))) + ((int) ((unsigned short) (struct_obj_8.member_4_6)))))) % (~((((int) (struct_obj_3.member_5_1)) & ((int) (24836))) ^ ((int) (14314))))) && (((((int) ((unsigned short) (var_22))) * ((int) ((signed char) (-16118)))) / ((+((int) (32053))) * (((int) (var_46)) * ((int) (struct_obj_9.member_2_5))))) * (!(((int) ((unsigned short) (-21342))) / (((int) (-24)) * ((int) (44779))))));
- }
-
- if (-((((int) ((~((int) (-2283))) > ((int) (30538)))) & ((~((int) (-122))) | (((int) (20509)) | ((int) (-30753))))) ^ ((int) (struct_obj_8.member_4_2))))
- {
- short var_375 = (((int) ((signed char) ((((int) (-5376)) | ((int) (33396))) & (~((int) (52)))))) | (~(~((int) (struct_obj_8.member_4_1.member_3_0))))) & (~(((((int) (struct_obj_3.member_5_2)) | ((int) (51))) ^ (((int) (struct_obj_8.member_4_9.member_1_2)) | ((int) (5146)))) ^ ((((int) (var_47)) ^ ((int) (var_59))) ^ (((int) (var_53)) ^ ((int) (var_61))))));
- short var_376 = ((int) ((short) (((int) ((signed char) (~((int) (struct_obj_7.member_1_2))))) ^ (~(((int) (struct_obj_4.member_2_7)) | ((int) (53512))))))) ^ (~((int) (struct_obj_8.member_4_3)));
- if (!((((((int) (18612)) * ((int) (11102))) / (((int) (-10215)) * ((int) (14601)))) * ((int) ((unsigned short) (((int) (9895)) * ((int) (37183)))))) * ((((int) ((signed char) (5985))) * ((int) (-79))) * ((((int) (29091)) * ((int) (54881))) * (!((int) (8671)))))))
- {
- unsigned short var_377 = ~((((((int) (-37)) ^ ((int) (struct_obj_2.member_5_1))) & (~((int) (107)))) & ((((int) (var_26)) | ((int) (4730))) & (((int) (-82)) & ((int) (22312))))) & (((int) (struct_obj_9.member_2_4)) | ((~((int) (121))) & (((int) (struct_obj_7.member_1_2)) & ((int) (struct_obj_8.member_4_5))))));
- signed char var_378 = ~(((((int) (var_239)) | (((int) (struct_obj_8.member_4_4)) | ((int) (var_54)))) & ((int) (var_31))) | (((int) ((unsigned short) (4132))) ^ ((((int) (var_239)) | ((int) (var_27))) & ((int) ((unsigned short) (36))))));
- short var_379 = (signed char) (var_23);
- signed char var_380 = !((int) (((int) (((int) ((short) (!((int) (45291))))) > ((int) (-24057)))) <= ((((int) (79)) | (((int) (7019)) * ((int) (-30489)))) + ((int) ((((int) (45)) || ((int) (19))) <= (~((int) (8145))))))));
- short var_381 = (short) (((int) (struct_obj_3.member_5_0)) * (~((((int) (var_50)) / ((int) (var_1))) * ((int) ((short) (var_34))))));
- unsigned short var_382 = !((int) ((((int) ((short) (!((int) (((int) (((int) ((short) (!((int) (45291))))) > ((int) (-24057)))) <= ((((int) (79)) | (((int) (7019)) * ((int) (-30489)))) + ((int) ((((int) (45)) || ((int) (19))) <= (~((int) (8145))))))))))) * (~(~((int) (struct_obj_4.member_2_1.member_1_3))))) != ((int) (((((int) (32580)) - ((int) (var_19))) - (((int) (var_57)) - ((int) (20)))) > ((((int) (var_31)) * ((int) (var_21))) / (((int) (var_16)) * ((int) (var_24))))))));
- signed char var_383 = -(((~((int) (62))) || ((!((int) (struct_obj_10.member_1_0))) || ((int) (var_43)))) >> (((~(((int) (var_20)) ^ ((int) (struct_obj_4.member_2_7)))) | ((((int) (9112)) ^ ((int) (var_12))) | (~((int) (struct_obj_4.member_2_1.member_1_1))))) - (63223)));
- }
- else
- {
- signed char var_384 = +((!((int) (var_15))) || (((((int) (var_22)) || ((int) (var_30))) || (((int) (var_56)) || ((int) (var_25)))) && (((int) ((short) (var_46))) && (((int) (var_14)) && ((int) (var_1))))));
- signed char var_385 = (~((int) ((-(!((int) (var_10)))) > ((int) ((((int) (7176)) || ((int) (struct_obj_3.member_5_3))) < (((int) (var_9)) ^ ((int) (var_4)))))))) & ((((((int) (var_66)) ^ ((int) (struct_obj_8.member_4_6))) ^ ((int) (var_25))) & (((int) ((signed char) (var_63))) & (((int) (41306)) ^ ((int) (-112))))) | (~(~(((int) (struct_obj_6.member_5_1)) | ((int) (20554))))));
- signed char var_386 = ((int) ((short) (((((int) (struct_obj_8.member_4_7)) | ((int) (var_23))) << (((int) ((unsigned short) (struct_obj_4.member_2_3.member_1_0))) - (10))) & ((((int) (78)) | ((int) (struct_obj_8.member_4_2))) << (((~((int) (struct_obj_8.member_4_0))) + (17374)) - (3)))))) ^ ((((int) (var_43)) << ((~((int) (struct_obj_5.member_1_0))) & (((int) (33)) >> (((int) (90)) - (76))))) & ((int) (48)));
- short var_387 = ((((int) ((short) (~((int) (37783))))) & ((int) ((unsigned short) (!((int) (((int) (((int) ((short) (!((int) (45291))))) > ((int) (-24057)))) <= ((((int) (79)) | (((int) (7019)) * ((int) (-30489)))) + ((int) ((((int) (45)) || ((int) (19))) <= (~((int) (8145)))))))))))) / ((int) (64))) * ((int) (((int) ((!((int) (((int) (66)) != ((int) (61361))))) <= ((int) ((((int) (var_4)) || ((int) (var_45))) >= ((int) (((int) (10596)) == ((int) (struct_obj_3.member_5_2)))))))) != (((((int) (var_54)) * ((int) (115))) - (((int) (struct_obj_4.member_2_2)) >> (((int) (struct_obj_5.member_1_3)) + (20999)))) * ((int) (((int) ((signed char) (-2450))) == ((int) (((int) (6285)) <= ((int) (struct_obj_10.member_1_2)))))))));
- short var_388 = ((int) (struct_obj_4.member_2_3.member_1_0)) >> (((((~(~((int) (struct_obj_8.member_4_6)))) ^ (~(((int) (var_62)) ^ ((int) (-20398))))) + (2147483647)) << (((!((~((int) (struct_obj_8.member_4_1.member_3_1.member_1_2))) >> ((((int) (17689)) & ((int) (58630))) - (17642)))) - (0)) - (1))) - (2147436043));
- }
-
- signed char var_389 = (((~((~((int) (-13180))) % ((int) ((signed char) (982))))) + (2147483647)) >> ((int) ((unsigned short) (((int) (((int) (41013)) < ((int) (struct_obj_8.member_4_9.member_1_0)))) > (((int) (-114)) % ((int) (var_52))))))) >> ((((int) (var_48)) * (!(~((int) (struct_obj_4.member_2_3.member_1_2))))) & ((-((int) ((unsigned short) (struct_obj_8.member_4_6)))) * (+(((int) (6318)) + ((int) (var_8))))));
- short var_390 = ~(((~(!((int) (((int) (((int) ((short) (!((int) (45291))))) > ((int) (-24057)))) <= ((((int) (79)) | (((int) (7019)) * ((int) (-30489)))) + ((int) ((((int) (45)) || ((int) (19))) <= (~((int) (8145)))))))))) + (2147483647)) << (((~(!((int) (((int) (((int) ((short) (!((int) (45291))))) > ((int) (-24057)))) <= ((((int) (79)) | (((int) (7019)) * ((int) (-30489)))) + ((int) ((((int) (45)) || ((int) (19))) <= (~((int) (8145)))))))))) + (5)) - (3)));
- signed char var_391 = (short) (((~((int) ((unsigned short) (-29)))) ^ ((int) (-21318))) != (((int) (var_52)) >> ((((int) ((signed char) (var_41))) ^ (!((int) (((int) (((int) ((short) (!((int) (45291))))) > ((int) (-24057)))) <= ((((int) (79)) | (((int) (7019)) * ((int) (-30489)))) + ((int) ((((int) (45)) || ((int) (19))) <= (~((int) (8145)))))))))) + (109))));
- var_392 = (unsigned short) (-(+((int) ((signed char) ((short) (~((int) (var_239))))))));
- if (~(((int) (-14799)) * ((~(((int) (struct_obj_5.member_1_3)) * ((int) (-23808)))) * ((!((int) (-20034))) * (((int) (struct_obj_9.member_2_0)) * ((int) (struct_obj_10.member_1_2)))))))
- {
- unsigned short var_393 = ~((int) (((int) (var_14)) != (((~((int) (var_16))) | ((~(((int) (var_28)) ^ ((int) (struct_obj_4.member_2_3.member_1_0)))) ^ ((((int) (8520)) | ((int) (struct_obj_4.member_2_7))) ^ ((int) ((signed char) (32145)))))) & (((int) ((short) (var_5))) * ((int) (((int) (struct_obj_3.member_5_3)) >= ((((int) (-80)) - ((int) (-145))) - (((int) (var_24)) * ((int) (var_26))))))))));
- unsigned short var_394 = (-(((((int) (-37)) | ((int) (struct_obj_9.member_2_4))) * (((int) (var_10)) || ((int) (118)))) & ((int) (-26136)))) / ((int) (((int) ((unsigned short) ((!((int) (struct_obj_9.member_2_2))) && (((int) (var_47)) || ((int) (var_20)))))) != ((~((((int) (-31043)) + (2147483647)) << (((int) (struct_obj_3.member_5_2)) - (59825)))) - ((((int) (struct_obj_4.member_2_3.member_1_2)) * ((int) (struct_obj_1.member_5_2))) ^ (((int) (var_65)) || ((int) (struct_obj_9.member_2_6)))))));
- short var_395 = (!((int) ((((int) ((signed char) (var_61))) ^ ((int) ((short) (struct_obj_2.member_5_2)))) <= ((int) (struct_obj_6.member_5_1))))) % ((((-((int) (struct_obj_8.member_4_1.member_3_1.member_1_1))) + (-((int) (21146)))) * (-((int) (var_11)))) ^ (((int) ((unsigned short) (((int) (var_35)) >> (((int) (var_35)) - (14408))))) || ((int) (var_43))));
- signed char var_396 = ((((-((int) (114))) / (((int) (10051)) * ((int) (3676)))) * ((int) (10897))) * (~((((int) (52640)) / ((int) (57215))) * (((int) (126)) * ((int) (21)))))) * ((int) (-104));
- short var_397 = struct_obj_4.member_2_3.member_1_2;
- unsigned short var_398 = +((int) ((short) (var_17)));
- short var_399 = (((int) (39888)) || ((int) ((signed char) ((((int) (-25317)) | ((int) (5975))) | (((int) (struct_obj_7.member_1_2)) ^ ((int) (19725))))))) + ((int) ((~(~(((int) (var_52)) * ((int) (struct_obj_4.member_2_5))))) <= (((((int) (24622)) & ((int) (struct_obj_8.member_4_6))) >> ((((int) (-6)) ^ ((int) (struct_obj_8.member_4_9.member_1_1))) + (13903))) | ((((int) (struct_obj_4.member_2_1.member_1_1)) & ((int) (var_65))) | (~((int) (var_9)))))));
- signed char var_400 = (~((int) (struct_obj_9.member_2_2))) & (!((int) (((int) (((int) ((short) (!((int) (45291))))) > ((int) (-24057)))) <= ((((int) (79)) | (((int) (7019)) * ((int) (-30489)))) + ((int) ((((int) (45)) || ((int) (19))) <= (~((int) (8145)))))))));
- short var_401 = (((int) (30788)) || (((((int) (struct_obj_4.member_2_1.member_1_1)) || ((int) (var_54))) && (((int) (struct_obj_9.member_2_5)) || ((int) (31866)))) && (!(((int) (-25)) || ((int) (var_25)))))) && ((((!((int) (-8773))) && (((int) (var_4)) || ((int) (struct_obj_6.member_5_2)))) || (((int) ((unsigned short) (struct_obj_10.member_1_0))) || (!((int) (var_390))))) || (((int) (var_63)) && ((((int) (var_14)) && ((int) (var_3))) && (((int) (46668)) && ((int) (var_376))))));
- short var_402 = -((+((((int) (struct_obj_6.member_5_1)) * ((int) (struct_obj_10.member_1_3))) / (((int) (41269)) * ((int) (4485))))) * ((+(((int) (71)) * ((int) (struct_obj_7.member_1_0)))) / ((((int) (85)) * ((int) (var_14))) * ((int) (struct_obj_3.member_5_2)))));
- }
- else
- {
- short var_403 = struct_obj_3.member_5_2;
- var_40 = (signed char) (((int) ((((int) ((+((int) (struct_obj_8.member_4_6))) != ((int) ((unsigned short) (var_24))))) & (~(((int) (struct_obj_4.member_2_1.member_1_0)) >> (((int) (5468)) - (5438))))) >= ((int) ((short) ((unsigned short) (((int) (6863)) > ((int) (struct_obj_9.member_2_1.member_1_0)))))))) >> ((((((int) (89)) & ((int) (-26560))) ^ ((int) ((unsigned short) (61166)))) | ((((int) (struct_obj_3.member_5_1)) & ((int) (25315))) ^ (((int) (7697)) & ((int) (89))))) >> (((int) ((signed char) (-(((int) (struct_obj_3.member_5_3)) + ((int) (40803)))))) + (79))));
- short var_404 = ((int) (var_23)) >> ((((((int) (94)) | ((int) (63983))) >> ((((int) (var_52)) << ((((int) (-34)) + (64)) - (13))) - (1294204900))) & (!((int) (((int) (((int) ((short) (!((int) (45291))))) > ((int) (-24057)))) <= ((((int) (79)) | (((int) (7019)) * ((int) (-30489)))) + ((int) ((((int) (45)) || ((int) (19))) <= (~((int) (8145)))))))))) << (((~((int) ((signed char) (var_46)))) | (((int) (struct_obj_4.member_2_0)) | (~((int) (struct_obj_6.member_5_1))))) + (15)));
- unsigned short var_405 = (short) (~((~(~((int) (-82)))) & (~(~((int) (var_21))))));
- unsigned short var_406 = (!((int) ((((((int) (-5843)) + (2147483647)) >> (((int) (9959)) - (9945))) || (((int) (65528)) % ((int) (18356)))) > ((int) (-82))))) & ((int) ((((((int) (16978)) << (((int) (55441)) - (55441))) & (~((int) (20123)))) << ((((((int) (-53)) & ((int) (-20160))) + (2147483647)) << ((((int) (63586)) ^ ((int) (48225))) - (17411))) - (2147463464))) <= (~(!(((int) (32938)) && ((int) (55062)))))));
- short var_407 = (~(~((int) ((unsigned short) (~((int) (30575))))))) < (~((~((int) ((unsigned short) (var_24)))) % (~((int) (((int) (struct_obj_9.member_2_2)) != ((int) (struct_obj_10.member_1_2)))))));
- var_37 = (signed char) (((int) ((unsigned short) (!((((int) (struct_obj_5.member_1_0)) * ((int) (4381))) / (((int) (struct_obj_9.member_2_0)) * ((int) (var_8))))))) & (!((int) (((int) (((int) ((short) (!((int) (45291))))) > ((int) (-24057)))) <= ((((int) (79)) | (((int) (7019)) * ((int) (-30489)))) + ((int) ((((int) (45)) || ((int) (19))) <= (~((int) (8145))))))))));
- unsigned short var_408 = ((int) ((!((((int) ((-127 - 1))) * ((int) (var_23))) * ((int) (var_405)))) <= ((int) ((unsigned short) ((!((int) (struct_obj_8.member_4_1.member_3_1.member_1_1))) != (~((int) (14031)))))))) << ((int) (((int) ((unsigned short) ((unsigned short) (+((int) (8559)))))) == ((((int) ((signed char) (-13521))) & ((int) (18645))) >> ((int) (((int) (((int) (115)) >= ((int) (24451)))) > ((int) (((int) (20299)) <= ((int) (-4935)))))))));
- unsigned short var_409 = ~((~((int) ((unsigned short) (((int) (-5693)) | ((int) (struct_obj_8.member_4_1.member_3_1.member_1_1)))))) | (!((int) (((int) (((int) ((short) (!((int) (45291))))) > ((int) (-24057)))) <= ((((int) (79)) | (((int) (7019)) * ((int) (-30489)))) + ((int) ((((int) (45)) || ((int) (19))) <= (~((int) (8145))))))))));
- signed char var_410 = (signed char) ((((int) ((signed char) (((int) (struct_obj_8.member_4_3)) - ((int) (2744))))) * (+((int) (struct_obj_8.member_4_9.member_1_2)))) > ((int) (struct_obj_4.member_2_1.member_1_0)));
- }
-
- unsigned short var_411 = (signed char) (24176);
- }
-
- if ((short) (((!(((int) (struct_obj_1.member_5_2)) && ((int) (50462)))) || ((!((int) (var_26))) && (!((int) (var_239))))) && (!((int) ((signed char) (((int) (-15398)) && ((int) (struct_obj_4.member_2_3.member_1_1))))))))
- {
- if (~((int) ((signed char) (((((int) (-3658)) & ((int) (46399))) & (~((int) (var_6)))) & ((((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)) & ((int) (struct_obj_8.member_4_2))) | (~((int) (var_55))))))))
- {
- signed char var_412 = (((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2)))) | ((!(!((int) (struct_obj_6.member_5_2)))) || ((((int) (-22401)) || ((int) (var_15))) || (((int) (73)) || ((int) (-31)))))) >> (((~(~((int) (77)))) & ((int) ((signed char) (~((int) ((unsigned short) (-3189))))))) - (66));
- unsigned short var_413 = ~((~(((int) ((unsigned short) (var_63))) ^ (((int) (struct_obj_4.member_2_3.member_1_3)) ^ ((int) (888))))) && ((int) ((signed char) (((int) ((short) (92))) >> (((int) ((signed char) (83))) - (81))))));
- signed char var_414 = ((int) ((short) (~((int) ((signed char) (!((int) (31724)))))))) != ((int) (((int) ((short) ((!((int) (var_61))) || (((int) (struct_obj_9.member_2_1.member_1_3)) && ((int) (var_15)))))) < ((int) (((((int) (struct_obj_6.member_5_3)) >> (((int) (42310)) - (42285))) && (~((int) ((short) (~(~((int) (-20)))))))) <= (~(((int) (25509)) || ((int) (var_26))))))));
- signed char var_415 = ~((int) ((short) (~(~((int) (-20))))));
- struct_obj_5.member_1_3 = (short) ((((int) (((((int) (1141)) >> (((int) (20167)) - (20155))) * (!((int) (7901)))) > (((int) ((unsigned short) (-12160))) || (((int) (6205)) || ((int) (-116)))))) >> ((int) (((!((int) (var_26))) && (((int) (-16178)) || ((int) (-93)))) < ((int) ((-((int) (struct_obj_4.member_2_3.member_1_1))) != ((int) ((signed char) (var_56)))))))) == ((((~((int) (-13334))) & (((int) (38790)) & ((int) (46)))) | (((int) ((short) (var_52))) ^ ((int) ((short) (6800))))) ^ ((int) ((signed char) ((signed char) (((int) (49)) ^ ((int) (-7974))))))));
- }
-
- if ((((int) ((signed char) ((((int) (var_16)) ^ ((int) (var_60))) ^ (~((int) (8171)))))) ^ (~((int) (var_63)))) || (((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2)))) * ((((int) ((short) (35294))) * ((+(((int) ((unsigned short) (((int) (-7293)) * ((int) (5069))))) * ((int) ((signed char) (((int) (struct_obj_2.member_5_3)) * ((int) (var_16))))))) * (((int) (((int) (var_34)) < ((int) ((short) ((unsigned short) (var_24)))))) & ((~((int) ((short) (var_14)))) & (~(~((int) (var_14)))))))) * ((-((int) (-14699))) / (((int) (32201)) * ((int) (13800)))))))
- {
- unsigned short var_416 = -(!(+((((int) (var_11)) >> (((int) (62073)) - (62065))) - ((int) (((int) (26396)) > ((int) (var_23)))))));
- signed char var_417 = (((~(((+(((int) ((unsigned short) (((int) (-7293)) * ((int) (5069))))) * ((int) ((signed char) (((int) (struct_obj_2.member_5_3)) * ((int) (var_16))))))) * (((int) (((int) (var_34)) < ((int) ((short) ((unsigned short) (var_24)))))) & ((~((int) ((short) (var_14)))) & (~(~((int) (var_14))))))) & ((int) ((unsigned short) (var_239))))) + (2147483647)) >> ((((int) (struct_obj_6.member_5_2)) | (~(((int) (struct_obj_4.member_2_3.member_1_0)) | ((int) (48769))))) + (3079))) >> (((((~((int) (-24))) & (((int) (var_30)) >> (((int) (var_7)) - (32)))) << (((int) ((short) (((int) (struct_obj_2.member_5_0)) & ((int) (struct_obj_6.member_5_3))))) - (12279))) | ((int) ((signed char) (struct_obj_9.member_2_1.member_1_1)))) + (62));
- signed char var_418 = ((int) ((signed char) (-((int) ((unsigned short) ((short) (struct_obj_1.member_5_3))))))) == ((((((int) (14395)) ^ ((int) (28584))) ^ (((int) (struct_obj_8.member_4_9.member_1_0)) | ((int) (var_239)))) ^ (~(((int) (32)) ^ ((int) (struct_obj_3.member_5_3))))) ^ ((int) ((short) ((((int) (struct_obj_5.member_1_1)) & ((int) (var_13))) ^ (((int) (var_5)) | ((int) (-69)))))));
- signed char var_419 = (~((~(((int) (28263)) ^ ((int) (115)))) ^ ((((int) (21)) & ((int) (71))) | ((int) (var_39))))) & ((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2))));
- signed char var_420 = (~(((((int) ((signed char) (-94))) ^ ((int) ((signed char) (struct_obj_7.member_1_1)))) + (2147483647)) >> ((~(~((int) (struct_obj_10.member_1_3)))) + (21785)))) != ((~((int) ((short) ((short) (-27))))) && (~(-((int) (var_37)))));
- unsigned short var_421 = ~(((int) ((signed char) (+(!((int) (var_4)))))) & ((int) (((~((int) (var_30))) && (((int) (var_23)) && ((int) (struct_obj_8.member_4_9.member_1_0)))) != ((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2)))))));
- }
-
- if ((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2))))
- {
- var_36 = (short) (25335);
- unsigned short var_422 = (((int) ((signed char) ((-((int) (struct_obj_4.member_2_1.member_1_3))) <= ((int) (((int) (-14940)) < ((int) (52041))))))) * (((((int) (struct_obj_2.member_5_2)) ^ ((int) (57552))) >> (((int) (2460)) & ((int) (var_38)))) || ((int) (((int) ((unsigned short) (-2096))) <= (((int) (var_25)) - ((int) (var_66))))))) < ((((+((int) (struct_obj_6.member_5_3))) + (+((int) (46470)))) - ((+((int) (2855))) + (((int) (var_41)) - ((int) (-121))))) + (-((-((int) (var_58))) + ((int) ((short) (-127))))));
- unsigned short var_423 = 44;
- short var_424 = -(-((int) ((!(~((int) (61500)))) <= ((~((int) (var_37))) || ((int) (((int) (var_21)) >= ((int) (var_7))))))));
- unsigned short var_425 = (short) ((~(~(((int) (-11932)) ^ ((int) (var_239))))) ^ (~(~(((int) (-7336)) ^ ((int) (5408))))));
- unsigned short var_426 = !(((int) (((int) (((int) (283)) <= ((int) (65)))) != ((int) ((signed char) (((int) (22882)) ^ ((int) (29567))))))) || (-(((int) ((signed char) (var_239))) | (((int) (struct_obj_4.member_2_3.member_1_3)) & ((int) (-27))))));
- unsigned short var_427 = (((((~((int) (struct_obj_3.member_5_3))) ^ (((int) (-24690)) | ((int) (91)))) + (2147483647)) >> ((int) ((((int) (-28477)) + ((int) (var_17))) == (~((int) (var_30)))))) / ((int) ((short) ((short) (((int) (-30015)) - ((int) (65016))))))) >= ((int) (struct_obj_6.member_5_2));
- short var_428 = (+((int) ((short) ((((int) (-99)) * ((int) (var_58))) + (((int) (-8669)) - ((int) (3621))))))) < ((int) ((signed char) (~(((((int) (var_64)) + (2147483647)) << ((int) (var_427))) << (((((int) ((unsigned short) (11))) - (10)) - (0)) - (1))))));
- signed char var_429 = ((((int) ((unsigned short) (~((int) (var_50))))) * (~((int) (var_5)))) * ((int) (var_47))) * ((~(((int) ((short) (64554))) * (((int) (68)) * ((int) (39))))) * (((+((int) (-19580))) / (((int) (-26334)) * ((int) (56761)))) * (((+(((int) ((unsigned short) (((int) (-7293)) * ((int) (5069))))) * ((int) ((signed char) (((int) (struct_obj_2.member_5_3)) * ((int) (var_16))))))) * (((int) (((int) (var_34)) < ((int) ((short) ((unsigned short) (var_24)))))) & ((~((int) ((short) (var_14)))) & (~(~((int) (var_14))))))) * (((int) (struct_obj_9.member_2_1.member_1_0)) * ((int) (var_31))))));
- }
-
- if ((~((~(~((int) (var_56)))) | ((((int) (var_43)) >> (((int) (var_13)) + (23914))) >> ((((int) (struct_obj_4.member_2_3.member_1_1)) & ((int) (var_6))) - (35519))))) ^ ((~((int) (struct_obj_8.member_4_1.member_3_1.member_1_2))) & (~(~(((int) (struct_obj_8.member_4_0)) << ((((int) (struct_obj_9.member_2_1.member_1_1)) - (31950)) - (6)))))))
- {
- short var_430 = (!((~(((int) (var_57)) | ((int) (-5372)))) ^ ((((int) (var_20)) & ((int) (var_18))) | (~((int) (struct_obj_7.member_1_0)))))) && ((int) (struct_obj_4.member_2_6));
- signed char var_431 = (unsigned short) (~(((((int) (struct_obj_4.member_2_5)) ^ ((int) (struct_obj_8.member_4_1.member_3_1.member_1_2))) & (((int) (19)) & ((int) (7794)))) & ((~((int) (var_46))) ^ (~((int) (var_62))))));
- short var_432 = ((((int) (var_28)) - (((int) (-23906)) - (((int) (var_22)) + ((int) (struct_obj_4.member_2_3.member_1_3))))) - (((((int) (var_2)) + ((int) (struct_obj_10.member_1_0))) + (((int) (struct_obj_10.member_1_2)) - ((int) (55916)))) + (-(((int) (var_23)) - ((int) (29449)))))) || ((int) ((signed char) ((~(~((int) (var_48)))) | ((((int) (struct_obj_6.member_5_0)) ^ ((int) (struct_obj_6.member_5_0))) ^ (((int) (55178)) & ((int) (var_56)))))));
- signed char var_433 = ((int) (struct_obj_9.member_2_5)) || ((((((int) (27241)) | ((int) (var_51))) & (((int) (84)) | ((int) (-11135)))) | ((int) (struct_obj_3.member_5_0))) | ((int) ((short) (~(((int) (var_17)) | ((int) (3828)))))));
- short var_434 = !(((int) ((unsigned short) ((((int) (struct_obj_8.member_4_0)) & ((int) (-2293))) <= (((int) (34)) | ((int) (var_39)))))) << ((((((int) (-29164)) & ((int) (struct_obj_8.member_4_5))) ^ ((int) ((unsigned short) (struct_obj_6.member_5_2)))) >> ((((~((int) (struct_obj_8.member_4_5))) + (2147483647)) >> (((int) (var_2)) - (17779))) - (67108820))) - (364)));
- signed char var_435 = ~(~((int) ((signed char) (-(((int) (struct_obj_9.member_2_2)) && ((int) (struct_obj_9.member_2_1.member_1_0)))))));
- signed char var_436 = (signed char) ((-((((int) (48727)) << (((((int) (var_51)) + (11808)) - (5)) - (2))) << (((((int) (-23500)) + (2147483647)) >> (((int) (struct_obj_8.member_4_1.member_3_1.member_1_1)) - (25280))) - (1048564)))) < ((int) (struct_obj_7.member_1_0)));
- unsigned short var_437 = ((-(-((((int) (-8)) ^ ((int) (65))) & (~((int) (struct_obj_1.member_5_1)))))) + (2147483647)) >> ((int) ((short) (!(!(((int) (115)) && ((int) (14265)))))));
- unsigned short var_438 = ~(((((int) ((short) ((short) (var_13)))) || (!((int) (var_48)))) || ((int) ((unsigned short) (!((int) (31752)))))) || ((int) ((short) ((short) (var_13)))));
- unsigned short var_439 = ((int) ((unsigned short) ((((((int) (var_42)) + (2147483647)) >> (((int) (struct_obj_9.member_2_4)) - (13535))) & (~((int) (var_56)))) << ((((int) (-17065)) | ((int) ((signed char) (struct_obj_8.member_4_2)))) + (17025))))) & ((~((+(((int) ((unsigned short) (((int) (-7293)) * ((int) (5069))))) * ((int) ((signed char) (((int) (struct_obj_2.member_5_3)) * ((int) (var_16))))))) * (((int) (((int) (var_34)) < ((int) ((short) ((unsigned short) (var_24)))))) & ((~((int) ((short) (var_14)))) & (~(~((int) (var_14)))))))) ^ ((int) (var_40)));
- }
-
- short var_440 = (+((int) (((+(((int) ((unsigned short) (((int) (-7293)) * ((int) (5069))))) * ((int) ((signed char) (((int) (struct_obj_2.member_5_3)) * ((int) (var_16))))))) * (((int) (((int) (var_34)) < ((int) ((short) ((unsigned short) (var_24)))))) & ((~((int) ((short) (var_14)))) & (~(~((int) (var_14))))))) <= ((int) ((unsigned short) (!((int) (var_56)))))))) <= ((int) (((int) ((signed char) (((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2)))) / (((int) (var_60)) * ((int) (-77)))))) == ((int) ((((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2)))) % ((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2))))) >= ((int) ((((int) (var_66)) && ((int) (var_60))) >= (+((int) (var_2)))))))));
- short var_441 = struct_obj_3.member_5_0;
- if ((((~((int) (var_441))) * (+(((int) (struct_obj_6.member_5_2)) + ((int) (var_60))))) && ((int) ((((int) (struct_obj_6.member_5_0)) && (!((int) (25)))) <= ((int) ((signed char) ((signed char) (var_33))))))) || (((~(((int) (struct_obj_5.member_1_1)) & ((int) (11652)))) & ((+(((int) ((unsigned short) (((int) (-7293)) * ((int) (5069))))) * ((int) ((signed char) (((int) (struct_obj_2.member_5_3)) * ((int) (var_16))))))) * (((int) (((int) (var_34)) < ((int) ((short) ((unsigned short) (var_24)))))) & ((~((int) ((short) (var_14)))) & (~(~((int) (var_14)))))))) | (~((int) ((unsigned short) ((signed char) (var_60)))))))
- {
- signed char var_442 = ~((((+((int) (var_7))) / (((int) (18532)) * ((int) (var_28)))) * ((int) (struct_obj_1.member_5_3))) * (((((int) (var_18)) * ((int) (struct_obj_6.member_5_1))) / (~((int) (struct_obj_4.member_2_3.member_1_1)))) / ((((int) (64)) * ((int) (-16))) * (((int) (var_31)) * ((int) (65))))));
- signed char var_443 = var_18;
- signed char var_444 = ~(~((~(((int) (var_30)) ^ ((int) (struct_obj_8.member_4_4)))) | ((int) ((unsigned short) (~((int) (struct_obj_9.member_2_1.member_1_0)))))));
- short var_445 = ((+((((int) (struct_obj_4.member_2_1.member_1_1)) + ((int) (struct_obj_9.member_2_5))) + (((int) (13876)) * ((int) (26471))))) / (-((((int) (12947)) - ((int) (28265))) + (((int) (-30980)) - ((int) (40610)))))) << ((+((int) (((int) ((unsigned short) (var_11))) != ((int) ((signed char) (var_41)))))) >> (((int) ((unsigned short) ((short) (~((int) (struct_obj_4.member_2_0)))))) - (57920)));
- short var_446 = ((int) ((~(((int) (31)) || (((int) (struct_obj_5.member_1_3)) && ((int) (var_14))))) > (~((int) (18166))))) > (((int) (((int) ((((int) (4507)) >> (((int) (60479)) - (60459))) > (((int) (14247)) * ((int) (var_44))))) < ((int) ((!((int) (var_15))) <= (+((int) (struct_obj_4.member_2_7))))))) | (~((((int) (15746)) | ((int) (struct_obj_9.member_2_2))) ^ ((int) ((unsigned short) (-5912))))));
- unsigned short var_447 = (+((int) (((int) ((unsigned short) (((int) (-119)) + ((int) (91))))) <= ((((int) (52)) | ((int) (-85))) ^ (((int) (36281)) ^ ((int) (11743))))))) & (~((int) ((short) (((int) ((unsigned short) (5509))) / (((int) (53477)) * ((int) (-1233)))))));
- signed char var_448 = (~((int) ((short) (((int) ((short) (var_12))) ^ (~((int) (var_15))))))) | ((int) ((signed char) (~(~((int) ((unsigned short) (var_31)))))));
- unsigned short var_449 = (short) ((((int) ((signed char) ((unsigned short) (-9779)))) || ((((int) (var_6)) - (-((+(((int) ((unsigned short) (((int) (-7293)) * ((int) (5069))))) * ((int) ((signed char) (((int) (struct_obj_2.member_5_3)) * ((int) (var_16))))))) * (((int) (((int) (var_34)) < ((int) ((short) ((unsigned short) (var_24)))))) & ((~((int) ((short) (var_14)))) & (~(~((int) (var_14))))))))) % ((int) (var_4)))) && ((((int) ((unsigned short) (2615))) && ((int) ((unsigned short) (-127)))) && ((((int) (var_443)) && ((int) (var_56))) || (((int) (struct_obj_5.member_1_3)) || ((int) (struct_obj_1.member_5_1))))));
- }
- else
- {
- unsigned short var_450 = ((int) ((short) (-(((int) (1)) >> ((+(((int) ((unsigned short) (((int) (-7293)) * ((int) (5069))))) * ((int) ((signed char) (((int) (struct_obj_2.member_5_3)) * ((int) (var_16))))))) * (((int) (((int) (var_34)) < ((int) ((short) ((unsigned short) (var_24)))))) & ((~((int) ((short) (var_14)))) & (~(~((int) (var_14))))))))))) != ((int) ((signed char) ((((int) (var_6)) - (-((+(((int) ((unsigned short) (((int) (-7293)) * ((int) (5069))))) * ((int) ((signed char) (((int) (struct_obj_2.member_5_3)) * ((int) (var_16))))))) * (((int) (((int) (var_34)) < ((int) ((short) ((unsigned short) (var_24)))))) & ((~((int) ((short) (var_14)))) & (~(~((int) (var_14))))))))) % ((int) (var_4)))));
- short var_451 = ~((((((int) (var_51)) & ((int) (var_64))) & ((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2))))) & (~(((int) (6939)) ^ ((int) (5312))))) & (~((((int) (62)) << (((int) (var_13)) + (23928))) & (((int) (var_3)) | ((int) (struct_obj_6.member_5_3))))));
- unsigned short var_452 = ((((((int) (struct_obj_4.member_2_5)) & ((int) (-26752))) || ((int) ((signed char) (-20709)))) - ((int) (((int) ((unsigned short) (45959))) <= (((int) (var_32)) / ((int) (-65)))))) && (+(((int) (struct_obj_3.member_5_3)) || ((int) ((((int) ((short) (struct_obj_2.member_5_0))) & (((int) (var_21)) | ((int) (var_3)))) != (((int) ((short) (6))) ^ (!((int) (var_26))))))))) >> ((int) (((int) (((int) ((((int) (var_28)) >> (((int) (-22)) + (23))) >= (((int) (var_51)) | ((int) (103))))) != (((int) ((signed char) (var_21))) | ((int) ((unsigned short) (var_60)))))) <= ((int) ((~(+((int) (53974)))) <= ((int) (((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2)))) <= ((int) (((int) (19953)) >= ((int) (-25036))))))))));
- short var_453 = ~((int) ((unsigned short) (~((((int) (20)) << (((int) (var_3)) - (54))) << ((((~((int) (35514))) + (35541)) - (3)) - (21))))));
- signed char var_454 = ~(!((int) (((int) ((unsigned short) (((int) (17187)) >= ((int) (3599))))) < (((int) ((short) (var_12))) >> ((~((int) (struct_obj_2.member_5_1))) + (25779))))));
- short var_455 = (((int) ((signed char) ((signed char) (((int) (struct_obj_8.member_4_4)) ^ ((int) (var_452)))))) | (~((int) (struct_obj_4.member_2_3.member_1_3)))) >> ((((((int) ((unsigned short) (124))) & (~((int) (57361)))) << ((~(((int) (93)) ^ ((int) (59)))) + (110))) << ((~(~(~((int) (8))))) + (11))) - (55278));
- unsigned short var_456 = ((int) ((((((((~((int) (36437))) + (2147483647)) << ((((int) (struct_obj_1.member_5_3)) << (((int) (var_2)) - (17781))) - (5920))) & (~((int) ((signed char) (struct_obj_4.member_2_1.member_1_3))))) ^ (((((int) (var_33)) << (((int) (17994)) - (17983))) >> (((int) ((short) (var_20))) + (16020))) ^ (((~((int) (101))) + (2147483647)) >> ((((int) (-7863)) ^ ((int) (struct_obj_4.member_2_4))) - (21936))))) | (~((int) (struct_obj_4.member_2_3.member_1_2)))) ^ ((int) ((signed char) (((int) (63815)) >> (((int) (-65)) + (94)))))) <= ((int) (99)))) & (!((int) ((signed char) ((unsigned short) (((int) (var_20)) >> (((int) (var_35)) - (14412)))))));
- signed char var_457 = (!((int) ((signed char) ((((int) (11972)) || ((int) (struct_obj_7.member_1_0))) || (((int) (struct_obj_4.member_2_1.member_1_3)) || ((int) (91))))))) && ((((+(((int) (struct_obj_3.member_5_3)) || ((int) ((((int) ((short) (struct_obj_2.member_5_0))) & (((int) (var_21)) | ((int) (var_3)))) != (((int) ((short) (6))) ^ (!((int) (var_26)))))))) && (((int) (-24193)) || ((int) (struct_obj_4.member_2_1.member_1_0)))) || ((int) (69))) || (!((!((int) (36135))) && (!((int) (-42))))));
- signed char var_458 = ((int) ((signed char) (((((int) (var_441)) & ((int) (-251))) & (((int) (34879)) & ((int) (struct_obj_4.member_2_7)))) & ((((int) (48265)) * ((int) (var_56))) / (~((int) (-71))))))) & ((int) (((-(((int) (62323)) | ((int) (24633)))) & (~(+(((int) (struct_obj_3.member_5_3)) || ((int) ((((int) ((short) (struct_obj_2.member_5_0))) & (((int) (var_21)) | ((int) (var_3)))) != (((int) ((short) (6))) ^ (!((int) (var_26)))))))))) >= ((int) ((signed char) (~(((int) (-16927)) & ((int) (struct_obj_1.member_5_2))))))));
- }
-
- }
- else
- {
- unsigned short var_459 = ((int) ((-((int) ((short) (((int) (-8)) < ((int) (18519)))))) != ((int) ((short) ((((int) (10757)) | ((int) (16517))) ^ (~((int) (8440)))))))) ^ ((int) (var_52));
- unsigned short var_460 = (-(~((int) (((int) (((int) (((int) (struct_obj_4.member_2_7)) > ((~((int) (struct_obj_4.member_2_0))) | ((int) ((short) (var_35)))))) > (~(~(((int) (39209)) ^ ((int) (struct_obj_4.member_2_1.member_1_3))))))) != ((int) (((int) ((short) (((int) (((int) (var_14)) == ((int) (struct_obj_3.member_5_2)))) * ((int) (((int) (struct_obj_4.member_2_3.member_1_3)) >= ((int) (56773))))))) <= (((((int) (var_13)) + (2147483647)) >> (((int) ((short) (-14702))) + (14731))) << (((int) (struct_obj_2.member_5_1)) - (25749))))))))) == ((int) (((int) ((signed char) ((((int) (var_20)) << (((int) (var_40)) - (63))) == ((((int) (struct_obj_5.member_1_0)) + (2147483647)) << (((int) (31224)) - (31224)))))) <= (!((((int) (struct_obj_10.member_1_2)) * ((int) (63260))) / (((int) (struct_obj_8.member_4_3)) * ((int) (23510)))))));
- unsigned short var_461 = (((int) ((signed char) ((((int) (var_42)) ^ ((int) (var_55))) >> ((((int) (var_45)) & ((int) (25562))) - (25483))))) & ((int) (((int) (((int) (((int) (struct_obj_4.member_2_7)) > ((~((int) (struct_obj_4.member_2_0))) | ((int) ((short) (var_35)))))) > (~(~(((int) (39209)) ^ ((int) (struct_obj_4.member_2_1.member_1_3))))))) != ((int) (((int) ((short) (((int) (((int) (var_14)) == ((int) (struct_obj_3.member_5_2)))) * ((int) (((int) (struct_obj_4.member_2_3.member_1_3)) >= ((int) (56773))))))) <= (((((int) (var_13)) + (2147483647)) >> (((int) ((short) (-14702))) + (14731))) << (((int) (struct_obj_2.member_5_1)) - (25749)))))))) > (-((int) (struct_obj_1.member_5_3)));
- unsigned short var_462 = ((int) (var_49)) * ((~(-(((int) (-125)) * ((int) (struct_obj_6.member_5_0))))) / ((int) ((unsigned short) ((short) (((int) (var_21)) * ((int) (var_2)))))));
- if ((unsigned short) (~(~((int) (((int) (((int) (((int) (struct_obj_4.member_2_7)) > ((~((int) (struct_obj_4.member_2_0))) | ((int) ((short) (var_35)))))) > (~(~(((int) (39209)) ^ ((int) (struct_obj_4.member_2_1.member_1_3))))))) != ((int) (((int) ((short) (((int) (((int) (var_14)) == ((int) (struct_obj_3.member_5_2)))) * ((int) (((int) (struct_obj_4.member_2_3.member_1_3)) >= ((int) (56773))))))) <= (((((int) (var_13)) + (2147483647)) >> (((int) ((short) (-14702))) + (14731))) << (((int) (struct_obj_2.member_5_1)) - (25749))))))))))
- {
- signed char var_463 = (short) (((int) ((short) (((int) (var_6)) != (~((int) (var_17)))))) > (((int) ((short) (((int) (125)) * ((int) (struct_obj_4.member_2_0))))) / (~(((int) (struct_obj_8.member_4_7)) * ((int) (struct_obj_9.member_2_1.member_1_0))))));
- signed char var_464 = (unsigned short) (((int) ((((int) (var_239)) || (((int) (7)) && ((int) (-32493)))) != (((int) ((signed char) (var_10))) && (-((int) (var_14)))))) & (((~((((int) (-16750)) + (2147483647)) << ((int) (var_49)))) + (2147483647)) >> (((((int) (struct_obj_1.member_5_2)) | ((int) (struct_obj_2.member_5_1))) | (((int) (var_38)) & ((int) (5832)))) - (65230))));
- short var_465 = (unsigned short) ((!((int) (struct_obj_4.member_2_1.member_1_3))) * ((-(((int) (-30177)) * ((int) (var_61)))) * ((~((int) (struct_obj_4.member_2_1.member_1_1))) / (((int) (5831)) * ((int) (var_40))))));
- var_53 = (short) (((int) (var_23)) < ((int) ((-(((((int) (-65)) + (2147483647)) >> (((int) (-13186)) + (13192))) || ((int) (((int) (((int) (((int) (struct_obj_4.member_2_7)) > ((~((int) (struct_obj_4.member_2_0))) | ((int) ((short) (var_35)))))) > (~(~(((int) (39209)) ^ ((int) (struct_obj_4.member_2_1.member_1_3))))))) != ((int) (((int) ((short) (((int) (((int) (var_14)) == ((int) (struct_obj_3.member_5_2)))) * ((int) (((int) (struct_obj_4.member_2_3.member_1_3)) >= ((int) (56773))))))) <= (((((int) (var_13)) + (2147483647)) >> (((int) ((short) (-14702))) + (14731))) << (((int) (struct_obj_2.member_5_1)) - (25749))))))))) < ((((int) (-21429)) + (2147483647)) >> ((!((int) (16614))) && ((int) (13925)))))));
- signed char var_466 = (~(~(~(~((int) (8094)))))) ^ ((int) ((short) (~((int) ((signed char) (~((int) (-104))))))));
- signed char var_467 = ((int) ((signed char) (~((int) ((signed char) (~((int) (struct_obj_2.member_5_1)))))))) | (~((int) ((short) (-42))));
- var_468 = (signed char) (((!((int) (struct_obj_4.member_2_3.member_1_3))) * ((int) ((unsigned short) ((((int) (struct_obj_8.member_4_7)) * ((int) (65006))) / (-((int) (struct_obj_8.member_4_1.member_3_1.member_1_1))))))) < (~(((((int) (struct_obj_8.member_4_9.member_1_0)) ^ ((int) (struct_obj_5.member_1_0))) ^ (((int) (2436)) | ((int) (var_37)))) ^ (~(~((int) (var_467)))))));
- }
-
- }
-
- }
-
- short var_469 = (~(((int) ((unsigned short) (var_36))) & (((int) ((unsigned short) (var_18))) & (~((int) (struct_obj_2.member_5_0)))))) ^ ((int) ((short) (~((((int) (var_10)) >> (((int) (struct_obj_2.member_5_1)) - (25743))) << ((~((int) (var_49))) + (31))))));
- signed char var_470 = (~(~((int) ((signed char) ((unsigned short) (var_9)))))) != ((((((int) (-2067)) ^ ((int) (struct_obj_8.member_4_4))) ^ (~((int) (var_49)))) | (((~((int) (28770))) + (2147483647)) << (((((((int) (var_45)) | ((int) (var_27))) + (29)) - (25)) - (0)) - (1)))) << ((((int) (var_65)) + (12873)) - (27)));
- unsigned short var_471 = var_26;
- unsigned short var_472 = -(-(((int) (59835)) + ((int) (15808))));
- if ((unsigned short) ((~((((int) (-18340)) ^ ((int) (-18253))) ^ (~((int) (-24880))))) | ((int) (-126))))
- {
- unsigned short var_473 = ((~((((int) (struct_obj_1.member_5_2)) * ((int) (5330))) / (((int) (struct_obj_1.member_5_2)) * ((int) (101))))) * ((int) (struct_obj_8.member_4_3))) | (+(((int) (7754)) + ((((int) (struct_obj_2.member_5_3)) * ((int) (var_48))) - ((int) (struct_obj_3.member_5_2)))));
- if ((~((int) ((unsigned short) ((unsigned short) (-((int) (15894))))))) >= (!(((!((int) (12826))) * (((int) (127)) * ((int) (var_36)))) * ((int) ((signed char) (((int) (-15438)) * ((int) (var_32))))))))
- {
- unsigned short var_474 = ((int) (struct_obj_3.member_5_2)) ^ (!((int) (((int) ((signed char) (((int) (struct_obj_6.member_5_3)) * ((int) (var_4))))) <= ((int) (((int) ((signed char) (var_12))) < (((int) (46)) * ((int) (37))))))));
- short var_475 = (short) ((((((int) (var_25)) | ((int) (-14169))) ^ (((int) (var_8)) ^ ((int) (4475)))) | ((((int) (var_28)) ^ ((int) (var_15))) & (~((int) (var_29))))) < ((((int) (var_11)) >> (((int) (var_13)) ^ ((int) (var_13)))) | ((int) (struct_obj_3.member_5_2))));
- unsigned short var_476 = ((int) (10092)) > ((int) ((((int) (((int) (((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)) <= ((int) (struct_obj_6.member_5_0)))) == (~((int) (17336))))) & (((((int) (-11297)) + (2147483647)) >> (((int) (var_52)) - (9862))) & ((int) (var_63)))) > ((~((int) (struct_obj_8.member_4_1.member_3_1.member_1_0))) ^ ((~((int) (struct_obj_9.member_2_7))) | (((int) (-28444)) ^ ((int) (2438)))))));
- unsigned short var_477 = ((int) (struct_obj_9.member_2_1.member_1_3)) << ((~(~((((int) (var_50)) | ((int) (struct_obj_8.member_4_1.member_3_1.member_1_0))) & ((int) ((signed char) (-123)))))) + (132));
- unsigned short var_478 = ((~((int) ((unsigned short) ((((int) (62522)) * ((int) (struct_obj_3.member_5_1))) - ((int) (124)))))) + (2147483647)) >> (((int) (struct_obj_3.member_5_2)) - (59812));
- unsigned short var_479 = ~((int) ((((int) (((int) ((signed char) (21844))) <= ((int) (((int) (var_18)) <= ((int) (var_24)))))) & ((~((int) (var_26))) % (((int) (46805)) && ((int) (var_469))))) != (((int) (struct_obj_3.member_5_2)) - (((int) ((short) ((((((int) (var_25)) | ((int) (-14169))) ^ (((int) (var_8)) ^ ((int) (4475)))) | ((((int) (var_28)) ^ ((int) (var_15))) & (~((int) (var_29))))) < ((((int) (var_11)) >> (((int) (var_13)) ^ ((int) (var_13)))) | ((int) (struct_obj_3.member_5_2)))))) - ((int) (struct_obj_9.member_2_1.member_1_1))))));
- short var_480 = ((+((((int) (8636)) - ((int) (-105))) + (((int) (-27878)) - ((int) (61359))))) && (~((~((int) (var_28))) | ((int) ((short) (18641)))))) && ((int) ((signed char) ((~(((int) (-99)) * ((int) (96)))) / (((int) (10930)) * ((int) (-99))))));
- if ((((int) (struct_obj_8.member_4_2)) && ((int) ((short) ((short) ((((((int) (var_25)) | ((int) (-14169))) ^ (((int) (var_8)) ^ ((int) (4475)))) | ((((int) (var_28)) ^ ((int) (var_15))) & (~((int) (var_29))))) < ((((int) (var_11)) >> (((int) (var_13)) ^ ((int) (var_13)))) | ((int) (struct_obj_3.member_5_2)))))))) || (!((int) ((short) ((!((int) (889))) && (((int) (var_29)) && ((int) (86))))))))
- {
- signed char var_481 = ~(~(((((int) (struct_obj_4.member_2_3.member_1_0)) * ((int) (var_4))) * (~((int) (17223)))) / (~(((int) (545)) * ((int) (var_44))))));
- short var_482 = ((~(~(((int) (var_479)) >> (((int) (struct_obj_8.member_4_1.member_3_0)) - (649))))) | ((((~((int) (struct_obj_4.member_2_0))) + (2147483647)) >> ((((int) (var_481)) ^ ((int) (var_64))) + (63))) << (((~(((int) (struct_obj_9.member_2_1.member_1_0)) | ((int) (var_471)))) + (14662)) - (23)))) & (~(((((int) (-26622)) & ((int) (13554))) ^ ((int) (47104))) | ((((int) (12106)) ^ ((int) (29))) & (((int) (15902)) | ((int) (40455))))));
- signed char var_483 = -(((((int) ((short) ((((((int) (var_25)) | ((int) (-14169))) ^ (((int) (var_8)) ^ ((int) (4475)))) | ((((int) (var_28)) ^ ((int) (var_15))) & (~((int) (var_29))))) < ((((int) (var_11)) >> (((int) (var_13)) ^ ((int) (var_13)))) | ((int) (struct_obj_3.member_5_2)))))) - (((int) (struct_obj_8.member_4_2)) - ((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)))) + (-((int) ((unsigned short) (struct_obj_1.member_5_3))))) - ((-(((int) (var_470)) - ((int) (-23)))) - ((((int) (-24447)) - ((int) (var_33))) - (((int) (struct_obj_7.member_1_2)) + ((int) (99))))));
- unsigned short var_484 = ~((((int) (var_469)) * ((int) ((signed char) (((int) (var_8)) * ((int) (var_17)))))) * (-((-((int) (-8))) / (((int) (struct_obj_8.member_4_6)) * ((int) (struct_obj_4.member_2_3.member_1_3))))));
- unsigned short var_485 = ((int) ((signed char) (!(!((int) ((unsigned short) (var_6))))))) % ((int) ((signed char) (struct_obj_3.member_5_2)));
- short var_486 = (signed char) (!((((int) (struct_obj_3.member_5_2)) * ((int) ((short) (var_1)))) / (-(+((int) (-32650))))));
- var_41 = (unsigned short) (~((int) (struct_obj_3.member_5_2)));
- unsigned short var_487 = !(((~((int) ((signed char) (var_48)))) + ((int) ((signed char) (!((((int) (struct_obj_3.member_5_2)) * ((int) ((short) (var_1)))) / (-(+((int) (-32650))))))))) & ((int) (((int) (var_61)) >= ((int) ((unsigned short) (var_28))))));
- signed char var_488 = ((((((int) (21529)) ^ ((int) (4132))) | ((int) ((signed char) (!((((int) (struct_obj_3.member_5_2)) * ((int) ((short) (var_1)))) / (-(+((int) (-32650))))))))) & (~(~((int) (var_49))))) ^ ((~(((int) (struct_obj_8.member_4_1.member_3_0)) | ((int) (-6)))) ^ (~(((int) (var_10)) | ((int) (var_55)))))) & ((((((int) (28)) ^ ((int) (34913))) | (((int) (27968)) & ((int) (-10524)))) & ((int) (-28484))) & ((int) ((unsigned short) (91))));
- signed char var_489 = -63;
- }
- else
- {
- short var_490 = (((((int) ((signed char) (var_41))) * ((int) ((short) ((((((int) (var_25)) | ((int) (-14169))) ^ (((int) (var_8)) ^ ((int) (4475)))) | ((((int) (var_28)) ^ ((int) (var_15))) & (~((int) (var_29))))) < ((((int) (var_11)) >> (((int) (var_13)) ^ ((int) (var_13)))) | ((int) (struct_obj_3.member_5_2))))))) * (!((int) ((short) ((((((int) (var_25)) | ((int) (-14169))) ^ (((int) (var_8)) ^ ((int) (4475)))) | ((((int) (var_28)) ^ ((int) (var_15))) & (~((int) (var_29))))) < ((((int) (var_11)) >> (((int) (var_13)) ^ ((int) (var_13)))) | ((int) (struct_obj_3.member_5_2)))))))) * (((int) ((((int) (-53)) * ((int) (var_46))) <= ((int) (var_51)))) & ((((int) (var_2)) ^ ((int) (var_60))) % (((int) (var_45)) || ((int) (18)))))) >= ((((int) (-108)) & (((int) ((unsigned short) (var_29))) / (((int) (-6368)) * ((int) (53451))))) & (((int) (((int) ((unsigned short) (var_48))) >= (((int) (64011)) + ((int) (struct_obj_4.member_2_3.member_1_3))))) ^ ((((int) (var_20)) + ((int) (-88))) + (((int) (var_61)) || ((int) (9688))))));
- unsigned short var_491 = ((int) (var_33)) >> ((int) ((((int) ((short) (+((int) (struct_obj_1.member_5_3))))) * (((-(((int) (var_28)) * ((int) (struct_obj_2.member_5_3)))) * (((int) ((short) (var_14))) / (((int) (16571)) * ((int) (59287))))) * ((int) (43731)))) < (((((int) (struct_obj_4.member_2_6)) / ((int) (var_66))) * ((int) ((short) ((((((int) (var_25)) | ((int) (-14169))) ^ (((int) (var_8)) ^ ((int) (4475)))) | ((((int) (var_28)) ^ ((int) (var_15))) & (~((int) (var_29))))) < ((((int) (var_11)) >> (((int) (var_13)) ^ ((int) (var_13)))) | ((int) (struct_obj_3.member_5_2))))))) & (~(~((int) (struct_obj_9.member_2_7)))))));
- short var_492 = (((int) ((short) (~(((int) (-93)) || ((int) (-125)))))) || ((int) ((~(((int) (struct_obj_4.member_2_6)) >> (((int) (struct_obj_8.member_4_6)) + (13828)))) == ((int) (struct_obj_8.member_4_7))))) >> ((int) (((((int) (31254)) << (((((int) (-32124)) ^ ((int) (21005))) + (12173)) - (11))) >> ((int) (struct_obj_8.member_4_9.member_1_0))) > (-((int) ((((int) (var_59)) | ((int) (var_490))) <= (((int) (var_65)) & ((int) (var_19))))))));
- unsigned short var_493 = ((int) ((unsigned short) (!(((int) (((int) (var_490)) >= ((int) (-22338)))) && (~((int) (struct_obj_8.member_4_6))))))) > (((int) (((int) ((~((int) (-5961))) < ((int) (var_58)))) < ((((int) (27882)) + ((int) (-8226))) | (~((int) (var_22)))))) & (!((int) (var_7))));
- short var_494 = (unsigned short) (~((int) (((int) (15)) < ((~((int) (-9))) % ((int) ((short) (61065)))))));
- }
-
- if (((((((int) (-6660)) & ((int) (11))) | (((int) (27466)) | ((int) (-98)))) & ((((int) (43475)) & ((int) (20006))) ^ ((int) ((signed char) (28278))))) ^ (~(((int) (-60)) ^ (~((int) (28567)))))) | ((((int) (struct_obj_3.member_5_1)) & (~((int) ((unsigned short) (var_476))))) | ((~(((int) (struct_obj_8.member_4_6)) ^ ((int) (struct_obj_10.member_1_3)))) ^ ((((int) (var_476)) ^ ((int) (struct_obj_8.member_4_9.member_1_0))) & ((int) ((signed char) (struct_obj_1.member_5_2)))))))
- {
- signed char var_495 = -(~(~(((int) (39754)) || ((int) ((unsigned short) (10557))))));
- unsigned short var_496 = (~(~((int) (((int) (((int) (40028)) < ((int) (46)))) >= (((int) (-9194)) || ((int) (-122))))))) != (((int) (19860)) % ((int) ((signed char) (-((int) (var_20))))));
- unsigned short var_497 = (-(((((int) (struct_obj_4.member_2_6)) / ((int) (var_479))) - (((int) (9407)) + ((int) (var_35)))) * (+((int) ((unsigned short) (25874)))))) && ((int) ((((int) ((short) (struct_obj_8.member_4_5))) & (~(((int) (struct_obj_1.member_5_3)) | ((int) (var_26))))) != (((int) ((short) ((((((int) (var_25)) | ((int) (-14169))) ^ (((int) (var_8)) ^ ((int) (4475)))) | ((((int) (var_28)) ^ ((int) (var_15))) & (~((int) (var_29))))) < ((((int) (var_11)) >> (((int) (var_13)) ^ ((int) (var_13)))) | ((int) (struct_obj_3.member_5_2)))))) * (((int) ((short) (var_17))) * ((int) ((signed char) (var_54)))))));
- signed char var_498 = ((int) (((int) ((short) ((((int) (var_11)) && ((int) (struct_obj_10.member_1_2))) && (!((int) (12032)))))) < (((-((int) (struct_obj_9.member_2_4))) * ((int) ((signed char) (-((int) (var_20)))))) >> ((((int) (var_495)) & ((int) (var_29))) & (!((int) (struct_obj_4.member_2_1.member_1_3))))))) != (((int) ((unsigned short) (~((int) (var_51))))) ^ ((((int) ((short) (struct_obj_1.member_5_3))) ^ (~((int) (struct_obj_4.member_2_1.member_1_0)))) | (((int) ((short) (var_32))) ^ ((int) ((signed char) (struct_obj_4.member_2_1.member_1_1))))));
- signed char var_499 = ((int) (-23634)) >= (~((~(~((int) (struct_obj_3.member_5_2)))) & ((int) (var_58))));
- }
- else
- {
- var_500 = (signed char) (-107);
- short var_501 = (signed char) (((int) (((((int) (-24644)) * ((int) (-5259))) * (!((int) (-106)))) >= (~((int) ((short) (23525)))))) * (((int) (((int) ((short) (7351))) != ((int) ((short) (12121))))) * ((int) (-13473))));
- var_52 = (short) (~((int) (var_474)));
- unsigned short var_502 = ((int) ((signed char) (-((int) (var_20))))) < ((int) ((short) ((+(((int) (var_66)) + ((int) (var_51)))) - (-(((int) (var_476)) + ((int) (var_16)))))));
- short var_503 = struct_obj_3.member_5_2;
- short var_504 = var_32;
- unsigned short var_505 = ((int) ((unsigned short) (((((int) (var_43)) * ((int) (585))) / ((int) ((signed char) (struct_obj_5.member_1_0)))) * (((int) ((unsigned short) (struct_obj_2.member_5_3))) / (((int) (var_10)) * ((int) (22670))))))) * ((+((int) ((signed char) (((int) (61178)) / ((int) (63555)))))) * (!((!((int) (var_469))) * (-((int) (var_25))))));
- }
-
- }
-
- signed char var_506 = var_31;
- unsigned short var_507 = (((int) (var_26)) | (~((int) (var_47)))) % ((~(-(((int) (var_43)) * ((int) (33232))))) & (((int) (((int) (((int) (27)) >= ((int) (-76)))) != ((int) (((int) (5702)) != ((int) (-95)))))) + ((int) (2753))));
- if (!((int) (((int) ((~(((int) (28215)) || ((int) (17957)))) <= ((((int) (51658)) ^ ((int) (23571))) & (((int) (53850)) ^ ((int) (-59)))))) >= ((int) ((signed char) ((((int) (struct_obj_10.member_1_2)) / ((int) (struct_obj_1.member_5_1))) % ((int) (var_29))))))))
- {
- if (-((int) ((~((~((int) (123))) - (~((int) (var_33))))) == (((int) (((int) (((int) (var_16)) >= ((int) (struct_obj_6.member_5_1)))) != (((int) (var_3)) | ((int) (struct_obj_8.member_4_1.member_3_1.member_1_2))))) & (~((int) (7351)))))))
- {
- signed char var_508 = (signed char) (((int) (struct_obj_3.member_5_2)) & ((int) (var_58)));
- short var_509 = (+((!((int) ((unsigned short) (-21610)))) >> (((int) ((signed char) (((int) (struct_obj_8.member_4_5)) * ((int) (113))))) + (81)))) % ((((int) ((signed char) ((signed char) (((int) (37329)) | ((int) (93)))))) + (2147483647)) << ((((int) ((unsigned short) ((((int) (6310)) << (((int) (32576)) - (32569))) | (((int) (49981)) >> (((int) (-4570)) + (4580)))))) - (21295)) - (1)));
- signed char var_510 = ((int) (var_26)) <= ((int) (((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467))))))))) <= ((int) (((!((int) (var_52))) - (((int) (var_31)) | ((int) (var_23)))) == ((int) ((signed char) (-((int) (-2995)))))))));
- signed char var_511 = ~(((int) ((short) ((~((int) (-11638))) & (((int) (8453)) & ((int) (-22258)))))) ^ (~(~((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))))));
- unsigned short var_512 = (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) >> (((int) (struct_obj_9.member_2_1.member_1_1)) - (31954))) != ((int) ((((int) (struct_obj_4.member_2_5)) || (!((int) ((signed char) (var_44))))) < ((int) ((unsigned short) (((int) (((int) (-26302)) == ((int) (20343)))) > ((int) ((short) (-28144))))))));
- short var_513 = ((int) ((unsigned short) (-16))) * ((int) (var_16));
- var_514 = (short) (~(((~((int) (struct_obj_3.member_5_2))) & (~(~((int) (var_20))))) ^ (((int) (struct_obj_4.member_2_3.member_1_2)) & ((int) (struct_obj_8.member_4_9.member_1_2)))));
- short var_515 = ~((int) ((short) ((unsigned short) ((signed char) (((int) (var_19)) ^ ((int) (var_12)))))));
- signed char var_516 = -((int) (var_66));
- unsigned short var_517 = struct_obj_1.member_5_0;
- }
- else
- {
- short var_518 = var_19;
- unsigned short var_519 = (short) (((int) ((short) (+((int) ((unsigned short) (var_12)))))) & (((!((int) (var_35))) | ((int) (((int) (var_7)) < ((int) (struct_obj_4.member_2_1.member_1_3))))) || (~((int) (((int) (17060)) <= ((int) (10237)))))));
- unsigned short var_520 = (((int) ((((((int) (-30670)) + (2147483647)) << (((((int) (-18058)) + (18075)) - (16)) - (1))) - (((int) (-4556)) & ((int) (-56)))) < ((((int) (struct_obj_6.member_5_3)) && ((int) (struct_obj_7.member_1_0))) || ((int) (var_27))))) + ((int) (struct_obj_8.member_4_5))) - (~((int) ((unsigned short) ((((int) (6497)) - ((int) (var_56))) & (-((int) (var_29)))))));
- signed char var_521 = (unsigned short) (~((int) (struct_obj_3.member_5_2)));
- var_522 = (signed char) ((((+(+(+((int) (45430))))) + (((int) (-2768)) * ((int) ((signed char) (((int) (24766)) * ((int) (6852))))))) + (2147483647)) << (((((((int) (-103)) + (108)) - (4)) - (0)) - (0)) - (1)));
- short var_523 = ((~((int) ((!((int) (((int) (7275)) > ((int) (3644))))) == ((((int) (12413)) << (((int) (19590)) - (19580))) >> ((((int) (115)) & ((int) (55843))) - (26)))))) + (2147483647)) >> (((-(+(+((int) (var_507))))) - ((((int) ((short) (var_61))) + (((int) (42857)) + ((int) (var_1)))) - ((-((int) (var_7))) * ((int) (16))))) + (110426));
- short var_524 = (~(~((((int) (var_30)) ^ ((int) (struct_obj_8.member_4_4))) & (((int) (var_40)) ^ ((int) (struct_obj_4.member_2_6)))))) > (~((~(((int) (var_1)) * ((int) (var_520)))) / ((((int) (struct_obj_5.member_1_0)) * ((int) (struct_obj_8.member_4_6))) / ((int) ((short) (struct_obj_10.member_1_3))))));
- signed char var_525 = (((int) ((signed char) (!(((int) (126)) & ((int) (var_36)))))) & (((int) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) > ((int) ((~(+((int) (28029)))) <= ((int) ((unsigned short) (((int) (-1114)) ^ ((int) (struct_obj_4.member_2_6))))))))) - (((int) ((short) (((~((int) (1416))) + (2147483647)) >> (((int) (-93)) + (101))))) && (((((int) (24281)) & ((int) (struct_obj_4.member_2_1.member_1_1))) >> ((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475))))))))))) >> (((int) (var_30)) - (42699)))))) || (((int) (((((int) ((unsigned short) (~((int) (8))))) >> (((int) (25621)) - (25605))) | (((~((int) (var_31))) << (((((int) (struct_obj_4.member_2_4)) + (2147483647)) << ((((int) (-62)) + (71)) - (9))) - (2147464435))) >> (((int) (4111)) >> (((int) (19804)) - (19790))))) >= (((((int) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) > ((int) ((~(+((int) (28029)))) <= ((int) ((unsigned short) (((int) (-1114)) ^ ((int) (struct_obj_4.member_2_6))))))))) - (((int) ((short) (((~((int) (1416))) + (2147483647)) >> (((int) (-93)) + (101))))) && (((((int) (24281)) & ((int) (struct_obj_4.member_2_1.member_1_1))) >> ((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475))))))))))) >> (((int) (var_30)) - (42699))))) & ((int) (var_3))) & (!(!(((int) (struct_obj_4.member_2_4)) && ((int) (var_3)))))))) | ((~(~((int) (9)))) & ((((int) (16613)) ^ ((int) (-20))) ^ (~((int) (-10292))))));
- var_36 = (short) (((~((!((int) (-104))) * (((int) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) > ((int) ((~(+((int) (28029)))) <= ((int) ((unsigned short) (((int) (-1114)) ^ ((int) (struct_obj_4.member_2_6))))))))) - (((int) ((short) (((~((int) (1416))) + (2147483647)) >> (((int) (-93)) + (101))))) && (((((int) (24281)) & ((int) (struct_obj_4.member_2_1.member_1_1))) >> ((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475))))))))))) >> (((int) (var_30)) - (42699))))))) * (-((int) ((unsigned short) (((int) (struct_obj_1.member_5_1)) * ((int) (10162))))))) || ((int) (struct_obj_5.member_1_0)));
- }
-
- signed char var_526 = (((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467))))))))) && ((int) (27198))) % ((((int) ((((int) (57392)) & ((int) (50780))) == ((int) ((short) (54035))))) & (+((int) (((int) (13979)) <= ((int) (5855)))))) || ((((int) (6763)) + ((int) (39071))) + ((int) (struct_obj_3.member_5_2))));
- var_64 = (signed char) ((signed char) (!(~((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))))));
- if ((~(((((int) (struct_obj_4.member_2_3.member_1_0)) || ((int) (30335))) % (((int) (var_43)) || ((int) (25266)))) | (+(+((int) (var_52)))))) <= ((int) ((signed char) (((~((int) (struct_obj_8.member_4_7))) | (((int) (var_61)) | ((int) (var_5)))) | (((int) ((short) (struct_obj_6.member_5_3))) ^ (((int) (struct_obj_1.member_5_2)) & ((int) (struct_obj_6.member_5_1))))))))
- {
- signed char var_527 = ((!((int) (struct_obj_3.member_5_2))) && ((int) (var_41))) >= ((((int) (struct_obj_3.member_5_2)) | ((int) ((((int) (struct_obj_4.member_2_1.member_1_3)) - ((int) (19837))) != (!((int) (struct_obj_10.member_1_3)))))) + (((~((int) (var_64))) ^ ((int) (var_37))) & (~(((int) (struct_obj_8.member_4_1.member_3_1.member_1_1)) | ((int) (var_62))))));
- short var_528 = struct_obj_9.member_2_0;
- signed char var_529 = (((int) (struct_obj_3.member_5_2)) || ((((int) ((signed char) (var_17))) || (((int) (var_38)) && ((int) (var_36)))) || ((int) ((short) (((int) (var_3)) && ((int) (var_15))))))) != (!((int) ((signed char) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475))))))))))));
- short var_530 = !((int) ((signed char) ((short) (~(((int) (-6761)) * ((int) (var_527)))))));
- unsigned short var_531 = (((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))));
- }
-
- if ((-(((int) ((short) (((int) (var_507)) * ((int) (var_59))))) * (+(((int) (var_63)) * ((int) (var_526)))))) + (((+((int) ((unsigned short) (76)))) + ((int) ((unsigned short) (+((int) (11621)))))) * (((int) (95)) + ((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467))))))))))))
- {
- unsigned short var_532 = ((int) (((int) ((short) ((((int) (23716)) << (((int) (var_38)) - (38))) || (~((int) (var_47)))))) < (((int) ((unsigned short) (25887))) | ((-((int) (41298))) - ((int) (((int) (-91)) > ((int) (35354)))))))) + ((int) ((((int) (((int) (((int) (-71)) == ((int) (struct_obj_6.member_5_3)))) < (~((int) (var_18))))) >> ((~(!((int) (struct_obj_3.member_5_1)))) + (27))) > ((-((int) (((int) (struct_obj_3.member_5_0)) <= ((int) (var_6))))) - ((int) ((signed char) (((int) (65033)) + ((int) (struct_obj_3.member_5_0))))))));
- short var_533 = (short) ((((((int) (struct_obj_9.member_2_1.member_1_3)) >> ((int) (var_470))) << (((int) (-34)) + (50))) || (((int) ((signed char) (30726))) / (((int) (struct_obj_8.member_4_4)) + ((int) (struct_obj_4.member_2_4))))) * ((int) (((int) (struct_obj_9.member_2_7)) != (((int) (var_27)) + (((int) (struct_obj_2.member_5_1)) || ((int) (struct_obj_8.member_4_6)))))));
- short var_534 = ~((!((!((int) (-8725))) * (((int) (var_18)) * ((int) (var_24))))) * ((int) ((unsigned short) (12434))));
- unsigned short var_535 = (short) (((int) ((unsigned short) ((signed char) (((int) (var_27)) || ((int) (var_24)))))) && ((!(!((int) (var_17)))) && ((int) ((short) (((int) (-42)) || ((int) (32757)))))));
- signed char var_536 = ~((int) (struct_obj_4.member_2_3.member_1_2));
- var_62 = (unsigned short) (var_10);
- signed char var_537 = ((int) (((int) ((~(~((int) (49907)))) != (((int) (((int) (-19054)) <= ((int) (var_43)))) + ((int) ((signed char) (17511)))))) == ((int) (10634)))) < (((int) (struct_obj_6.member_5_3)) - ((int) (((int) ((((int) (var_64)) * ((int) (var_21))) >= (((int) (var_26)) || ((int) (struct_obj_9.member_2_2))))) < ((int) (var_53)))));
- unsigned short var_538 = +((int) (var_470));
- signed char var_539 = var_27;
- }
- else
- {
- unsigned short var_540 = (signed char) (((int) ((signed char) (~(!((int) (-16)))))) | (~(-((int) (((int) (7587)) <= ((int) (var_45)))))));
- unsigned short var_541 = !((((((int) ((signed char) (-121))) + (2147483647)) >> ((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))) || (~(((int) (struct_obj_4.member_2_3.member_1_1)) * ((int) (var_469))))) || (!((int) ((short) (((int) (-12)) * ((int) (18)))))));
- short var_542 = -(+((int) (var_27)));
- var_543 = (signed char) ((-(((((int) (64835)) >> (((int) (1187)) - (1187))) >> ((~((int) (var_25))) + (149))) >> (((int) ((short) (((int) (struct_obj_7.member_1_2)) | ((int) (struct_obj_4.member_2_1.member_1_1))))) + (128)))) / ((int) ((((~((int) (struct_obj_4.member_2_3.member_1_3))) | (~((int) (-17256)))) & ((int) (struct_obj_8.member_4_1.member_3_1.member_1_0))) != (~(-((int) ((signed char) (var_2))))))));
- var_544 = (unsigned short) ((((+(((int) (var_42)) * ((int) (struct_obj_4.member_2_3.member_1_3)))) - ((int) ((short) ((unsigned short) (117))))) + ((int) ((short) ((((int) (106)) * ((int) (12343))) - (((int) (6)) + ((int) (var_53))))))) > ((-((((int) (var_13)) * ((int) (19559))) * (((int) (var_469)) * ((int) (var_46))))) * ((((int) ((unsigned short) (-19))) / (((int) (20823)) * ((int) (var_4)))) * ((((int) (29348)) * ((int) (32247))) / ((int) ((signed char) (var_24)))))));
- short var_545 = -((int) ((signed char) ((short) ((~((int) (1578))) ^ ((int) ((signed char) (26515)))))));
- short var_546 = ((~(~((((int) (struct_obj_4.member_2_7)) + (2147483647)) << (((int) (var_14)) - (26))))) | ((int) ((short) (((int) ((short) (struct_obj_4.member_2_0))) ^ (((int) (var_66)) & ((int) (-119))))))) % ((int) ((signed char) ((unsigned short) (~(((int) (11516)) & ((int) (var_545)))))));
- var_547 = (signed char) ((short) (var_25));
- var_59 = (unsigned short) (~(((int) (var_41)) << (((((~((int) (struct_obj_4.member_2_6))) | (((int) (var_16)) >> (((int) (struct_obj_7.member_1_0)) + (102)))) + (2147483647)) << (((((((((int) ((short) (struct_obj_8.member_4_1.member_3_1.member_1_2))) ^ ((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))) + (78)) - (2)) - (0)) - (0)) - (0)) - (1))) - (2147427589))));
- }
-
- short var_548 = !(((!(((int) (var_54)) && ((int) (var_11)))) || ((((int) (var_18)) || ((int) (var_7))) && (((int) (var_16)) || ((int) (struct_obj_9.member_2_2))))) >> ((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467))))))))));
- var_549 = (signed char) (~(~(~((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))))));
- }
-
- if (struct_obj_4.member_2_5)
- {
- unsigned short var_550 = +((int) (((int) ((short) (((int) ((short) (21542))) & ((int) (((int) (var_17)) > ((int) (41361))))))) != ((int) (((int) ((((int) (struct_obj_5.member_1_1)) >> (((int) (var_11)) - (9751))) >= (~((int) (var_30))))) < ((int) ((signed char) ((signed char) (62686))))))));
- short var_551 = ~((((int) (struct_obj_3.member_5_2)) + (((int) (struct_obj_5.member_1_0)) + (((int) (2)) - ((int) (var_55))))) << ((((-(((int) (struct_obj_6.member_5_3)) || ((int) (var_48)))) / ((int) ((~((int) (var_7))) <= ((int) (((int) (56959)) == ((int) (struct_obj_8.member_4_8))))))) + (29)) - (24)));
- unsigned short var_552 = (~(~((int) (var_13)))) * (!(!(((int) ((short) (29468))) && (!((int) (struct_obj_8.member_4_2))))));
- if ((((int) (var_18)) % (+((int) ((signed char) (((int) (11489)) * ((int) (9265))))))) > (((!((int) ((short) (var_40)))) && (((int) (var_471)) || (((int) (44877)) || ((int) (struct_obj_10.member_1_2))))) - ((((int) ((short) (var_47))) && ((int) (struct_obj_3.member_5_2))) || ((((int) (var_48)) || ((int) (3022))) && (!((int) (var_471)))))))
- {
- var_48 = (unsigned short) (((int) ((short) (((int) ((unsigned short) (((int) (var_24)) * ((int) (var_41))))) * (~((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))))))) & (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) & ((~((int) (((int) (21911)) >= ((int) (71))))) | (~(!((int) (var_21)))))));
- signed char var_553 = ((+((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))) / (~((((int) (struct_obj_6.member_5_3)) << (((int) (var_33)) - (40297))) | ((int) ((signed char) (struct_obj_2.member_5_0)))))) - ((!((!((int) (var_26))) && ((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))))) * ((int) ((!((int) (((int) (var_63)) <= ((int) (var_550))))) >= ((+((int) (75))) + (((int) (-34)) + ((int) (var_28)))))));
- unsigned short var_554 = (short) ((-((int) (((int) (((int) (var_48)) != ((int) (-19268)))) > (((int) (var_36)) << (((int) (var_29)) - (51738)))))) < (!(((int) (struct_obj_2.member_5_2)) << (((int) (struct_obj_9.member_2_7)) - (21083)))));
- unsigned short var_555 = (((((int) (-7012)) ^ (((int) (var_34)) ^ ((int) (struct_obj_3.member_5_1)))) | (~((int) ((short) (366))))) | ((~(((int) (11695)) | ((int) (-51)))) | ((int) ((signed char) ((unsigned short) (var_17)))))) != ((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))));
- signed char var_556 = ((((((int) (struct_obj_4.member_2_3.member_1_1)) && ((int) (struct_obj_6.member_5_2))) || (((int) (var_60)) || ((int) (struct_obj_4.member_2_3.member_1_2)))) || ((int) (-11))) && (!((((int) (var_65)) && ((int) (struct_obj_9.member_2_4))) && (((int) (var_3)) && ((int) (var_51)))))) && (((int) ((unsigned short) ((short) (((int) (var_50)) && ((int) (struct_obj_7.member_1_0)))))) || (((int) ((unsigned short) (!((int) (8848))))) || ((((int) (var_45)) && ((int) (-14256))) || (((int) (var_19)) && ((int) (var_550))))));
- }
-
- var_52 = (short) (~((((((int) (var_24)) + ((int) (struct_obj_9.member_2_1.member_1_0))) + (((int) (struct_obj_2.member_5_0)) - ((int) (var_66)))) - (-(((int) (125)) - ((int) (var_40))))) * ((-(((int) (struct_obj_8.member_4_0)) - ((int) (var_6)))) * (+((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475))))))))))))));
- if ((((int) (var_29)) >> (-((!((int) (var_57))) && (!((int) (var_39)))))) % ((~(~((int) (((int) (114)) <= ((int) (34964)))))) - (~((int) ((+((int) (-8064))) > (((int) (var_470)) | ((int) (var_507))))))))
- {
- unsigned short var_557 = ((((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) & ((int) ((short) ((signed char) (struct_obj_4.member_2_5))))) >> ((int) ((short) (((int) (var_8)) / (((int) (10468)) * ((int) (-23532))))))) >> ((int) (((int) (struct_obj_5.member_1_0)) <= ((int) ((short) (-(((int) (-100)) * ((int) (var_19))))))));
- var_558 = (short) (!(~((~(((int) (var_31)) - ((int) (var_557)))) >> (((int) ((signed char) (((int) (-19435)) % ((int) (struct_obj_9.member_2_1.member_1_0))))) + (55)))));
- signed char var_559 = -35;
- var_64 = (signed char) (((((int) (var_473)) % (~(((int) (struct_obj_6.member_5_2)) && ((int) (struct_obj_4.member_2_1.member_1_0))))) && (!((((int) (-4)) || ((int) (3208))) && (!((int) (-40)))))) == ((int) (struct_obj_1.member_5_3)));
- signed char var_560 = (((int) (var_13)) & (~((int) (11657)))) ^ ((~((((int) (var_25)) ^ ((int) (var_559))) ^ (((int) (struct_obj_8.member_4_1.member_3_1.member_1_2)) ^ ((int) (-22908))))) ^ ((~((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))) & ((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))));
- short var_561 = struct_obj_8.member_4_7;
- signed char var_562 = ~((int) ((unsigned short) ((unsigned short) ((~((int) (var_561))) & (((int) (var_26)) ^ ((int) (var_469)))))));
- short var_563 = struct_obj_3.member_5_2;
- short var_564 = !((int) (((int) (((((int) (struct_obj_3.member_5_0)) & ((int) (struct_obj_9.member_2_1.member_1_0))) % (((int) (var_60)) && ((int) (var_470)))) > (!(+((int) (32834)))))) > (((~((int) (-117))) & (~((int) (struct_obj_3.member_5_2)))) || (-((int) ((signed char) (var_45)))))));
- short var_565 = ((int) ((((int) ((((int) (-30333)) & ((int) (var_55))) <= ((int) (struct_obj_8.member_4_6)))) & ((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475))))))))))) < (!(~(~((int) (var_28))))))) > (-((int) (((~((int) (struct_obj_9.member_2_5))) - (((int) (struct_obj_5.member_1_1)) && ((int) (struct_obj_6.member_5_3)))) <= (-(~((int) (21443)))))));
- }
-
- short var_566 = ~(((int) ((unsigned short) ((short) (struct_obj_3.member_5_2)))) >> ((~((int) ((unsigned short) (((int) (struct_obj_8.member_4_1.member_3_1.member_1_0)) ^ ((int) (56133)))))) + (9444)));
- signed char var_567 = ((int) (-25334)) & ((int) ((signed char) (((int) ((((int) (var_46)) >> ((int) (var_46))) >= (+((int) (var_58))))) < ((int) (struct_obj_7.member_1_0)))));
- if (~(((~(~((int) (var_1)))) ^ (~(((int) (16674)) & ((int) (-20))))) ^ ((int) (7212))))
- {
- unsigned short var_568 = (!(+((((int) (8032)) >> (((int) (-71)) + (87))) * ((int) ((signed char) (66)))))) >> ((((int) (struct_obj_3.member_5_2)) << ((int) ((signed char) ((!((int) (-111))) >= ((int) (((int) (-21044)) == ((int) (11494)))))))) - (119619));
- short var_569 = (unsigned short) ((((((int) (12689)) & ((int) (struct_obj_9.member_2_0))) & (~((int) (29330)))) | ((int) (struct_obj_3.member_5_2))) & (~((int) ((short) (~((int) (struct_obj_8.member_4_4)))))));
- unsigned short var_570 = ((+((int) ((short) (((int) (-55)) * ((int) (var_41)))))) * (!(-((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))))) && ((int) ((unsigned short) (((((int) (64)) || ((int) (struct_obj_4.member_2_3.member_1_2))) % ((int) (((int) (struct_obj_4.member_2_6)) != ((int) (struct_obj_2.member_5_1))))) * (((int) ((signed char) (-28985))) ^ ((int) (22407))))));
- unsigned short var_571 = (~((int) (-20282))) & ((int) ((signed char) (((~(((int) (-25685)) ^ ((int) (-111)))) + (2147483647)) << (((~((int) (var_13))) >> ((((int) (struct_obj_6.member_5_3)) << (((int) (22066)) - (22056))) - (12717046))) - (23)))));
- short var_572 = ((int) ((~(~(((int) (22554)) | ((int) (var_42))))) < (~((((int) (var_12)) >> (((int) (var_36)) - (27368))) >> ((~((int) (680))) + (687)))))) <= (!(!((int) (((int) ((signed char) (struct_obj_10.member_1_3))) >= (+((int) (84)))))));
- signed char var_573 = ((~(((int) ((signed char) (((int) (59675)) || ((int) (-27347))))) << ((-((int) (struct_obj_3.member_5_2))) + (59837)))) + (2147483647)) >> ((~((int) (struct_obj_3.member_5_2))) + (59829));
- signed char var_574 = ((~((int) (struct_obj_8.member_4_1.member_3_1.member_1_2))) & (((~((int) (struct_obj_5.member_1_1))) | (~((int) (struct_obj_8.member_4_9.member_1_1)))) | ((~((int) (49))) | ((int) ((short) (((int) (((int) ((signed char) (((int) (25082)) || ((int) (struct_obj_4.member_2_1.member_1_1))))) <= ((int) (69)))) << ((~((+((int) (var_2))) / ((int) (var_34)))) - (233)))))))) && ((int) ((unsigned short) ((~(((int) (var_472)) >> (((int) (35425)) - (35422)))) & ((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))))));
- unsigned short var_575 = ~((int) ((~((int) ((unsigned short) (((int) (var_46)) | ((int) (var_20)))))) >= ((int) ((signed char) (((int) (((int) (-21055)) > ((int) (20469)))) % ((int) (55942)))))));
- }
- else
- {
- signed char var_576 = ((int) ((~(~((int) (((int) (struct_obj_10.member_1_3)) < ((int) (var_58)))))) <= ((int) (((int) ((((int) (-88)) * ((int) (28366))) != ((int) (struct_obj_3.member_5_2)))) < (~(((int) (var_7)) & ((int) (struct_obj_7.member_1_2)))))))) == ((int) ((short) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467))))))))));
- var_51 = (short) (-(~((int) (54))));
- signed char var_577 = (unsigned short) ((signed char) ((((int) ((unsigned short) (var_12))) ^ (~((int) (var_38)))) | (~(~((int) (struct_obj_8.member_4_0))))));
- short var_578 = !(~((int) ((short) (((int) (((int) (var_34)) >= ((int) (var_577)))) & ((int) (((int) (var_63)) != ((int) (5719))))))));
- signed char var_579 = +((((+((int) (40951))) | (~((int) (var_506)))) / ((((int) (27014)) | ((int) (41639))) ^ (((int) (91)) | ((int) (struct_obj_8.member_4_4))))) << ((int) (((int) (struct_obj_9.member_2_5)) != ((int) (((int) ((short) (29451))) >= (+((int) (var_51))))))));
- unsigned short var_580 = (unsigned short) ((unsigned short) (var_65));
- short var_581 = ~((int) (struct_obj_3.member_5_2));
- short var_582 = ((int) (((int) (struct_obj_3.member_5_2)) < ((int) (((-((int) (var_45))) >> ((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))) >= ((int) ((short) (((int) (20524)) * ((int) (struct_obj_8.member_4_1.member_3_0))))))))) ^ ((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475))))))))));
- unsigned short var_583 = +((((int) ((short) (18))) | ((int) ((signed char) ((short) (var_58))))) | (((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467))))))))) & (~(~((int) (var_66))))));
- signed char var_584 = !((int) ((short) (((int) ((+((int) (var_25))) <= (~((int) (var_567))))) ^ ((int) ((signed char) ((signed char) (3847)))))));
- }
-
- }
-
- if ((signed char) (((int) (var_62)) & ((int) (((int) (var_8)) <= (!((int) ((unsigned short) (1490))))))))
- {
- short var_585 = (short) (((int) (-70)) | ((!((int) ((short) (struct_obj_1.member_5_0)))) && ((int) (struct_obj_3.member_5_2))));
- if (((int) ((signed char) (((int) ((signed char) (((int) (11726)) * ((int) (var_42))))) * (~(~((int) (struct_obj_1.member_5_1))))))) * (((((int) ((signed char) (var_469))) * ((int) (struct_obj_3.member_5_2))) * ((int) ((unsigned short) (~((int) (-20687)))))) * ((int) ((short) ((!((int) (-36))) * ((int) (48610)))))))
- {
- signed char var_586 = ~((!(((int) ((signed char) (42650))) / (((int) (struct_obj_9.member_2_2)) | ((int) (struct_obj_9.member_2_2))))) >> ((((int) ((signed char) (((int) (-63)) ^ ((int) (var_472))))) ^ ((~((int) (53084))) | (((int) (var_37)) & ((int) (var_10))))) - (53044)));
- signed char var_587 = (short) (((int) (24145)) < (~((~((int) (-20377))) | (((int) (var_32)) & ((int) (var_25))))));
- short var_588 = (((int) ((short) (~((int) (var_15))))) * ((int) ((unsigned short) (~(((int) (var_27)) * ((int) (var_18))))))) / ((int) ((unsigned short) (var_37)));
- signed char var_589 = (+(!((((int) (-93)) & ((int) (-2615))) | ((int) ((short) (-123)))))) & ((int) (struct_obj_4.member_2_3.member_1_3));
- signed char var_590 = ((((int) (17070)) << (((int) (19866)) - (19850))) | (((int) ((short) (((int) (var_26)) != ((int) (var_7))))) >> ((int) ((((int) (var_58)) & ((int) (var_53))) < ((int) (((int) (var_40)) <= ((int) (55455)))))))) / ((((int) ((short) (-((int) (var_46))))) + (2147483647)) >> (((int) (struct_obj_10.member_1_3)) + (21794)));
- var_591 = (signed char) (((~((((int) (struct_obj_6.member_5_0)) << (((int) (var_506)) - (34))) << (((~((int) (var_60))) + (21611)) - (23)))) & ((int) (var_10))) | ((int) (49472)));
- short var_592 = (unsigned short) ((short) ((signed char) ((!((int) (26965))) ^ (((int) (18006)) + ((int) (36))))));
- unsigned short var_593 = (short) ((((int) ((((int) (-29676)) * ((int) (25475))) >= ((int) ((unsigned short) (var_26))))) & ((int) ((((int) (struct_obj_8.member_4_6)) ^ ((int) (9575))) != (((int) (10136)) % ((int) (struct_obj_7.member_1_2)))))) <= ((int) (((int) ((((int) (40469)) & ((int) (7768))) == ((int) ((short) (-29505))))) <= (~(((int) (var_11)) | ((int) (struct_obj_3.member_5_0)))))));
- unsigned short var_594 = (unsigned short) ((((int) ((((int) (-50)) || ((int) (-78))) > (-((int) (struct_obj_3.member_5_1))))) & (-((int) ((unsigned short) (var_18))))) % ((int) (((-((int) (-24452))) * (!((int) (struct_obj_1.member_5_3)))) != (((~((~((int) (12794))) & ((((int) (-15515)) + (2147483647)) >> (((int) (var_30)) - (42687))))) - ((int) ((short) ((((int) (var_32)) || ((int) (var_12))) >> ((~((int) (-11674))) - (11648)))))) && ((int) (struct_obj_4.member_2_3.member_1_1))))));
- }
-
- unsigned short var_595 = (unsigned short) (!((int) ((short) (struct_obj_4.member_2_4))));
- unsigned short var_596 = ((int) (((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) + (((int) (59094)) + ((int) (struct_obj_9.member_2_1.member_1_3)))))) > (((!((int) (var_27))) - ((int) (((int) (var_10)) <= ((int) (var_60))))) && ((((int) ((-127 - 1))) * ((int) (var_40))) * (-((int) (19780))))))) & ((int) ((-((int) (-43))) < (-((int) ((((int) (var_43)) + ((int) (struct_obj_5.member_1_3))) < (((int) (26468)) % ((int) (60870))))))));
- signed char var_597 = ~((int) ((short) (~((((int) (21151)) ^ ((int) (struct_obj_8.member_4_9.member_1_2))) & (((int) (var_8)) >> (((int) (var_506)) - (22)))))));
- unsigned short var_598 = ((((int) (20683)) && ((((int) (76)) && ((int) (var_53))) || ((int) ((unsigned short) (var_61))))) || (((((int) (-10814)) && ((int) (22918))) && (((int) (79)) && ((int) (7990)))) || ((((int) (var_10)) || ((int) (var_44))) || (((int) (28091)) || ((int) (16480)))))) * ((((int) ((((int) (9562)) | ((int) (var_64))) < (-((int) (var_38))))) | ((int) (((int) ((unsigned short) (var_506))) < (((int) (struct_obj_4.member_2_2)) || ((int) (var_34)))))) + ((int) ((~((int) (struct_obj_8.member_4_3))) > (~((int) ((unsigned short) (struct_obj_4.member_2_2)))))));
- struct_obj_10.member_1_2 = (signed char) (-(-(((~((int) (27631))) & (((int) (25634)) | ((int) (struct_obj_4.member_2_3.member_1_2)))) ^ ((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467))))))))))));
- if (((int) ((signed char) (((int) ((short) (((int) (var_43)) && ((int) (40250))))) || ((int) ((signed char) (var_25)))))) != ((int) ((+((int) ((~((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))) == ((-((int) (var_7))) || (((int) (struct_obj_4.member_2_3.member_1_2)) || ((int) (var_12))))))) <= ((int) ((~(~(((int) (var_27)) & ((int) (-98))))) <= ((int) (((((int) (-10897)) || ((int) (struct_obj_4.member_2_3.member_1_3))) || ((int) (var_14))) != ((int) (struct_obj_3.member_5_2)))))))))
- {
- signed char var_599 = (((int) ((short) (struct_obj_9.member_2_0))) ^ (((((int) ((signed char) (var_2))) ^ (~((int) (23693)))) + (2147483647)) << ((((((int) (struct_obj_5.member_1_0)) + (127)) - (21)) - (0)) - (1)))) | ((((~((int) (var_48))) ^ (((int) (struct_obj_3.member_5_0)) & ((int) (55751)))) ^ (~(((int) (-60)) ^ ((int) (150))))) & (~(((int) ((unsigned short) (struct_obj_4.member_2_6))) ^ (((int) (5973)) << (((int) (36731)) - (36715))))));
- unsigned short var_600 = ~(+(((int) ((short) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))) | ((((int) (struct_obj_8.member_4_1.member_3_1.member_1_1)) & ((int) (struct_obj_9.member_2_2))) | (((int) (var_2)) | ((int) (var_506))))));
- short var_601 = (((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))));
- unsigned short var_602 = ((int) ((short) ((((int) ((short) (15058))) - (((int) (13)) + ((int) (var_57)))) + (-(((int) (var_53)) + ((int) (var_53))))))) * ((int) (var_39));
- signed char var_603 = var_6;
- unsigned short var_604 = ((int) (((int) (-22742)) > (~((((int) (var_24)) ^ ((int) (struct_obj_5.member_1_3))) ^ (((int) (28)) ^ ((int) (var_28))))))) * ((int) ((short) ((((int) (struct_obj_3.member_5_2)) && (!((int) (89)))) | (~((int) (struct_obj_4.member_2_3.member_1_2))))));
- short var_605 = (signed char) ((((~((int) (-124))) & (~((int) (4435)))) | ((((int) (46344)) & ((int) (48688))) | (((int) (-81)) ^ ((int) (22626))))) | (~(~(((int) (28400)) ^ ((int) (80))))));
- signed char var_606 = !(((int) ((~(((int) (var_595)) + ((int) (struct_obj_9.member_2_1.member_1_0)))) > (((int) (((int) (37904)) <= ((int) (struct_obj_8.member_4_3)))) & (!((int) (var_8)))))) & (+(((int) ((short) (var_14))) % ((int) ((signed char) (-120))))));
- unsigned short var_607 = ~((int) ((signed char) (struct_obj_3.member_5_2)));
- short var_608 = (short) (((int) (((((int) (-67)) ^ ((int) (23314))) & (~((int) (2233)))) == ((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467))))))))))) + ((int) (-24744)));
- }
- else
- {
- signed char var_609 = ((int) ((~((((int) (var_596)) | ((int) (struct_obj_8.member_4_8))) || ((int) (var_22)))) != ((int) ((short) (((int) (((int) (-29)) != ((int) (36)))) & ((int) (((int) (30)) <= ((int) (struct_obj_4.member_2_1.member_1_0))))))))) && (+((int) (((int) ((unsigned short) (((int) (struct_obj_8.member_4_1.member_3_0)) / ((int) (struct_obj_10.member_1_3))))) < ((int) (((int) (((int) (struct_obj_4.member_2_3.member_1_0)) > ((int) (var_43)))) <= (~((int) (25446))))))));
- unsigned short var_610 = (short) ((+((((int) (var_49)) - ((int) (struct_obj_8.member_4_9.member_1_0))) + (-((int) (54566))))) * ((int) (var_34)));
- short var_611 = ((int) ((signed char) (~((int) (struct_obj_2.member_5_1))))) ^ ((((int) ((short) ((signed char) (62)))) << ((((((int) (25)) ^ ((int) (-16))) + (2147483647)) << ((((int) (5683)) & ((int) (-10))) - (5682))) - (2147483607))) | (((int) ((signed char) (((int) (13434)) >> (((int) (-71)) + (97))))) << ((((int) (20025)) >> (((int) (-101)) + (122))) << ((int) ((signed char) (-4597))))));
- var_42 = (signed char) (((int) (((int) ((unsigned short) ((!((int) (var_21))) * (((int) (var_55)) * ((int) (var_473)))))) <= ((int) (((int) ((((int) (struct_obj_8.member_4_1.member_3_0)) || ((int) (var_38))) <= (((int) (var_56)) * ((int) (struct_obj_8.member_4_9.member_1_0))))) > ((((int) (var_57)) & ((int) (var_37))) || (~((int) (var_5)))))))) <= ((int) (var_62)));
- short var_612 = (~((int) (((int) ((((int) (-86)) & ((int) (var_1))) >= ((int) (63479)))) != ((int) (var_50))))) % (((int) (((((int) (struct_obj_1.member_5_2)) ^ ((int) (struct_obj_8.member_4_5))) | (((int) (-7103)) ^ ((int) (96)))) < ((int) (var_39)))) | ((int) ((~((int) ((unsigned short) (var_53)))) != (((int) (((int) (struct_obj_3.member_5_0)) != ((int) (struct_obj_6.member_5_1)))) && ((int) ((signed char) (40)))))));
- }
-
- if ((~((int) ((signed char) (~((int) (-2706)))))) <= (+(((((int) (struct_obj_9.member_2_1.member_1_3)) + ((int) (-38))) * ((int) ((unsigned short) (var_48)))) * (-(((int) (53)) + ((int) (42)))))))
- {
- short var_613 = ((int) ((unsigned short) (~((~((int) (35514))) | (((int) (-11248)) | ((int) (-11218))))))) & (~(~((int) ((short) ((unsigned short) (var_17))))));
- short var_614 = (((((int) ((signed char) (var_60))) & ((int) (struct_obj_8.member_4_9.member_1_1))) >> ((int) ((signed char) (((int) (var_60)) || ((int) (struct_obj_9.member_2_7)))))) || (((((int) (var_58)) * ((int) (41314))) / (((int) (struct_obj_9.member_2_0)) * ((int) (var_30)))) * ((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))))) * ((int) (((((int) (-2486)) ^ ((int) ((unsigned short) (112)))) % (-((int) ((short) (struct_obj_8.member_4_1.member_3_1.member_1_0))))) < (((int) ((((int) (struct_obj_9.member_2_1.member_1_3)) + ((int) (var_62))) >= (!((int) (struct_obj_2.member_5_0))))) || ((int) ((unsigned short) (+((int) (struct_obj_8.member_4_9.member_1_2))))))));
- unsigned short var_615 = (unsigned short) (((int) (-15187)) * (!((((int) (82)) * ((int) (7986))) * ((int) ((signed char) (-8101))))));
- unsigned short var_616 = ((int) (struct_obj_5.member_1_1)) > ((((int) ((+((int) ((~((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))) == ((-((int) (var_7))) || (((int) (struct_obj_4.member_2_3.member_1_2)) || ((int) (var_12))))))) <= ((int) ((~(~(((int) (var_27)) & ((int) (-98))))) <= ((int) (((((int) (-10897)) || ((int) (struct_obj_4.member_2_3.member_1_3))) || ((int) (var_14))) != ((int) (struct_obj_3.member_5_2)))))))) & (((int) (struct_obj_3.member_5_2)) >> (((int) ((signed char) (struct_obj_6.member_5_1))) - (108)))) >> (((~(~((int) (struct_obj_10.member_1_0)))) ^ (((int) (var_507)) - (((int) (var_37)) && ((int) (var_47))))) - (2008)));
- unsigned short var_617 = var_40;
- unsigned short var_618 = ~(~((~(((int) (-49)) | ((int) (6)))) ^ (~(((int) (-101)) | ((int) (-118))))));
- var_52 = (short) (((int) ((~((((int) (58053)) * ((int) (-35))) / (((int) (-22)) * ((int) (4112))))) > (((((int) (-100)) & ((int) (34043))) ^ (((int) (10311)) | ((int) (-10654)))) & (~(((int) (-22199)) | ((int) (22289))))))) && (((int) (struct_obj_3.member_5_2)) >> (+((int) ((short) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))))));
- }
- else
- {
- short var_619 = ((~(((int) ((short) (13900))) * ((int) ((signed char) (-20248))))) * (((((int) (-975)) * ((int) (struct_obj_9.member_2_1.member_1_0))) / (((int) (var_9)) * ((int) (struct_obj_3.member_5_0)))) * ((((int) (5)) * ((int) (28036))) * (!((int) (struct_obj_8.member_4_1.member_3_1.member_1_1)))))) || (((int) ((signed char) (((int) ((unsigned short) (struct_obj_4.member_2_1.member_1_0))) && ((int) ((unsigned short) (var_8)))))) & ((((int) ((unsigned short) (var_41))) ^ (((int) (var_35)) | ((int) (var_9)))) | (((int) ((unsigned short) (struct_obj_3.member_5_3))) ^ (((int) (17186)) >> (((int) (struct_obj_9.member_2_1.member_1_1)) - (31946))))));
- unsigned short var_620 = (~(((int) ((signed char) (~((int) (var_41))))) & ((int) ((unsigned short) (struct_obj_3.member_5_2))))) / ((int) (-5296));
- signed char var_621 = var_20;
- short var_622 = (((int) (struct_obj_6.member_5_0)) | ((~((int) (2))) | (((int) ((signed char) (struct_obj_4.member_2_2))) ^ ((int) ((+((int) ((~((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))) == ((-((int) (var_7))) || (((int) (struct_obj_4.member_2_3.member_1_2)) || ((int) (var_12))))))) <= ((int) ((~(~(((int) (var_27)) & ((int) (-98))))) <= ((int) (((((int) (-10897)) || ((int) (struct_obj_4.member_2_3.member_1_3))) || ((int) (var_14))) != ((int) (struct_obj_3.member_5_2))))))))))) ^ ((((int) ((signed char) (~((int) (var_31))))) | ((int) (struct_obj_3.member_5_2))) | ((int) ((unsigned short) ((unsigned short) (~((int) (var_2)))))));
- short var_623 = ((((int) ((unsigned short) ((signed char) (var_18)))) || (((int) ((+((int) ((~((int) ((((int) ((-((int) ((short) (-4355)))) < (-((int) (struct_obj_3.member_5_2))))) - (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) || ((~((int) (-19743))) * (((int) (58561)) / ((int) (40662)))))) <= ((int) ((signed char) (((int) (((((int) (struct_obj_3.member_5_2)) ^ ((int) (-77))) & (((int) ((short) (~((int) (-10947))))) | ((((int) (var_30)) >> (((int) (145)) - (138))) | ((((int) (-11225)) + (2147483647)) >> (((int) (31473)) - (31471)))))) >= ((int) (((-(-((int) (struct_obj_2.member_5_0)))) * (-((int) ((unsigned short) (var_1))))) > ((int) (((int) ((unsigned short) (~((int) (-5))))) != (((int) (struct_obj_3.member_5_2)) && (((int) (var_17)) << (((int) (var_9)) - (13475)))))))))) <= ((((int) (49)) ^ ((int) (7553))) & ((int) ((signed char) (23467)))))))))) == ((-((int) (var_7))) || (((int) (struct_obj_4.member_2_3.member_1_2)) || ((int) (var_12))))))) <= ((int) ((~(~(((int) (var_27)) & ((int) (-98))))) <= ((int) (((((int) (-10897)) || ((int) (struct_obj_4.member_2_3.member_1_3))) || ((int) (var_14))) != ((int) (struct_obj_3.member_5_2)))))))) && (((int) (2844)) && ((int) (struct_obj_8.member_4_5))))) || (!((((int) (43906)) || ((int) (var_470))) || (((int) (var_27)) && ((int) (var_52)))))) && (((int) ((signed char) ((((int) (-26084)) || ((int) (struct_obj_8.member_4_4))) || (((int) (struct_obj_4.member_2_1.member_1_0)) || ((int) (var_12)))))) || (((int) (var_45)) && ((((int) (struct_obj_8.member_4_9.member_1_0)) || ((int) (var_23))) && ((int) (struct_obj_4.member_2_1.member_1_1)))));
- signed char var_624 = +(~(((int) ((((int) (4004)) ^ ((int) (var_26))) <= (((int) (var_16)) << (((int) (struct_obj_4.member_2_0)) - (7592))))) << (!((int) (var_51)))));
- short var_625 = ((int) ((signed char) ((signed char) ((((int) (58)) || ((int) (5530))) >> ((-((int) (var_472))) + (10129)))))) || (+(((((int) (var_624)) * ((int) (struct_obj_10.member_1_3))) * (~((int) (-13129)))) * ((((int) (-6837)) * ((int) (-86))) / (((int) (78)) * ((int) (-2058))))));
- unsigned short var_626 = -(~(~(~((int) (var_28)))));
- }
-
- }
-
- short var_627 = (((~(((int) (21000)) & ((int) (61917)))) ^ ((((int) (30872)) ^ ((int) (struct_obj_3.member_5_2))) & (((int) (var_472)) & ((int) (var_46))))) | (((((int) (23969)) | ((int) (var_23))) & (((int) (var_38)) ^ ((int) (31735)))) & (~(~((int) (struct_obj_4.member_2_3.member_1_3)))))) & (((((int) (struct_obj_9.member_2_6)) & (~((int) (var_22)))) ^ (((int) (-36)) & (~((int) (var_15))))) | ((int) (struct_obj_4.member_2_4)));
- }
-
-}
diff --git a/multiple_labels_crash_test/func.ref.s b/multiple_labels_crash_test/func.ref.s
deleted file mode 100644
index 3e08e447..00000000
--- a/multiple_labels_crash_test/func.ref.s
+++ /dev/null
@@ -1,5170 +0,0 @@
-// File generated by CompCert 3.7
-// Command line: -dmach -S tmp/func.c -o tmp/func.ref.s
- .text
- .balign 2
- .globl foo
-foo:
- mov x29, sp
- sub sp, sp, #32
- str x29, [sp, #0]
- str x30, [sp, #8]
- str x19, [sp, #16]
- str x20, [sp, #24]
- adrp x16, var_47
- ldrsb w0, [x16, #:lo12:var_47]
- movn w16, #5210, lsl #0
- and w0, w0, w16
- ubfiz w0, w0, 0, 16
- cmp w0, #1125
- cset x0, le
- cbz w0, .L100
- adrp x16, var_24
- ldrsh w0, [x16, #:lo12:var_24]
- movz w16, #16885, lsl #0
- eor w0, w0, w16
- movn w16, #103, lsl #0
- orr w15, w0, w16
- adrp x16, struct_obj_4 + 22
- ldrh w14, [x16, #:lo12:struct_obj_4 + 22]
- sbfiz w17, w14, 0, 8
- cmp w15, w17
- cset x0, le
- cmp w0, #1
- cset x0, ne
- adrp x16, var_58
- strb w0, [x16, #:lo12:var_58]
- orr w9, wzr, #1
- orr w11, wzr, #1
- adrp x16, struct_obj_4 + 12
- ldrsb w4, [x16, #:lo12:struct_obj_4 + 12]
- sub w12, w9, w4
- adrp x16, var_15
- ldrh w3, [x16, #:lo12:var_15]
- sub w7, wzr, w3
- sbfiz w13, w7, 0, 8
- sub w13, w13, #43
- lsl w11, w11, w13
- sub w0, w12, w11
- cbnz w0, .L101
- adrp x16, struct_obj_10 + 6
- ldrsh w0, [x16, #:lo12:struct_obj_10 + 6]
- sbfiz w5, w0, 0, 8
- adrp x16, var_31
- ldrsh w0, [x16, #:lo12:var_31]
- sub w0, w5, w0
- add w0, w0, #24576
- add w0, w0, #2605
- sub w0, wzr, w0
- cmp w0, #0
- cset x0, ne
- cbz w0, .L102
-.L101:
- movz w0, #0, lsl #0
- movz w16, #51591, lsl #0
- cmp w0, w16
- cset x0, eq
- adrp x16, var_27
- ldrsh w15, [x16, #:lo12:var_27]
- adrp x16, struct_obj_6 + 4
- ldrh w29, [x16, #:lo12:struct_obj_6 + 4]
- and w6, w15, w29
- orn w4, wzr, w6
- movz w16, #29499, lsl #0
- and w9, w4, w16
- adrp x16, var_23
- ldrh w17, [x16, #:lo12:var_23]
- cmp w9, w17
- cset x17, le
- lsl w0, w0, w17
- sbfiz w29, w0, 0, 16
- adrp x16, var_30
- ldrh w11, [x16, #:lo12:var_30]
- adrp x16, var_3
- ldrsb w5, [x16, #:lo12:var_3]
- sub w0, w5, #49
- lsl w10, w11, w0
- movn w16, #245, lsl #0
- eor w9, w10, w16
- cbnz w9, .L103
- adrp x16, var_9
- ldrh w14, [x16, #:lo12:var_9]
- adrp x16, struct_obj_4 + 2
- ldrsb w17, [x16, #:lo12:struct_obj_4 + 2]
- movz w16, #53547, lsl #0
- orr w15, w17, w16
- sub w12, w15, #53248
- sub w12, w12, #359
- asr w3, w14, w12
- cmp w3, #0
- cset x11, ne
- b .L104
-.L103:
- orr w11, wzr, #1
-.L104:
- adrp x16, struct_obj_7 + 2
- ldrsh w4, [x16, #:lo12:struct_obj_7 + 2]
- movz w13, #53518, lsl #0
- movk w13, #32767, lsl #16
- adrp x16, struct_obj_4 + 26
- ldrsh w5, [x16, #:lo12:struct_obj_4 + 26]
- adrp x16, var_34
- ldrsb w12, [x16, #:lo12:var_34]
- eor w10, w5, w12
- sub w5, w10, #8192
- sub w5, w5, #1378
- asr w6, w13, w5
- adrp x16, struct_obj_4 + 2
- ldrsb w5, [x16, #:lo12:struct_obj_4 + 2]
- orn w1, wzr, w5
- adrp x16, var_1
- ldrh w3, [x16, #:lo12:var_1]
- sbfiz w0, w3, 0, 8
- adrp x16, var_19
- ldrsb w7, [x16, #:lo12:var_19]
- adrp x16, struct_obj_1 + 4
- ldrh w10, [x16, #:lo12:struct_obj_1 + 4]
- and w12, w7, w10
- movz w16, #113, lsl #0
- and w12, w12, w16
- orr w0, w0, w12
- cmp w1, w0
- cset x0, ne
- asr w14, w6, w0
- eor w10, w4, w14
- orr w16, wzr, #2147483647
- add w8, w10, w16
- adrp x16, var_29
- ldrh w6, [x16, #:lo12:var_29]
- adrp x16, var_8
- ldrh w2, [x16, #:lo12:var_8]
- and w14, w6, w2
- adrp x16, var_48
- ldrh w3, [x16, #:lo12:var_48]
- orr w10, w14, w3
- adrp x16, struct_obj_8 + 18
- ldrsh w12, [x16, #:lo12:struct_obj_8 + 18]
- orn w4, wzr, w12
- adrp x16, struct_obj_8 + 20
- ldrsh w3, [x16, #:lo12:struct_obj_8 + 20]
- ubfiz w1, w3, 0, 16
- sub w3, w1, #49152
- sub w3, w3, #2540
- lsl w7, w4, w3
- and w10, w10, w7
- movz w4, #49144, lsl #0
- adrp x16, struct_obj_5 + 2
- ldrsh w1, [x16, #:lo12:struct_obj_5 + 2]
- sub w13, w1, #28672
- sub w13, w13, #274
- lsl w17, w4, w13
- sub w13, wzr, w11
- add w15, w13, #5
- lsl w17, w17, w15
- adrp x16, struct_obj_2 + 2
- ldrh w11, [x16, #:lo12:struct_obj_2 + 2]
- movz w16, #27896, lsl #0
- eor w14, w11, w16
- adrp x16, var_56
- ldrh w13, [x16, #:lo12:var_56]
- orn w15, wzr, w13
- add w11, w15, #16384
- add w11, w11, #3806
- lsl w1, w14, w11
- eor w2, w17, w1
- movz w16, #33395, lsl #0
- movk w16, #1535, lsl #16
- sub w2, w2, w16
- lsl w14, w10, w2
- asr w14, w8, w14
- cbz w14, .L105
- adrp x16, struct_obj_3 + 2
- ldrh w10, [x16, #:lo12:struct_obj_3 + 2]
- cbz w10, .L106
- adrp x16, var_18
- ldrsb w2, [x16, #:lo12:var_18]
- cmp w2, #0
- cset x7, ne
- b .L107
-.L106:
- movz w7, #0, lsl #0
-.L107:
- movz w6, #0, lsl #0
- cbz w6, .L108
- orr w8, wzr, #1
- b .L109
-.L108:
- orr w8, wzr, #1
-.L109:
- cmp w7, #0
- cset x6, lt
- cmp w6, w0
- cset x17, ge
- movn w2, #2717, lsl #0
- adrp x16, struct_obj_9 + 26
- ldrsh w4, [x16, #:lo12:struct_obj_9 + 26]
- madd w12, w4, w2, wzr
- orr w16, wzr, #2147483647
- add w11, w12, w16
- orr w3, wzr, w11, asr #3
- cmp w3, #0
- cset x10, eq
- cmp w17, w10
- cset x10, ne
- asr w8, w10, w8
- ubfiz w3, w8, 0, 16
- cbnz w9, .L110
- adrp x16, var_9
- ldrh w10, [x16, #:lo12:var_9]
- movz w16, #53547, lsl #0
- orr w1, w5, w16
- sub w4, w1, #53248
- sub w4, w4, #359
- asr w9, w10, w4
- cmp w9, #0
- cset x1, ne
- b .L111
-.L110:
- orr w1, wzr, #1
-.L111:
- movz w2, #34812, lsl #0
- adrp x16, var_13
- ldrsh w11, [x16, #:lo12:var_13]
- madd w14, w11, w2, wzr
- adrp x16, struct_obj_1 + 2
- ldrh w6, [x16, #:lo12:struct_obj_1 + 2]
- adrp x16, var_65
- ldrsh w4, [x16, #:lo12:var_65]
- madd w9, w6, w4, wzr
- sdiv w9, w14, w9
- orr w8, wzr, #62
- adrp x16, var_35
- ldrh w2, [x16, #:lo12:var_35]
- madd w14, w2, w8, wzr
- cmp w14, #0
- cset x10, eq
- madd w15, w9, w10, wzr
- sub w2, wzr, w0
- madd w12, w15, w2, wzr
- sub w1, wzr, w1
- eor w11, w12, w1
- adrp x16, var_70
- strb w11, [x16, #:lo12:var_70]
- adrp x16, var_30
- ldrh w7, [x16, #:lo12:var_30]
- adrp x16, var_3
- ldrsb w15, [x16, #:lo12:var_3]
- sub w0, w15, #49
- lsl w0, w7, w0
- movn w16, #245, lsl #0
- eor w0, w0, w16
- cbnz w0, .L112
- adrp x16, var_9
- ldrh w15, [x16, #:lo12:var_9]
- movz w16, #53547, lsl #0
- orr w2, w5, w16
- sub w1, w2, #53248
- sub w1, w1, #359
- asr w14, w15, w1
- cmp w14, #0
- cset x7, ne
- b .L113
-.L112:
- orr w7, wzr, #1
-.L113:
- sub w10, wzr, w7
- movz w12, #20687, lsl #0
- movk w12, #32767, lsl #16
- adrp x16, var_4
- ldrh w6, [x16, #:lo12:var_4]
- sbfiz w14, w6, 0, 16
- sub w13, w14, #3630
- asr w5, w12, w13
- eor w17, w10, w5
- orr w16, wzr, #2147483647
- add w15, w17, w16
- adrp x16, struct_obj_4 + 12
- ldrsb w12, [x16, #:lo12:struct_obj_4 + 12]
- orn w2, wzr, w12
- adrp x16, struct_obj_2 + 2
- ldrh w11, [x16, #:lo12:struct_obj_2 + 2]
- orn w2, w2, w11
- ubfiz w1, w2, 0, 16
- sub w0, w1, #61440
- sub w0, w0, #4095
- lsl w8, w15, w0
- adrp x16, var_41
- ldrh w7, [x16, #:lo12:var_41]
- adrp x16, struct_obj_9 + 22
- ldrh w5, [x16, #:lo12:struct_obj_9 + 22]
- adrp x16, struct_obj_9 + 20
- ldrsh w4, [x16, #:lo12:struct_obj_9 + 20]
- sub w0, w4, #12288
- sub w0, w0, #1248
- lsl w17, w5, w0
- eor w13, w7, w17
- eor w0, w8, w13
- adrp x16, struct_obj_9 + 22
- strh w0, [x16, #:lo12:struct_obj_9 + 22]
- movz w8, #35578, lsl #0
- adrp x16, struct_obj_5
- ldrsb w2, [x16, #:lo12:struct_obj_5]
- madd w14, w2, w8, wzr
- movz w11, #103, lsl #0
- madd w13, w3, w11, wzr
- madd w8, w14, w13, wzr
- adrp x16, var_26
- ldrh w12, [x16, #:lo12:var_26]
- cbnz w12, .L105
- adrp x16, var_34
- ldrsb w11, [x16, #:lo12:var_34]
- cmp w11, #0
- cset x7, ne
-.L105:
- adrp x16, var_61
- ldrsb w0, [x16, #:lo12:var_61]
- adrp x16, var_15
- ldrh w14, [x16, #:lo12:var_15]
- orr w10, w0, w14
- adrp x16, var_52
- ldrsh w8, [x16, #:lo12:var_52]
- movz w16, #5914, lsl #0
- and w0, w8, w16
- orr w6, w10, w0
- adrp x16, struct_obj_2
- ldrsh w10, [x16, #:lo12:struct_obj_2]
- bic w8, w6, w10
- adrp x16, var_24
- ldrsh w10, [x16, #:lo12:var_24]
- movz w16, #31461, lsl #0
- orr w10, w10, w16
- orr w3, w8, w10
- movz w4, #0, lsl #0
- sbfiz w0, w4, 0, 8
- cmp w3, w0
- cset x3, ne
- adrp x16, var_78
- strh w3, [x16, #:lo12:var_78]
- adrp x16, struct_obj_8
- ldrh w13, [x16, #:lo12:struct_obj_8]
- sub w10, wzr, w13
- cbz w10, .L114
- adrp x16, struct_obj_4
- ldrsh w11, [x16, #:lo12:struct_obj_4]
- cbnz w11, .L115
- adrp x16, struct_obj_8 + 4
- ldrsb w6, [x16, #:lo12:struct_obj_8 + 4]
- cbnz w6, .L115
- orr w8, wzr, #1
- cmp w29, #0
- cset x2, ne
- adrp x16, struct_obj_1 + 2
- ldrh w9, [x16, #:lo12:struct_obj_1 + 2]
- cmp w9, #0
- csel x0, x8, x2, ne
-.L115:
- adrp x16, var_54
- ldrsh w0, [x16, #:lo12:var_54]
- orr w16, wzr, #2147483647
- add w17, w0, w16
- adrp x16, var_62
- ldrh w14, [x16, #:lo12:var_62]
- adrp x16, struct_obj_2 + 4
- ldrh w7, [x16, #:lo12:struct_obj_2 + 4]
- eor w12, w14, w7
- sbfiz w29, w12, 0, 16
- sub w6, w29, #24576
- sub w6, w6, #440
- asr w0, w17, w6
- adrp x16, var_54
- strh w0, [x16, #:lo12:var_54]
- adrp x16, var_47
- ldrsb w0, [x16, #:lo12:var_47]
- orn w12, wzr, w0
- adrp x16, struct_obj_7 + 2
- ldrsh w0, [x16, #:lo12:struct_obj_7 + 2]
- orr w16, wzr, #2147483647
- add w13, w0, w16
- adrp x16, var_18
- ldrsb w11, [x16, #:lo12:var_18]
- sub w14, w11, #75
- asr w3, w13, w14
- madd w0, w12, w3, wzr
- cmp w0, #0
- cset x0, le
- orn w12, wzr, w0
- movn w3, #21, lsl #0
- adrp x16, struct_obj_4 + 18
- ldrsh w14, [x16, #:lo12:struct_obj_4 + 18]
- madd w15, w14, w3, wzr
- movn w6, #32288, lsl #0
- adrp x16, var_6
- ldrh w29, [x16, #:lo12:var_6]
- madd w7, w29, w6, wzr
- sdiv w2, w15, w7
- orn w0, wzr, w2
- adrp x16, struct_obj_2 + 2
- ldrh w11, [x16, #:lo12:struct_obj_2 + 2]
- adrp x16, var_4
- ldrh w7, [x16, #:lo12:var_4]
- madd w14, w11, w7, wzr
- adrp x16, var_7
- ldrsb w1, [x16, #:lo12:var_7]
- cmp w1, #0
- cset x8, eq
- madd w9, w14, w8, wzr
- orn w7, wzr, w9
- madd w0, w0, w7, wzr
- cmp w12, w0
- cset x0, gt
- adrp x16, var_82
- strh w0, [x16, #:lo12:var_82]
-.L114:
- adrp x16, struct_obj_4 + 18
- ldrsh w0, [x16, #:lo12:struct_obj_4 + 18]
- cbz w0, .L102
- adrp x16, struct_obj_2 + 4
- ldrh w0, [x16, #:lo12:struct_obj_2 + 4]
- cmp w0, #0
- cset x0, ne
-.L102:
- adrp x16, struct_obj_3
- ldrsh w0, [x16, #:lo12:struct_obj_3]
- cbnz w0, .L116
- adrp x16, var_33
- ldrh w0, [x16, #:lo12:var_33]
- cbnz w0, .L117
- adrp x16, var_28
- ldrsh w0, [x16, #:lo12:var_28]
- cmp w0, #0
- cset x0, ne
- b .L118
-.L117:
- orr w0, wzr, #1
- b .L118
-.L116:
- orr w0, wzr, #1
-.L118:
- orn w12, wzr, w0
- adrp x16, var_2
- ldrh w1, [x16, #:lo12:var_2]
- adrp x16, struct_obj_4 + 26
- ldrsh w29, [x16, #:lo12:struct_obj_4 + 26]
- sub w0, w1, w29
- sbfiz w15, w0, 0, 8
- cmp w12, w15
- b.ge .L119
- adrp x16, var_17
- ldrsh w7, [x16, #:lo12:var_17]
- cbnz w7, .L120
- adrp x16, struct_obj_8 + 22
- ldrh w13, [x16, #:lo12:struct_obj_8 + 22]
- cmp w13, #0
- cset x4, ne
- b .L121
-.L120:
- orr w4, wzr, #1
-.L121:
- eor w15, w4, #1
- eor w9, w15, #1
- adrp x16, var_47
- ldrsb w3, [x16, #:lo12:var_47]
- cmp w3, #0
- cset x8, ne
- movz w16, #14251, lsl #0
- cmp w8, w16
- cset x3, le
- cmp w3, w7
- cset x8, ne
- ubfiz w12, w29, 0, 16
- cmp w8, w12
- cset x13, ge
- adrp x16, struct_obj_1
- ldrsh w12, [x16, #:lo12:struct_obj_1]
- ubfiz w17, w12, 0, 16
- orn w4, wzr, w17
- movz w16, #40329, lsl #0
- movk w16, #116, lsl #16
- eor w11, w4, w16
- eor w15, w13, w11
- cbz w15, .L122
- movz w4, #0, lsl #0
- adrp x16, struct_obj_5
- ldrsb w7, [x16, #:lo12:struct_obj_5]
- movz w16, #12154, lsl #0
- eor w7, w7, w16
- adrp x16, var_1
- ldrh w1, [x16, #:lo12:var_1]
- adrp x16, struct_obj_10 + 6
- ldrsh w4, [x16, #:lo12:struct_obj_10 + 6]
- movn w16, #9, lsl #0
- orr w10, w4, w16
- eor w29, w1, w10
- eor w2, w7, w29
- adrp x16, struct_obj_8 + 26
- ldrsb w4, [x16, #:lo12:struct_obj_8 + 26]
- orr w0, w4, w9
- and w0, w2, w0
- sbfiz w0, w0, 0, 8
- adrp x16, var_90
- strh w0, [x16, #:lo12:var_90]
- adrp x16, var_16
- ldrh w0, [x16, #:lo12:var_16]
- movz w16, #56567, lsl #0
- eor w12, w0, w16
- adrp x16, struct_obj_7
- ldrsb w8, [x16, #:lo12:struct_obj_7]
- and w14, w12, w8
- adrp x16, var_8
- ldrh w11, [x16, #:lo12:var_8]
- orr w12, w14, w11
- adrp x16, var_5
- ldrh w2, [x16, #:lo12:var_5]
- adrp x16, var_32
- ldrh w3, [x16, #:lo12:var_32]
- eon w1, w2, w3
- adrp x16, var_34
- ldrsb w4, [x16, #:lo12:var_34]
- movz w16, #44163, lsl #0
- and w5, w4, w16
- sbfiz w9, w5, 0, 8
- orr w3, w1, w9
- bic w0, w12, w3
- adrp x16, var_94
- strh w0, [x16, #:lo12:var_94]
- b .L123
-.L122:
- adrp x16, struct_obj_6 + 6
- ldrsh w0, [x16, #:lo12:struct_obj_6 + 6]
- adrp x16, var_100
- strh w0, [x16, #:lo12:var_100]
-.L123:
- adrp x16, struct_obj_8 + 24
- ldrh w0, [x16, #:lo12:struct_obj_8 + 24]
- sbfiz w0, w0, 0, 8
- adrp x16, var_106
- strh w0, [x16, #:lo12:var_106]
- adrp x16, var_55
- ldrsb w4, [x16, #:lo12:var_55]
- adrp x16, var_3
- ldrsb w6, [x16, #:lo12:var_3]
- adrp x16, struct_obj_2 + 4
- ldrh w5, [x16, #:lo12:struct_obj_2 + 4]
- movz w16, #19146, lsl #0
- orr w2, w5, w16
- eon w8, w2, w6
- ubfiz w6, w8, 0, 16
- adrp x16, struct_obj_8 + 16
- ldrsb w17, [x16, #:lo12:struct_obj_8 + 16]
- adrp x16, var_2
- ldrh w1, [x16, #:lo12:var_2]
- eon w10, w17, w1
- movz w16, #33293, lsl #0
- orr w15, w4, w16
- adrp x16, struct_obj_4 + 2
- ldrsb w29, [x16, #:lo12:struct_obj_4 + 2]
- eon w17, w15, w29
- and w14, w10, w17
- and w0, w6, w14
- cmp w0, #0
- cset x0, eq
- adrp x16, var_46
- strh w0, [x16, #:lo12:var_46]
- orr w0, wzr, #1
- adrp x16, var_40
- strb w0, [x16, #:lo12:var_40]
- adrp x16, var_7
- ldrsb w0, [x16, #:lo12:var_7]
- ubfiz w0, w0, 0, 16
- cbz w0, .L124
- adrp x16, struct_obj_8 + 28
- ldrsh w0, [x16, #:lo12:struct_obj_8 + 28]
- cbz w0, .L124
- adrp x16, var_11
- ldrsh w0, [x16, #:lo12:var_11]
- cmp w0, #0
- cset x0, ne
- cbz w0, .L124
- adrp x16, struct_obj_7 + 2
- ldrsh w0, [x16, #:lo12:struct_obj_7 + 2]
- cbnz w0, .L124
- adrp x16, var_17
- ldrsh w0, [x16, #:lo12:var_17]
- cmp w0, #0
- cset x0, ne
- cbnz w0, .L124
- adrp x16, var_10
- ldrh w0, [x16, #:lo12:var_10]
- b .L124
-.L119:
- adrp x16, struct_obj_8 + 28
- ldrsh w0, [x16, #:lo12:struct_obj_8 + 28]
- cbnz w0, .L125
- adrp x16, struct_obj_4 + 4
- ldrsh w0, [x16, #:lo12:struct_obj_4 + 4]
- cmp w0, #0
- cset x0, ne
- b .L126
-.L125:
- orr w0, wzr, #1
-.L126:
- adrp x16, struct_obj_4 + 8
- ldrsh w12, [x16, #:lo12:struct_obj_4 + 8]
- adrp x16, struct_obj_2 + 2
- ldrh w14, [x16, #:lo12:struct_obj_2 + 2]
- sdiv w13, w12, w14
- msub w7, w13, w14, w12
- sbfiz w11, w7, 0, 8
- movz w16, #54823, lsl #0
- cmp w0, w16
- cset x8, le
- orr w8, w11, w8
- adrp x16, var_9
- ldrh w6, [x16, #:lo12:var_9]
- adrp x16, var_15
- ldrh w11, [x16, #:lo12:var_15]
- adrp x16, struct_obj_2 + 6
- ldrsh w12, [x16, #:lo12:struct_obj_2 + 6]
- eor w0, w11, w12
- adrp x16, struct_obj_4
- ldrsh w5, [x16, #:lo12:struct_obj_4]
- movn w16, #116, lsl #0
- and w12, w5, w16
- orr w0, w0, w12
- bic w9, w6, w0
- adrp x16, struct_obj_4 + 2
- ldrsb w11, [x16, #:lo12:struct_obj_4 + 2]
- orr w5, w9, w11
- ubfiz w10, w5, 0, 16
- adrp x16, struct_obj_4 + 18
- ldrsh w0, [x16, #:lo12:struct_obj_4 + 18]
- madd w5, w10, w0, wzr
- cmp w8, w5
- cset x15, gt
- adrp x16, var_21
- ldrsb w2, [x16, #:lo12:var_21]
- orn w29, wzr, w2
- movn w16, #38, lsl #0
- orr w5, w29, w16
- adrp x16, var_23
- ldrh w4, [x16, #:lo12:var_23]
- eon w8, w4, w2
- adrp x16, var_38
- ldrsb w17, [x16, #:lo12:var_38]
- adrp x16, var_61
- ldrsb w3, [x16, #:lo12:var_61]
- bic w29, w17, w3
- eor w1, w8, w29
- and w3, w5, w1
- and w14, w15, w3
- adrp x16, var_37
- strb w14, [x16, #:lo12:var_37]
- sbfiz w0, w0, 0, 8
-.L124:
- orr w0, wzr, #1
- cbz w0, .L127
- adrp x16, struct_obj_7 + 2
- ldrsh w0, [x16, #:lo12:struct_obj_7 + 2]
- cbnz w0, .L128
- adrp x16, var_14
- ldrsb w0, [x16, #:lo12:var_14]
- cmp w0, #0
- cset x0, ne
- cbnz w0, .L128
- adrp x16, var_20
- ldrh w0, [x16, #:lo12:var_20]
- adrp x16, var_129
- strh w0, [x16, #:lo12:var_129]
- orr w0, wzr, #1
- cbnz w0, .L129
- orr w0, wzr, #1
- b .L129
-.L128:
- adrp x16, struct_obj_4 + 24
- ldrh w29, [x16, #:lo12:struct_obj_4 + 24]
- adrp x16, var_58
- ldrsb w5, [x16, #:lo12:var_58]
- sdiv w13, w29, w5
- msub w3, w13, w5, w29
- adrp x16, var_27
- ldrsh w4, [x16, #:lo12:var_27]
- orn w7, wzr, w4
- sdiv w2, w3, w7
- msub w0, w2, w7, w3
- ubfiz w0, w0, 0, 16
- adrp x16, struct_obj_9
- ldrsh w0, [x16, #:lo12:struct_obj_9]
- adrp x16, var_123
- strh w0, [x16, #:lo12:var_123]
- adrp x16, struct_obj_4 + 2
- ldrsb w0, [x16, #:lo12:struct_obj_4 + 2]
- cbz w0, .L129
- orr w0, wzr, #1
- cbz w0, .L129
- orr w0, wzr, #1
-.L129:
- adrp x16, struct_obj_9 + 20
- ldrsh w11, [x16, #:lo12:struct_obj_9 + 20]
- adrp x16, var_48
- ldrh w13, [x16, #:lo12:var_48]
- add w0, w11, w13
- orn w0, wzr, w0
- adrp x16, struct_obj_4 + 24
- ldrh w1, [x16, #:lo12:struct_obj_4 + 24]
- adrp x16, var_9
- ldrh w13, [x16, #:lo12:var_9]
- adrp x16, var_56
- ldrh w10, [x16, #:lo12:var_56]
- and w29, w10, #-97
- eon w7, w13, w29
- cbz w7, .L130
- adrp x16, struct_obj_3 + 2
- ldrh w11, [x16, #:lo12:struct_obj_3 + 2]
- cbz w11, .L131
- adrp x16, var_18
- ldrsb w13, [x16, #:lo12:var_18]
-.L131:
- orr w5, wzr, #1
- movz w15, #0, lsl #0
- adrp x16, var_64
- ldrsb w0, [x16, #:lo12:var_64]
- cmp w0, #0
- csel x17, x5, x15, ne
- cbnz w17, .L132
- adrp x16, var_28
- ldrsh w8, [x16, #:lo12:var_28]
-.L132:
- adrp x16, struct_obj_6
- ldrsh w7, [x16, #:lo12:struct_obj_6]
- bic w0, w1, w7
- adrp x16, var_143
- strb w0, [x16, #:lo12:var_143]
-.L130:
- adrp x16, struct_obj_10 + 6
- ldrsh w10, [x16, #:lo12:struct_obj_10 + 6]
- adrp x16, struct_obj_8 + 28
- ldrsh w15, [x16, #:lo12:struct_obj_8 + 28]
- sub w4, w10, w15
- adrp x16, struct_obj_5 + 6
- ldrsh w5, [x16, #:lo12:struct_obj_5 + 6]
- orr w16, wzr, #2147483647
- add w2, w5, w16
- cmp w4, w2, asr #11
- cset x0, lt
- sub w15, wzr, w0
- movz w3, #21384, lsl #0
- adrp x16, struct_obj_4 + 12
- ldrsb w14, [x16, #:lo12:struct_obj_4 + 12]
- adrp x16, struct_obj_4 + 8
- ldrsh w8, [x16, #:lo12:struct_obj_4 + 8]
- madd w7, w14, w8, wzr
- madd w5, w7, w3, wzr
- bic w15, w15, w5
- adrp x16, var_11
- ldrsh w17, [x16, #:lo12:var_11]
- movz w16, #28869, lsl #0
- orr w12, w17, w16
- adrp x16, struct_obj_10 + 4
- ldrsb w7, [x16, #:lo12:struct_obj_10 + 4]
- adrp x16, struct_obj_7 + 4
- ldrsb w9, [x16, #:lo12:struct_obj_7 + 4]
- adrp x16, var_31
- ldrsh w1, [x16, #:lo12:var_31]
- and w11, w9, w1
- orn w17, w7, w11
- orr w13, w12, w17
- cmp w15, w13
- cset x0, eq
- adrp x16, var_55
- strb w0, [x16, #:lo12:var_55]
- adrp x16, var_50
- ldrh w29, [x16, #:lo12:var_50]
- adrp x16, struct_obj_6 + 4
- ldrh w12, [x16, #:lo12:struct_obj_6 + 4]
- adrp x16, var_51
- ldrsh w11, [x16, #:lo12:var_51]
- movz w16, #58076, lsl #0
- eor w9, w29, w16
- adrp x16, struct_obj_2 + 2
- ldrh w10, [x16, #:lo12:struct_obj_2 + 2]
- adrp x16, struct_obj_8
- ldrh w11, [x16, #:lo12:struct_obj_8]
- sub w11, w11, #16384
- sub w11, w11, #954
- lsl w4, w10, w11
- eor w0, w9, w4
- adrp x16, var_8
- ldrh w1, [x16, #:lo12:var_8]
- sub w15, w1, #12288
- sub w15, w15, #2352
- asr w29, w0, w15
- adrp x16, var_45
- ldrsb w5, [x16, #:lo12:var_45]
- movz w16, #27168, lsl #0
- cmp w5, w16
- cset x12, gt
- movz w16, #32858, lsl #0
- cmp w12, w16
- cset x9, lt
- orr w0, wzr, w9, asr #3
- lsl w0, w29, w0
- sbfiz w0, w0, 0, 8
- cbz w0, .L127
- adrp x16, var_28
- ldrsh w0, [x16, #:lo12:var_28]
- adrp x16, var_29
- ldrh w0, [x16, #:lo12:var_29]
- cmp w0, #0
- cset x17, ne
- movz w10, #0, lsl #0
- movz w1, #0, lsl #0
- cmp w17, #0
- csel x0, x10, x1, ne
- eor w1, w0, #1
- adrp x16, var_47
- ldrsb w4, [x16, #:lo12:var_47]
- orr w0, w1, w4
- adrp x16, var_152
- strh w0, [x16, #:lo12:var_152]
-.L127:
- adrp x16, struct_obj_4
- ldrsh w0, [x16, #:lo12:struct_obj_4]
- cmp w0, #0
- cset x0, ne
- adrp x16, struct_obj_1 + 2
- ldrh w7, [x16, #:lo12:struct_obj_1 + 2]
- adrp x16, var_18
- ldrsb w29, [x16, #:lo12:var_18]
- cmp w7, w29
- cset x29, le
- adrp x16, var_7
- ldrsb w3, [x16, #:lo12:var_7]
- movz w16, #7701, lsl #0
- cmp w3, w16
- cset x2, ne
- and w0, w29, w2
- adrp x16, var_1
- ldrh w0, [x16, #:lo12:var_1]
- cbnz w0, .L133
- adrp x16, struct_obj_8 + 8
- ldrsb w0, [x16, #:lo12:struct_obj_8 + 8]
- cmp w0, #0
- cset x0, ne
- cbnz w0, .L133
- adrp x16, struct_obj_8 + 20
- ldrsh w0, [x16, #:lo12:struct_obj_8 + 20]
- cbnz w0, .L133
- adrp x16, var_49
- ldrsb w0, [x16, #:lo12:var_49]
- cmp w0, #0
- cset x0, ne
- cbnz w0, .L133
- orr w0, wzr, #1
- orr w2, wzr, #1
- adrp x16, var_29
- ldrh w11, [x16, #:lo12:var_29]
- cmp w11, #0
- csel x0, x0, x2, ne
- cbnz w0, .L133
- adrp x16, struct_obj_6 + 2
- ldrh w0, [x16, #:lo12:struct_obj_6 + 2]
- sbfiz w0, w0, 0, 16
- cmp w0, #0
- cset x0, eq
- cbnz w0, .L134
-.L133:
- adrp x16, var_48
- ldrh w0, [x16, #:lo12:var_48]
- cbnz w0, .L135
- adrp x16, var_31
- ldrsh w0, [x16, #:lo12:var_31]
- cmp w0, #0
- cset x0, ne
- cbnz w0, .L135
- adrp x16, struct_obj_8 + 18
- ldrsh w0, [x16, #:lo12:struct_obj_8 + 18]
- ubfiz w0, w0, 0, 16
- cbz w0, .L136
- adrp x16, var_25
- ldrsb w0, [x16, #:lo12:var_25]
- cmp w0, #0
- cset x0, eq
- b .L137
-.L136:
- movz w0, #0, lsl #0
- b .L137
-.L135:
- movz w0, #0, lsl #0
-.L137:
- eor w0, w0, #1
- cbz w0, .L138
-.L134:
- adrp x16, struct_obj_4 + 10
- ldrh w15, [x16, #:lo12:struct_obj_4 + 10]
- adrp x16, struct_obj_8 + 20
- ldrsh w6, [x16, #:lo12:struct_obj_8 + 20]
- orn w2, wzr, w6
- ubfiz w3, w2, 0, 16
- orn w9, wzr, w3
- sdiv w0, w15, w9
- adrp x16, var_156
- strb w0, [x16, #:lo12:var_156]
- adrp x16, var_15
- ldrh w2, [x16, #:lo12:var_15]
- adrp x16, struct_obj_8 + 26
- ldrsb w11, [x16, #:lo12:struct_obj_8 + 26]
- movz w16, #17017, lsl #0
- and w17, w11, w16
- sbfiz w29, w17, 0, 8
- adrp x16, struct_obj_1 + 2
- ldrh w14, [x16, #:lo12:struct_obj_1 + 2]
- adrp x16, var_39
- ldrh w10, [x16, #:lo12:var_39]
- sub w7, w10, #24576
- sub w7, w7, #3586
- lsl w1, w14, w7
- adrp x16, struct_obj_1 + 4
- ldrh w12, [x16, #:lo12:struct_obj_1 + 4]
- and w17, w1, w12
- sub w3, w17, #53248
- sub w3, w3, #2127
- asr w14, w29, w3
- lsl w13, w2, w14
- sbfiz w12, w13, 0, 8
- adrp x16, var_14
- ldrsb w8, [x16, #:lo12:var_14]
- adrp x16, struct_obj_4 + 12
- ldrsb w6, [x16, #:lo12:struct_obj_4 + 12]
- lsl w3, w8, w6
- ubfiz w6, w3, 0, 16
- movz w2, #19254, lsl #0
- movk w2, #42921, lsl #16
- adrp x16, struct_obj_8 + 30
- ldrsb w29, [x16, #:lo12:struct_obj_8 + 30]
- cmp w29, #5
- cset x14, gt
- madd w7, w14, w2, wzr
- adrp x16, struct_obj_4 + 16
- ldrsb w7, [x16, #:lo12:struct_obj_4 + 16]
- adrp x16, struct_obj_8 + 20
- ldrsh w6, [x16, #:lo12:struct_obj_8 + 20]
- adrp x16, var_54
- ldrsh w5, [x16, #:lo12:var_54]
- adrp x16, var_23
- ldrh w3, [x16, #:lo12:var_23]
- orr w16, wzr, #2147483647
- add w4, w5, w16
- and w3, w3, w4
- cbz w3, .L139
- adrp x16, var_11
- ldrsh w5, [x16, #:lo12:var_11]
- cbnz w5, .L140
- adrp x16, struct_obj_9 + 24
- ldrh w13, [x16, #:lo12:struct_obj_9 + 24]
- cmp w13, #0
- cset x13, ne
- cbz w13, .L139
-.L140:
- adrp x16, struct_obj_9
- ldrsh w9, [x16, #:lo12:struct_obj_9]
- cbz w9, .L139
- cbnz w7, .L139
- adrp x16, struct_obj_2 + 4
- ldrh w17, [x16, #:lo12:struct_obj_2 + 4]
- cmp w17, #0
- cset x17, ne
-.L139:
- adrp x16, struct_obj_6 + 6
- ldrsh w4, [x16, #:lo12:struct_obj_6 + 6]
- adrp x16, var_65
- ldrsh w17, [x16, #:lo12:var_65]
- sub w7, w4, w17
- adrp x16, struct_obj_4 + 10
- ldrh w3, [x16, #:lo12:struct_obj_4 + 10]
- sub w14, w3, #28672
- sub w14, w14, #2102
- lsl w29, w11, w14
- sub w0, w7, w29
- sbfiz w2, w0, 0, 8
- cbz w2, .L141
-.L141:
- adrp x16, struct_obj_2 + 4
- ldrh w29, [x16, #:lo12:struct_obj_2 + 4]
- cbnz w10, .L142
- adrp x16, struct_obj_4 + 26
- ldrsh w0, [x16, #:lo12:struct_obj_4 + 26]
- cmp w0, #0
- cset x0, ne
- b .L143
-.L142:
- orr w0, wzr, #1
-.L143:
- adrp x16, var_45
- ldrsb w1, [x16, #:lo12:var_45]
- movz w16, #15962, lsl #0
- orr w14, w1, w16
- adrp x16, struct_obj_9 + 24
- ldrh w10, [x16, #:lo12:struct_obj_9 + 24]
- movz w16, #64811, lsl #0
- eor w7, w10, w16
- orr w6, w14, w7
- cmp w29, w6
- cset x5, ge
- orn w9, wzr, w0
- ubfiz w29, w9, 0, 16
- cmp w5, w29
- b.gt .L144
- adrp x16, var_3
- ldrsb w0, [x16, #:lo12:var_3]
- adrp x16, struct_obj_9
- ldrsh w0, [x16, #:lo12:struct_obj_9]
- cmp w0, #40
- b.lt .L145
- adrp x16, struct_obj_6
- ldrsh w14, [x16, #:lo12:struct_obj_6]
- adrp x16, struct_obj_5 + 2
- ldrsh w13, [x16, #:lo12:struct_obj_5 + 2]
- sdiv w8, w14, w13
- msub w0, w8, w13, w14
- cmp w0, #0
- cset x29, ne
- b .L146
-.L145:
- orr w29, wzr, #1
-.L146:
- movz w6, #92, lsl #0
- movz w7, #0, lsl #0
- adrp x16, struct_obj_7 + 2
- ldrsh w17, [x16, #:lo12:struct_obj_7 + 2]
- and w10, w17, w29
- sub w9, w7, w10
- add w4, w9, #32
- asr w0, w6, w4
- adrp x16, var_178
- strh w0, [x16, #:lo12:var_178]
- adrp x16, struct_obj_4 + 4
- ldrsh w4, [x16, #:lo12:struct_obj_4 + 4]
- adrp x16, var_4
- ldrh w0, [x16, #:lo12:var_4]
- eor w4, w4, w0
- adrp x16, struct_obj_9 + 8
- ldrsh w29, [x16, #:lo12:struct_obj_9 + 8]
- eor w0, w4, w29
- adrp x16, var_3
- ldrsb w0, [x16, #:lo12:var_3]
- adrp x16, var_36
- ldrsh w0, [x16, #:lo12:var_36]
- movz w16, #55161, lsl #0
- cmp w0, w16
- cset x8, gt
- adrp x16, var_55
- ldrsb w13, [x16, #:lo12:var_55]
- add w0, w8, w13
- sbfiz w0, w0, 0, 8
- cmp w0, #0
- cset x0, eq
- orn w0, wzr, w0
- adrp x16, var_46
- strh w0, [x16, #:lo12:var_46]
- b .L147
-.L144:
- adrp x16, var_20
- ldrh w0, [x16, #:lo12:var_20]
- cmp w0, #0
- cset x7, ne
- adrp x16, struct_obj_6 + 2
- ldrh w17, [x16, #:lo12:struct_obj_6 + 2]
- sbfx w5, w17, 30, 2
- orr w0, w7, w5
-.L147:
- adrp x16, struct_obj_9 + 2
- ldrsb w0, [x16, #:lo12:struct_obj_9 + 2]
- cmp w0, #0
- cset x17, eq
- adrp x16, var_19
- ldrsb w10, [x16, #:lo12:var_19]
- orn w4, wzr, w10
- madd w0, w17, w4, wzr
- orn w0, wzr, w0
- cbz w0, .L138
- adrp x16, var_40
- ldrsb w0, [x16, #:lo12:var_40]
- cmp w0, #0
- cset x0, ne
- cbz w0, .L138
- adrp x16, var_48
- ldrh w0, [x16, #:lo12:var_48]
-.L138:
- adrp x16, struct_obj_7 + 2
- ldrsh w0, [x16, #:lo12:struct_obj_7 + 2]
- cbnz w0, .L148
- adrp x16, var_57
- ldrsb w0, [x16, #:lo12:var_57]
- cmp w0, #0
- cset x5, ne
- b .L149
-.L148:
- movz w5, #0, lsl #0
-.L149:
- adrp x16, struct_obj_8 + 2
- ldrsh w10, [x16, #:lo12:struct_obj_8 + 2]
- tbz w10, #5, .L150
- adrp x16, var_1
- ldrh w9, [x16, #:lo12:var_1]
- adrp x16, struct_obj_2 + 6
- ldrsh w3, [x16, #:lo12:struct_obj_2 + 6]
- sub w8, w9, w3
- sbfiz w9, w8, 0, 16
- cmp w9, #0
- cset x10, eq
- b .L151
-.L150:
- movz w10, #0, lsl #0
-.L151:
- adrp x16, struct_obj_8 + 12
- ldrsb w9, [x16, #:lo12:struct_obj_8 + 12]
- adrp x16, struct_obj_9 + 10
- ldrh w0, [x16, #:lo12:struct_obj_9 + 10]
- orr w7, w9, w0
- adrp x16, var_11
- ldrsh w3, [x16, #:lo12:var_11]
- ubfiz w0, w3, 0, 16
- and w11, w7, w0
- orn w14, wzr, w11
- orr w16, wzr, #2147483647
- add w4, w14, w16
- adrp x16, var_53
- ldrsh w6, [x16, #:lo12:var_53]
- adrp x16, struct_obj_8
- ldrh w7, [x16, #:lo12:struct_obj_8]
- cmp w6, w7
- cset x12, gt
- sub w8, wzr, w3
- madd w0, w12, w8, wzr
- madd w6, w5, w0, wzr
- asr w0, w4, w6
- and w0, w0, w10
- cbz w0, .L100
- adrp x16, var_1
- ldrh w4, [x16, #:lo12:var_1]
- adrp x16, struct_obj_4 + 26
- ldrsh w1, [x16, #:lo12:struct_obj_4 + 26]
- movz w0, #21555, lsl #0
- adrp x16, var_39
- strh w0, [x16, #:lo12:var_39]
- sub w0, wzr, w4
- adrp x16, var_46
- strh w0, [x16, #:lo12:var_46]
- adrp x16, var_65
- ldrsh w0, [x16, #:lo12:var_65]
- cbz w0, .L152
- adrp x16, var_7
- ldrsb w0, [x16, #:lo12:var_7]
- cmp w0, #0
- cset x13, ne
- b .L153
-.L152:
- movz w13, #0, lsl #0
-.L153:
- orr w3, wzr, #1
- movz w17, #0, lsl #0
- cmp w13, #0
- csel x0, x3, x17, ne
- adrp x16, var_5
- ldrh w0, [x16, #:lo12:var_5]
- cbnz w0, .L154
- adrp x16, struct_obj_2 + 2
- ldrh w0, [x16, #:lo12:struct_obj_2 + 2]
- cbz w0, .L155
- adrp x16, var_43
- ldrh w0, [x16, #:lo12:var_43]
- cmp w0, #0
- cset x0, ne
- b .L156
-.L155:
- movz w0, #0, lsl #0
- b .L156
-.L154:
- orr w0, wzr, #1
-.L156:
- cbnz w0, .L157
- movz w0, #0, lsl #0
- cbz w0, .L157
- adrp x16, struct_obj_4
- ldrsh w0, [x16, #:lo12:struct_obj_4]
- sbfiz w0, w0, 0, 8
-.L157:
- orr w3, wzr, #2147418112
- adrp x16, var_4
- ldrh w2, [x16, #:lo12:var_4]
- movn w16, #6281, lsl #0
- orr w0, w2, w16
- add w15, w0, #4096
- add w15, w15, #130
- lsl w0, w3, w15
- orn w0, wzr, w0
- adrp x16, var_49
- strb w0, [x16, #:lo12:var_49]
- adrp x16, var_54
- ldrsh w3, [x16, #:lo12:var_54]
- adrp x16, struct_obj_8
- ldrh w8, [x16, #:lo12:struct_obj_8]
- eor w5, w3, w8
- eor w0, w5, w3
- sbfiz w12, w0, 0, 8
- adrp x16, struct_obj_8 + 4
- ldrsb w13, [x16, #:lo12:struct_obj_8 + 4]
- orn w13, wzr, w13
- movn w16, #20559, lsl #0
- orr w11, w13, w16
- movn w16, #26, lsl #0
- and w2, w11, w16
- sbfiz w13, w2, 0, 16
- and w0, w12, w13
- adrp x16, struct_obj_9 + 24
- ldrh w0, [x16, #:lo12:struct_obj_9 + 24]
- adrp x16, var_43
- ldrh w2, [x16, #:lo12:var_43]
- cmp w2, #0
- cset x1, eq
- adrp x16, var_7
- ldrsb w17, [x16, #:lo12:var_7]
- cmp w1, w17
- cset x17, le
- adrp x16, var_28
- ldrsh w14, [x16, #:lo12:var_28]
- movz w16, #24924, lsl #0
- and w13, w14, w16
- adrp x16, struct_obj_7
- ldrsb w5, [x16, #:lo12:struct_obj_7]
- orn w3, w13, w5
- movz w16, #72, lsl #0
- eor w15, w3, w16
- cmp w17, w15
- cset x12, gt
- lsl w0, w0, w12
- cbz w0, .L158
- adrp x16, struct_obj_10 + 6
- ldrsh w13, [x16, #:lo12:struct_obj_10 + 6]
- adrp x16, struct_obj_4 + 4
- ldrsh w29, [x16, #:lo12:struct_obj_4 + 4]
- adrp x16, var_41
- ldrh w12, [x16, #:lo12:var_41]
- cbnz w12, .L159
- adrp x16, var_4
- ldrh w1, [x16, #:lo12:var_4]
- cmp w1, #0
- cset x14, ne
- cbnz w14, .L159
- adrp x16, var_1
- ldrh w1, [x16, #:lo12:var_1]
- cmp w1, #0
- cset x7, eq
- cbnz w7, .L159
- orr w15, wzr, #1
- orr w17, wzr, #1
- cmp w13, #0
- csel x3, x15, x17, ne
- eor w8, w3, #1
- cbz w8, .L159
- adrp x16, var_42
- ldrsb w4, [x16, #:lo12:var_42]
- ubfiz w7, w4, 0, 16
- cbnz w7, .L159
- cmp w29, #0
- cset x0, ne
-.L159:
- adrp x16, struct_obj_10 + 4
- ldrsb w0, [x16, #:lo12:struct_obj_10 + 4]
- movn w16, #30699, lsl #0
- cmp w0, w16
- cset x14, ne
- adrp x16, var_58
- ldrsb w5, [x16, #:lo12:var_58]
- sub w0, w14, w5
- orn w0, wzr, w0
-.L158:
- adrp x16, struct_obj_3 + 2
- ldrh w0, [x16, #:lo12:struct_obj_3 + 2]
- movn w16, #11885, lsl #0
- and w0, w0, w16
- sub w0, wzr, w0
- adrp x16, var_217
- strb w0, [x16, #:lo12:var_217]
- adrp x16, struct_obj_8
- ldrh w6, [x16, #:lo12:struct_obj_8]
- adrp x16, var_54
- ldrsh w8, [x16, #:lo12:var_54]
- cbz w8, .L160
- adrp x16, struct_obj_10 + 6
- ldrsh w2, [x16, #:lo12:struct_obj_10 + 6]
- cbnz w2, .L161
- adrp x16, struct_obj_8 + 24
- ldrh w5, [x16, #:lo12:struct_obj_8 + 24]
- cmp w5, #0
- cset x7, ne
- cbnz w7, .L161
-.L160:
- adrp x16, struct_obj_8 + 20
- ldrsh w8, [x16, #:lo12:struct_obj_8 + 20]
- cbz w8, .L162
- adrp x16, struct_obj_3 + 4
- ldrh w13, [x16, #:lo12:struct_obj_3 + 4]
- cmp w13, #0
- cset x11, ne
- b .L163
-.L162:
- movz w11, #0, lsl #0
-.L163:
- eor w7, w11, #1
- cbz w7, .L164
-.L161:
- adrp x16, struct_obj_4 + 2
- ldrsb w1, [x16, #:lo12:struct_obj_4 + 2]
- cmp w1, #0
- cset x14, eq
- cbnz w14, .L165
- orr w7, wzr, #1
- b .L166
-.L165:
- orr w7, wzr, #1
- b .L166
-.L164:
- movz w7, #0, lsl #0
-.L166:
- adrp x16, struct_obj_1
- ldrsh w5, [x16, #:lo12:struct_obj_1]
- movz w16, #43755, lsl #0
- eor w11, w5, w16
- adrp x16, var_29
- ldrh w4, [x16, #:lo12:var_29]
- eor w3, w4, #124
- and w17, w11, w3
- eor w0, w17, #-128
- movz w16, #32295, lsl #0
- and w13, w0, w16
- movz w16, #110, lsl #0
- eor w0, w13, w16
- orn w2, wzr, w0
- orr w16, wzr, #2147483647
- add w4, w2, w16
- adrp x16, struct_obj_8 + 16
- ldrsb w2, [x16, #:lo12:struct_obj_8 + 16]
- cmn w2, #601
- cset x11, le
- cmp w6, #0
- cset x10, eq
- cmp w11, w10
- cset x8, ne
- cmp w13, #0
- cset x3, lt
- cmp w8, w3
- cset x8, gt
- asr w9, w4, w8
- cmp w7, w9
- b.gt .L167
- adrp x16, var_65
- strh w13, [x16, #:lo12:var_65]
- adrp x16, struct_obj_4 + 16
- ldrsb w0, [x16, #:lo12:struct_obj_4 + 16]
- orr w16, wzr, #2147483647
- add w15, w0, w16
- adrp x16, var_18
- ldrsb w13, [x16, #:lo12:var_18]
- adrp x16, struct_obj_4 + 8
- ldrsh w1, [x16, #:lo12:struct_obj_4 + 8]
- movz w16, #68, lsl #0
- orr w14, w1, w16
- adrp x16, struct_obj_1 + 4
- ldrh w1, [x16, #:lo12:struct_obj_1 + 4]
- movn w16, #16241, lsl #0
- eor w5, w1, w16
- and w11, w14, w5
- add w9, w11, #57344
- add w9, w9, #1482
- lsl w13, w13, w9
- sub w10, w13, #5042176
- sub w10, w10, #4072
- asr w0, w15, w10
- adrp x16, var_32
- ldrh w0, [x16, #:lo12:var_32]
- movn w16, #22, lsl #0
- and w0, w0, w16
- sub w0, wzr, w0
- b .L100
-.L167:
- adrp x16, var_50
- ldrh w1, [x16, #:lo12:var_50]
- orn w17, wzr, w1
- sbfiz w14, w17, 0, 8
- adrp x16, var_40
- ldrsb w17, [x16, #:lo12:var_40]
- orr w4, w17, #6
- sbfiz w8, w4, 0, 16
- bic w10, w14, w8
- adrp x16, struct_obj_9 + 20
- ldrsh w1, [x16, #:lo12:struct_obj_9 + 20]
- and w0, w2, w1
- movz w16, #61009, lsl #0
- orr w12, w0, w16
- sub w12, wzr, w12
- orr w16, wzr, #2147483647
- add w14, w12, w16
- movn w5, #52, lsl #0
- adrp x16, struct_obj_1 + 6
- ldrsh w11, [x16, #:lo12:struct_obj_1 + 6]
- madd w3, w11, w5, wzr
- madd w8, w13, w3, wzr
- cmp w8, #0
- cset x29, eq
- asr w1, w14, w29
- cmp w10, w1
- cset x0, le
- adrp x16, var_234
- strh w0, [x16, #:lo12:var_234]
- adrp x16, var_23
- ldrh w0, [x16, #:lo12:var_23]
- cbnz w0, .L100
- adrp x16, var_2
- ldrh w0, [x16, #:lo12:var_2]
-.L100:
- adrp x16, struct_obj_9
- ldrsh w0, [x16, #:lo12:struct_obj_9]
- movn w16, #48877, lsl #0
- and w0, w0, w16
- movn w16, #30503, lsl #0
- eor w0, w0, w16
- movz w16, #47, lsl #0
- tst w0, w16
- b.eq .L168
- adrp x16, var_16
- ldrh w0, [x16, #:lo12:var_16]
- cbz w0, .L169
- adrp x16, var_37
- ldrsb w0, [x16, #:lo12:var_37]
- cmp w0, #0
- cset x29, ne
- b .L170
-.L169:
- movz w29, #0, lsl #0
-.L170:
- adrp x16, var_15
- ldrh w17, [x16, #:lo12:var_15]
- adrp x16, var_65
- ldrsh w1, [x16, #:lo12:var_65]
- ubfiz w0, w1, 0, 16
- add w10, w0, w29
- cmp w17, w10
- cset x6, le
- orn w10, wzr, w6
- movz w16, #32708, lsl #0
- cmp w10, w16
- cset x6, lt
- adrp x16, var_37
- ldrsb w0, [x16, #:lo12:var_37]
- add w13, w0, w6
- cmn w13, #1594
- cset x4, ge
- movz w16, #56889, lsl #0
- eor w8, w1, w16
- orr w16, wzr, #2147483647
- add w6, w8, w16
- adrp x16, struct_obj_9 + 20
- ldrsh w14, [x16, #:lo12:struct_obj_9 + 20]
- sub w29, w14, #12288
- sub w29, w29, #1239
- lsl w15, w0, w29
- sub w8, w15, #15200256
- sub w8, w8, #4072
- asr w11, w6, w8
- orn w5, wzr, w11
- orr w16, wzr, #2147483647
- add w11, w5, w16
- adrp x16, struct_obj_1 + 6
- ldrsh w29, [x16, #:lo12:struct_obj_1 + 6]
- movn w16, #29412, lsl #0
- orr w10, w29, w16
- adrp x16, var_61
- ldrsb w12, [x16, #:lo12:var_61]
- orn w7, w10, w12
- ubfiz w2, w7, 0, 16
- sub w10, w2, #32768
- sub w10, w10, #4095
- lsl w9, w11, w10
- adrp x16, var_22
- ldrsb w5, [x16, #:lo12:var_22]
- movn w16, #10106, lsl #0
- and w11, w5, w16
- adrp x16, struct_obj_10
- ldrsb w12, [x16, #:lo12:struct_obj_10]
- movn w16, #7265, lsl #0
- orr w6, w12, w16
- add w10, w6, #4096
- add w10, w10, #3136
- lsl w12, w11, w10
- adrp x16, var_28
- ldrsh w3, [x16, #:lo12:var_28]
- sbfiz w13, w3, 0, 8
- adrp x16, struct_obj_9 + 22
- ldrh w8, [x16, #:lo12:struct_obj_9 + 22]
- sub w10, w8, #24576
- sub w10, w10, #2375
- asr w11, w4, w10
- and w5, w13, w11
- lsl w17, w12, w5
- adrp x16, struct_obj_8 + 24
- ldrh w8, [x16, #:lo12:struct_obj_8 + 24]
- movz w16, #31750, lsl #0
- eor w15, w8, w16
- sbfiz w2, w15, 0, 16
- orr w16, wzr, #2147483647
- add w7, w2, w16
- adrp x16, struct_obj_4 + 22
- ldrh w11, [x16, #:lo12:struct_obj_4 + 22]
- sbfiz w8, w11, 0, 8
- orn w6, wzr, w8
- add w14, w6, #113
- lsl w29, w7, w14
- movz w16, #45511, lsl #0
- movk w16, #32767, lsl #16
- sub w4, w29, w16
- lsl w2, w17, w4
- orr w0, w9, w2
- sbfiz w7, w0, 0, 8
- adrp x16, struct_obj_1
- ldrsh w5, [x16, #:lo12:struct_obj_1]
- adrp x16, var_18
- ldrsb w6, [x16, #:lo12:var_18]
- orn w8, wzr, w6
- adrp x16, var_38
- ldrsb w12, [x16, #:lo12:var_38]
- eon w12, w8, w12
- bic w1, w5, w12
- adrp x16, struct_obj_8 + 6
- ldrsh w4, [x16, #:lo12:struct_obj_8 + 6]
- movn w16, #74, lsl #0
- orr w15, w4, w16
- orn w29, wzr, w15
- madd w1, w1, w29, wzr
- adrp x16, var_49
- strb w1, [x16, #:lo12:var_49]
- adrp x16, var_30
- ldrh w9, [x16, #:lo12:var_30]
- cbnz w9, .L171
- adrp x16, var_17
- ldrsh w8, [x16, #:lo12:var_17]
- movz w16, #58592, lsl #0
- and w12, w8, w16
- adrp x16, struct_obj_8 + 18
- ldrsh w3, [x16, #:lo12:struct_obj_8 + 18]
- movz w16, #32236, lsl #0
- eor w9, w3, w16
- eor w9, w12, w9
- cmp w9, #0
- cset x1, eq
- sub w17, wzr, w1
- cmp w17, #0
- cset x13, eq
- adrp x16, struct_obj_8
- strh w13, [x16, #:lo12:struct_obj_8]
- adrp x16, var_64
- ldrsb w15, [x16, #:lo12:var_64]
- adrp x16, var_32
- ldrh w29, [x16, #:lo12:var_32]
- adrp x16, struct_obj_9 + 24
- ldrh w11, [x16, #:lo12:struct_obj_9 + 24]
- adrp x16, var_17
- ldrsh w6, [x16, #:lo12:var_17]
- sbfiz w8, w6, 0, 8
- adrp x16, struct_obj_8 + 26
- ldrsb w14, [x16, #:lo12:struct_obj_8 + 26]
- and w6, w14, w11
- and w4, w8, w6
- orn w4, wzr, w4
- cbz w4, .L172
- adrp x16, var_16
- ldrh w13, [x16, #:lo12:var_16]
- adrp x16, var_58
- ldrsb w2, [x16, #:lo12:var_58]
- and w29, w13, w2
- sbfiz w17, w29, 0, 8
- movn w16, #29487, lsl #0
- orr w12, w17, w16
- ubfiz w10, w15, 0, 16
- cbnz w10, .L173
- adrp x16, struct_obj_4 + 18
- ldrsh w6, [x16, #:lo12:struct_obj_4 + 18]
- cbnz w6, .L173
- adrp x16, var_10
- ldrh w14, [x16, #:lo12:var_10]
- cmp w14, #0
- cset x8, ne
- cbnz w8, .L173
- adrp x16, struct_obj_4 + 2
- ldrsb w0, [x16, #:lo12:struct_obj_4 + 2]
-.L173:
- movz w15, #26, lsl #0
- adrp x16, var_297
- strh w15, [x16, #:lo12:var_297]
- adrp x16, var_53
- ldrsh w17, [x16, #:lo12:var_53]
- adrp x16, var_42
- ldrsb w6, [x16, #:lo12:var_42]
- adrp x16, var_65
- strh w6, [x16, #:lo12:var_65]
- adrp x16, var_6
- ldrh w0, [x16, #:lo12:var_6]
- adrp x16, var_15
- ldrh w1, [x16, #:lo12:var_15]
- orn w12, w0, w1
- adrp x16, var_8
- ldrh w2, [x16, #:lo12:var_8]
- movn w16, #90, lsl #0
- eor w1, w2, w16
- b .L174
-.L172:
- orr w14, wzr, #1
- movz w13, #0, lsl #0
- adrp x16, struct_obj_8 + 18
- ldrsh w8, [x16, #:lo12:struct_obj_8 + 18]
- cmp w8, #0
- csel x9, x14, x13, ne
- cbz w9, .L174
- adrp x16, struct_obj_2 + 6
- ldrsh w5, [x16, #:lo12:struct_obj_2 + 6]
- cbz w5, .L175
- adrp x16, var_20
- ldrh w8, [x16, #:lo12:var_20]
- cmp w8, #0
- cset x3, ne
-.L175:
- adrp x16, var_24
- ldrsh w11, [x16, #:lo12:var_24]
- sbfiz w8, w11, 0, 8
- cbnz w8, .L176
-.L176:
-.L174:
- adrp x16, struct_obj_6
- ldrsh w6, [x16, #:lo12:struct_obj_6]
- and w3, w6, w7
- adrp x16, var_12
- ldrh w8, [x16, #:lo12:var_12]
- bic w14, w3, w8
- orn w5, wzr, w14, lsl #15
- cbz w5, .L177
- movz w4, #1346, lsl #0
- adrp x16, var_48
- ldrh w12, [x16, #:lo12:var_48]
- madd w5, w12, w4, wzr
- sbfiz w15, w5, 0, 8
- cmp w15, w7
- cset x13, ne
- movz w16, #19262, lsl #0
- cmp w13, w16
- cset x29, lt
- cbz w29, .L177
- adrp x16, var_7
- ldrsb w15, [x16, #:lo12:var_7]
- movn w13, #42, lsl #0
- adrp x16, struct_obj_4 + 12
- ldrsb w2, [x16, #:lo12:struct_obj_4 + 12]
- adrp x16, struct_obj_8 + 16
- ldrsb w17, [x16, #:lo12:struct_obj_8 + 16]
- madd w15, w2, w17, wzr
- madd w29, w15, w13, wzr
- movz w12, #86, lsl #0
- madd w5, w6, w12, wzr
- orr w0, wzr, w5, lsr #31
- sxtw x13, w5
- movz x12, #51543, lsl #0
- movk x12, #15108, lsl #16
- madd x4, x13, x12, xzr
- orr x1, xzr, x4, asr #32
- add w4, w0, w1, asr #24
- madd w10, w29, w4, wzr
- orr w3, wzr, w10, lsl #24
- cmp w3, #0
- cset x8, eq
- adrp x16, var_314
- strb w8, [x16, #:lo12:var_314]
- adrp x16, struct_obj_7 + 2
- ldrsh w10, [x16, #:lo12:struct_obj_7 + 2]
- sbfiz w14, w10, 0, 8
- cmp w14, #1
- cset x15, lt
- orn w3, wzr, w15
- orr w14, wzr, #1
- cbz w14, .L178
- orr w29, wzr, #1
- b .L179
-.L178:
- movz w29, #0, lsl #0
-.L179:
- b .L180
-.L177:
- adrp x16, var_28
- ldrsh w0, [x16, #:lo12:var_28]
-.L180:
- adrp x16, var_12
- ldrh w10, [x16, #:lo12:var_12]
- adrp x16, var_62
- ldrh w1, [x16, #:lo12:var_62]
- eor w5, w10, w1
- adrp x16, struct_obj_10 + 6
- ldrsh w12, [x16, #:lo12:struct_obj_10 + 6]
- adrp x16, struct_obj_2
- ldrsh w8, [x16, #:lo12:struct_obj_2]
- orr w14, w12, w8
- orr w1, w5, w14
- movz w16, #6229, lsl #0
- orr w17, w1, w16
- ubfiz w8, w17, 0, 16
- adrp x16, struct_obj_3 + 6
- ldrsh w11, [x16, #:lo12:struct_obj_3 + 6]
- orr w2, w11, #8
- orn w2, wzr, w2
- movn w16, #3193, lsl #0
- eor w29, w2, w16
- adrp x16, var_8
- ldrh w0, [x16, #:lo12:var_8]
- adrp x16, var_25
- ldrsb w9, [x16, #:lo12:var_25]
- and w11, w0, w9
- movn w16, #12881, lsl #0
- and w13, w11, w16
- orn w15, w29, w13
- and w14, w8, w15
- cbnz w14, .L181
- adrp x16, var_46
- ldrh w5, [x16, #:lo12:var_46]
- adrp x16, struct_obj_8 + 2
- ldrsh w10, [x16, #:lo12:struct_obj_8 + 2]
- adrp x16, var_40
- ldrsb w5, [x16, #:lo12:var_40]
- adrp x16, var_22
- ldrsb w6, [x16, #:lo12:var_22]
- sdiv w29, w5, w6
- msub w3, w29, w6, w5
- eor w1, w10, w3
-.L181:
- adrp x16, var_41
- ldrh w10, [x16, #:lo12:var_41]
- adrp x16, struct_obj_4 + 24
- ldrh w3, [x16, #:lo12:struct_obj_4 + 24]
- adrp x16, struct_obj_4 + 12
- ldrsb w4, [x16, #:lo12:struct_obj_4 + 12]
- cbz w4, .L182
- cmp w3, #0
- cset x17, ne
- b .L183
-.L182:
- movz w17, #0, lsl #0
-.L183:
- adrp x16, var_2
- ldrh w10, [x16, #:lo12:var_2]
- adrp x16, var_16
- ldrh w1, [x16, #:lo12:var_16]
- eor w2, w10, w1
- movz w16, #40083, lsl #0
- and w29, w1, w16
- sbfiz w5, w29, 0, 8
- cmp w2, w5
- cset x29, lt
- movz w16, #14594, lsl #0
- cmp w29, w16
- cset x14, le
- adrp x16, var_35
- ldrh w11, [x16, #:lo12:var_35]
- sbfiz w29, w11, 0, 8
- movn w16, #31724, lsl #0
- cmp w29, w16
- cset x13, ne
- movz w6, #55455, lsl #0
- sdiv w1, w6, w17
- cmp w13, w1
- cset x8, le
- sbfiz w17, w0, 0, 8
- sub w6, wzr, w17
- orr w29, wzr, #-9
- sdiv w17, w6, w29
- msub w9, w17, w29, w6
- add w17, w9, #10
- asr w6, w8, w17
- sbfiz w11, w6, 0, 8
- cmp w14, w11
- cset x13, ne
- adrp x16, var_358
- strh w13, [x16, #:lo12:var_358]
- b .L184
-.L171:
- adrp x16, var_33
- ldrh w8, [x16, #:lo12:var_33]
- movz w16, #7439, lsl #0
- and w6, w8, w16
- orn w4, wzr, w6
- cbz w4, .L185
- adrp x16, var_27
- ldrsh w4, [x16, #:lo12:var_27]
- adrp x16, struct_obj_9 + 24
- ldrh w15, [x16, #:lo12:struct_obj_9 + 24]
- cmp w4, w15, lsl #8
- cset x4, ne
- b .L186
-.L185:
- movz w4, #0, lsl #0
-.L186:
- orr w29, wzr, #31
- movz w15, #4200, lsl #0
- adrp x16, struct_obj_10
- ldrsb w13, [x16, #:lo12:struct_obj_10]
- madd w15, w13, w15, wzr
- madd w9, w15, w29, wzr
- adrp x16, var_40
- ldrsb w15, [x16, #:lo12:var_40]
- sub w10, wzr, w15
- orn w0, wzr, w10
- madd w15, w9, w0, wzr
- sub w1, wzr, w15
- adrp x16, struct_obj_8 + 18
- ldrsh w2, [x16, #:lo12:struct_obj_8 + 18]
- sbfiz w15, w2, 0, 8
- cmp w15, #0
- cset x14, eq
- adrp x16, var_36
- ldrsh w5, [x16, #:lo12:var_36]
- movz w16, #18436, lsl #0
- and w11, w5, w16
- cmp w14, w11
- cset x6, ge
- cmp w4, w6
- cset x10, lt
- cmp w1, w10
- b.lt .L187
- adrp x16, var_8
- ldrh w2, [x16, #:lo12:var_8]
- adrp x16, struct_obj_9 + 10
- ldrh w12, [x16, #:lo12:struct_obj_9 + 10]
- cbz w12, .L188
- adrp x16, var_20
- ldrh w9, [x16, #:lo12:var_20]
- cmp w9, #0
- cset x1, ne
- b .L189
-.L188:
- movz w1, #0, lsl #0
-.L189:
- orr w2, wzr, #1
- orr w0, wzr, #1
- cmp w1, #0
- csel x2, x2, x0, ne
- cbnz w2, .L190
- adrp x16, struct_obj_9 + 22
- ldrh w3, [x16, #:lo12:struct_obj_9 + 22]
- cmp w3, #0
- cset x11, ne
- b .L191
-.L190:
- orr w11, wzr, #1
-.L191:
- movz w6, #29648, lsl #0
- movk w6, #1081, lsl #16
- asr w29, w6, w11
- adrp x16, var_240
- strb w29, [x16, #:lo12:var_240]
- movz w5, #61679, lsl #0
- adrp x16, var_10
- ldrh w4, [x16, #:lo12:var_10]
- madd w4, w4, w5, wzr
- adrp x16, var_3
- ldrsb w3, [x16, #:lo12:var_3]
- movn w12, #38, lsl #0
- sdiv w5, w3, w12
- msub w3, w5, w12, w3
- cmp w4, w3
- cset x15, gt
- movz w2, #90, lsl #0
- adrp x16, var_14
- ldrsb w4, [x16, #:lo12:var_14]
- sdiv w12, w2, w4
- orr w17, w15, w12, asr #28
- adrp x16, struct_obj_8 + 8
- ldrsb w8, [x16, #:lo12:struct_obj_8 + 8]
- adrp x16, struct_obj_9 + 10
- ldrh w10, [x16, #:lo12:struct_obj_9 + 10]
- cmp w8, w10
- cset x10, gt
- cmn w10, #57
- cset x5, ge
- adrp x16, var_62
- ldrh w6, [x16, #:lo12:var_62]
- movz w16, #5083, lsl #0
- orr w15, w6, w16
- orn w3, wzr, w15
- sdiv w6, w5, w3
- cmp w17, w6
- cset x6, lt
- sub w5, wzr, w6
- adrp x16, var_241
- strh w5, [x16, #:lo12:var_241]
- adrp x16, struct_obj_4 + 26
- ldrsh w12, [x16, #:lo12:struct_obj_4 + 26]
- adrp x16, var_33
- ldrh w9, [x16, #:lo12:var_33]
- cmn w9, #2638
- cset x10, ge
- movz w16, #65439, lsl #0
- movk w16, #127, lsl #16
- cmp w10, w16
- cset x17, lt
- adrp x16, var_59
- ldrh w11, [x16, #:lo12:var_59]
- orr w0, w11, #48
- sbfiz w8, w0, 0, 8
- orr w16, wzr, #2147483647
- add w29, w8, w16
- and w15, w12, w7
- orn w15, wzr, w15
- add w13, w15, #76
- lsl w4, w29, w13
- ubfiz w15, w4, 0, 16
- cmp w17, w15
- cset x29, ne
- adrp x16, struct_obj_9 + 10
- strh w29, [x16, #:lo12:struct_obj_9 + 10]
- adrp x16, var_22
- ldrsb w13, [x16, #:lo12:var_22]
- sub w2, w9, #36864
- sub w2, w2, #3417
- asr w12, w13, w2
- sbfiz w3, w12, 0, 8
- orr w15, wzr, w3, lsr #31
- sxtw x5, w3
- movz x0, #20745, lsl #0
- movk x0, #21032, lsl #16
- madd x17, x5, x0, xzr
- orr x4, xzr, x17, asr #32
- add w4, w15, w4, asr #13
- adrp x16, struct_obj_8 + 4
- ldrsb w1, [x16, #:lo12:struct_obj_8 + 4]
- adrp x16, struct_obj_6 + 4
- ldrh w15, [x16, #:lo12:struct_obj_6 + 4]
- orr w17, w15, #-127
- orr w14, w1, w17
- adrp x16, var_7
- ldrsb w6, [x16, #:lo12:var_7]
- adrp x16, var_1
- ldrh w1, [x16, #:lo12:var_1]
- and w5, w6, w1
- movz w16, #18007, lsl #0
- and w17, w5, w16
- eon w29, w14, w17
- adrp x16, var_57
- strb w29, [x16, #:lo12:var_57]
- adrp x16, struct_obj_9 + 20
- ldrsh w9, [x16, #:lo12:struct_obj_9 + 20]
-.L187:
- adrp x16, var_20
- ldrh w29, [x16, #:lo12:var_20]
- sbfiz w10, w29, 0, 8
- sub w3, wzr, w10
- adrp x16, struct_obj_8 + 2
- ldrsh w1, [x16, #:lo12:struct_obj_8 + 2]
- adrp x16, struct_obj_9 + 2
- ldrsb w0, [x16, #:lo12:struct_obj_9 + 2]
- eor w8, w1, w0
- adrp x16, var_45
- ldrsb w12, [x16, #:lo12:var_45]
- movz w16, #58, lsl #0
- eor w0, w12, w16
- add w4, w0, #128
- lsl w29, w8, w4
- adrp x16, var_31
- ldrsh w9, [x16, #:lo12:var_31]
- cmp w29, w9
- cset x11, eq
- adrp x16, struct_obj_1 + 2
- ldrh w2, [x16, #:lo12:struct_obj_1 + 2]
- movz w16, #37360, lsl #0
- orr w4, w2, w16
- adrp x16, var_5
- ldrh w8, [x16, #:lo12:var_5]
- orn w8, w4, w8
- cmp w8, #8
- cset x17, le
- eor w12, w11, w17
- cmp w3, w12
- b.le .L192
- adrp x16, var_58
- ldrsb w9, [x16, #:lo12:var_58]
- cbz w9, .L193
- adrp x16, struct_obj_8 + 6
- ldrsh w8, [x16, #:lo12:struct_obj_8 + 6]
- cmp w8, #0
- cset x12, ne
- b .L194
-.L193:
- movz w12, #0, lsl #0
-.L194:
- movz w13, #20736, lsl #0
- movk w13, #64035, lsl #16
- orr w14, wzr, #-63
- adrp x16, struct_obj_8 + 8
- ldrsb w11, [x16, #:lo12:struct_obj_8 + 8]
- madd w8, w11, w9, wzr
- orn w10, wzr, w8
- madd w14, w10, w14, wzr
- sdiv w1, w13, w14
- adrp x16, var_22
- ldrsb w10, [x16, #:lo12:var_22]
- add w5, w10, #36
- adrp x16, struct_obj_4 + 24
- ldrh w15, [x16, #:lo12:struct_obj_4 + 24]
- cmp w15, w12
- cset x15, gt
- cmp w5, w15
- cset x14, lt
- and w17, w1, w14
- adrp x16, var_52
- ldrsh w5, [x16, #:lo12:var_52]
- sbfiz w29, w5, 0, 8
- adrp x16, struct_obj_4 + 26
- ldrsh w4, [x16, #:lo12:struct_obj_4 + 26]
- sub w0, w4, #12288
- sub w0, w0, #1655
- movn w12, #37, lsl #0
- adrp x16, struct_obj_9 + 4
- ldrsh w15, [x16, #:lo12:struct_obj_9 + 4]
- sub w8, wzr, w15
- sub w12, w12, w8
- add w15, w0, w12
- sub w15, w15, #16384
- sub w15, w15, #223
- movn w16, #27, lsl #0
- eor w6, w17, w16
- orn w13, wzr, w6
- movz w16, #28048, lsl #0
- orr w8, w13, w16
- sbfiz w10, w8, 0, 8
- eor w0, w15, w10
- adrp x16, struct_obj_9 + 24
- strh w0, [x16, #:lo12:struct_obj_9 + 24]
- adrp x16, var_16
- ldrh w8, [x16, #:lo12:var_16]
- adrp x16, var_58
- ldrsb w1, [x16, #:lo12:var_58]
- adrp x16, struct_obj_4 + 10
- ldrh w6, [x16, #:lo12:struct_obj_4 + 10]
- sub w11, w6, #28672
- sub w11, w11, #2095
- asr w9, w1, w11
- lsl w8, w8, w17
- sub w17, w8, #4096
- sub w17, w17, #3785
- asr w9, w9, w17
- cmn w9, #17
- cset x12, gt
- adrp x16, struct_obj_8 + 16
- ldrsb w11, [x16, #:lo12:struct_obj_8 + 16]
- movn w16, #7837, lsl #0
- and w10, w11, w16
- movz w16, #22400, lsl #0
- cmp w10, w16
- cset x13, ne
- orn w1, wzr, w29
- eor w29, w13, w1
- sdiv w13, w12, w29
- adrp x16, var_260
- strb w13, [x16, #:lo12:var_260]
- b .L195
-.L192:
- adrp x16, var_8
- ldrh w10, [x16, #:lo12:var_8]
- cbnz w10, .L196
- adrp x16, struct_obj_9 + 8
- ldrsh w2, [x16, #:lo12:struct_obj_9 + 8]
- cmp w2, #0
- cset x5, ne
- cbz w5, .L197
-.L196:
- adrp x16, var_59
- ldrh w12, [x16, #:lo12:var_59]
- sbfiz w0, w12, 0, 16
- cmp w0, #0
- cset x29, ne
- cbnz w29, .L195
-.L197:
- adrp x16, var_51
- ldrsh w17, [x16, #:lo12:var_51]
-.L195:
- adrp x16, var_39
- ldrh w13, [x16, #:lo12:var_39]
- movz w16, #10137, lsl #0
- eor w14, w13, w16
- adrp x16, var_14
- ldrsb w29, [x16, #:lo12:var_14]
- movz w16, #33, lsl #0
- eor w3, w29, w16
- and w11, w14, w3
- sbfiz w10, w11, 0, 8
- cbnz w10, .L198
- adrp x16, var_62
- ldrh w8, [x16, #:lo12:var_62]
- orn w12, wzr, w8
- adrp x16, struct_obj_8 + 4
- strb w12, [x16, #:lo12:struct_obj_8 + 4]
- adrp x16, var_24
- ldrsh w8, [x16, #:lo12:var_24]
- adrp x16, var_16
- ldrh w17, [x16, #:lo12:var_16]
- adrp x16, var_34
- ldrsb w15, [x16, #:lo12:var_34]
- adrp x16, struct_obj_3 + 6
- ldrsh w5, [x16, #:lo12:struct_obj_3 + 6]
- adrp x16, var_4
- ldrh w11, [x16, #:lo12:var_4]
- adrp x16, struct_obj_9 + 8
- ldrsh w0, [x16, #:lo12:struct_obj_9 + 8]
- adrp x16, struct_obj_9 + 10
- ldrh w6, [x16, #:lo12:struct_obj_9 + 10]
- madd w29, w0, w6, wzr
- sub w6, wzr, w29
- ubfiz w4, w6, 0, 16
- sub w17, wzr, w17
- madd w10, w17, w15, wzr
- cmp w8, w10
- cset x0, le
- cmp w0, w5
- cset x0, lt
- add w8, w11, #24576
- add w8, w8, #1397
- orn w9, wzr, w8
- sbfiz w8, w9, 0, 8
- cmn w8, #123
- cset x13, le
- orr w15, w0, w13
- orn w17, wzr, w15
- b .L199
-.L198:
- adrp x16, var_51
- ldrsh w8, [x16, #:lo12:var_51]
- ubfiz w4, w8, 0, 16
- cbnz w4, .L200
- adrp x16, struct_obj_8 + 16
- ldrsb w0, [x16, #:lo12:struct_obj_8 + 16]
- cbz w0, .L201
- adrp x16, var_62
- ldrh w11, [x16, #:lo12:var_62]
- cmp w11, #0
- cset x12, ne
- b .L202
-.L201:
- movz w12, #0, lsl #0
- b .L202
-.L200:
- orr w12, wzr, #1
-.L202:
- cbz w12, .L203
- adrp x16, var_8
- ldrh w0, [x16, #:lo12:var_8]
- cbnz w0, .L203
- adrp x16, struct_obj_4 + 12
- ldrsb w0, [x16, #:lo12:struct_obj_4 + 12]
- cmp w0, #0
- cset x0, ne
-.L203:
- adrp x16, var_21
- ldrsb w17, [x16, #:lo12:var_21]
- adrp x16, struct_obj_8 + 28
- ldrsh w0, [x16, #:lo12:struct_obj_8 + 28]
- sub w14, w0, w29
- adrp x16, var_17
- ldrsh w0, [x16, #:lo12:var_17]
- sub w2, wzr, w0
- add w29, w14, w2
- sub w4, wzr, w29
- adrp x16, struct_obj_9 + 22
- ldrh w3, [x16, #:lo12:struct_obj_9 + 22]
- add w11, w4, w3
- sub w8, w17, w11
- adrp x16, var_268
- strb w8, [x16, #:lo12:var_268]
-.L199:
- adrp x16, struct_obj_9 + 22
- ldrh w3, [x16, #:lo12:struct_obj_9 + 22]
- orr w29, wzr, #1
- adrp x16, struct_obj_4 + 2
- ldrsb w10, [x16, #:lo12:struct_obj_4 + 2]
- movn w16, #3614, lsl #0
- eor w14, w10, w16
- sbfiz w13, w14, 0, 8
- movn w16, #53, lsl #0
- eor w17, w13, w16
- sub w1, w17, #115
- asr w12, w29, w1
- adrp x16, var_29
- ldrh w11, [x16, #:lo12:var_29]
- adrp x16, var_26
- ldrh w15, [x16, #:lo12:var_26]
- cmp w11, w15
- cset x1, ne
- movz w16, #53609, lsl #0
- eor w17, w1, w16
- adrp x16, var_48
- ldrh w4, [x16, #:lo12:var_48]
- orr w2, wzr, w4, lsr #31
- sxtw x0, w4
- movz x11, #31139, lsl #0
- movk x11, #11586, lsl #16
- madd x1, x0, x11, xzr
- orr x8, xzr, x1, asr #32
- add w29, w2, w8, asr #11
- movn w16, #23752, lsl #0
- orr w9, w29, w16
- cmp w17, w9
- cset x9, ge
- eor w2, w9, #1
- adrp x16, var_284
- strh w2, [x16, #:lo12:var_284]
- adrp x16, var_30
- ldrh w13, [x16, #:lo12:var_30]
- adrp x16, var_5
- ldrh w0, [x16, #:lo12:var_5]
- and w13, w13, w0
- orr w0, w13, #30
- eon w0, w0, w12
- movz w16, #65513, lsl #0
- and w4, w0, w16
- orn w8, wzr, w4
- orr w16, wzr, #2147483647
- add w0, w8, w16
- adrp x16, struct_obj_9 + 8
- ldrsh w29, [x16, #:lo12:struct_obj_9 + 8]
- movz w16, #64443, lsl #0
- orr w5, w29, w16
- adrp x16, struct_obj_8 + 20
- ldrsh w6, [x16, #:lo12:struct_obj_8 + 20]
- eor w8, w6, #-17
- adrp x16, struct_obj_2 + 4
- ldrh w14, [x16, #:lo12:struct_obj_2 + 4]
- movz w16, #46991, lsl #0
- and w1, w14, w16
- orr w6, w8, w1
- sub w1, w6, #45056
- sub w1, w1, #1939
- asr w12, w5, w1
- sub w10, w12, #4091
- lsl w1, w0, w10
- adrp x16, struct_obj_8 + 18
- strh w1, [x16, #:lo12:struct_obj_8 + 18]
-.L184:
- movz w6, #0, lsl #0
- adrp x16, var_359
- strh w6, [x16, #:lo12:var_359]
- adrp x16, var_43
- ldrh w0, [x16, #:lo12:var_43]
- sbfiz w2, w0, 0, 16
- adrp x16, struct_obj_4 + 10
- ldrh w9, [x16, #:lo12:struct_obj_4 + 10]
- orn w12, wzr, w9
- orr w16, wzr, #2147483647
- add w14, w12, w16
- adrp x16, struct_obj_2
- ldrsh w8, [x16, #:lo12:struct_obj_2]
- movn w16, #15348, lsl #0
- and w8, w8, w16
- orr w16, wzr, #2147483647
- add w6, w8, w16
- movz w16, #33773, lsl #0
- movk w16, #32767, lsl #16
- sub w13, w6, w16
- asr w3, w14, w13
- orr w6, w2, w3
- adrp x16, var_7
- ldrsb w3, [x16, #:lo12:var_7]
- adrp x16, struct_obj_4 + 22
- ldrh w4, [x16, #:lo12:struct_obj_4 + 22]
- eor w13, w3, w4, lsl #5
- adrp x16, var_60
- ldrsh w14, [x16, #:lo12:var_60]
- movz w16, #38, lsl #0
- and w15, w14, w16
- adrp x16, struct_obj_9 + 10
- ldrh w0, [x16, #:lo12:struct_obj_9 + 10]
- adrp x16, var_50
- ldrh w12, [x16, #:lo12:var_50]
- sub w4, w12, #45056
- sub w4, w4, #1901
- asr w0, w0, w4
- lsl w9, w15, w0
- lsl w10, w13, w9
- movz w14, #0, lsl #0
- orr w5, wzr, w14, lsl #11
- movn w16, #76, lsl #0
- orr w15, w5, w16
- bic w8, w10, w15
- and w6, w6, w8
- cbz w6, .L204
- adrp x16, struct_obj_9 + 2
- ldrsb w6, [x16, #:lo12:struct_obj_9 + 2]
- movz w6, #18490, lsl #0
- movn w16, #34, lsl #0
- orr w17, w12, w16
- adrp x16, var_56
- ldrh w4, [x16, #:lo12:var_56]
- eon w2, w17, w4
- sub w29, w2, #16384
- sub w29, w29, #3818
- lsl w11, w6, w29
- adrp x16, var_367
- strb w11, [x16, #:lo12:var_367]
- adrp x16, var_46
- ldrh w0, [x16, #:lo12:var_46]
- adrp x16, struct_obj_9 + 10
- ldrh w3, [x16, #:lo12:struct_obj_9 + 10]
- adrp x16, var_35
- ldrh w8, [x16, #:lo12:var_35]
- cbnz w8, .L205
- adrp x16, struct_obj_4 + 18
- ldrsh w6, [x16, #:lo12:struct_obj_4 + 18]
- cmp w6, #0
- cset x8, ne
- cbnz w8, .L205
- cbnz w3, .L206
- adrp x16, struct_obj_5
- ldrsb w6, [x16, #:lo12:struct_obj_5]
- cmp w6, #0
- cset x17, ne
- b .L207
-.L206:
- orr w17, wzr, #1
- b .L207
-.L205:
- orr w17, wzr, #1
-.L207:
- adrp x16, struct_obj_8 + 26
- ldrsb w14, [x16, #:lo12:struct_obj_8 + 26]
- adrp x16, struct_obj_1 + 6
- ldrsh w8, [x16, #:lo12:struct_obj_1 + 6]
- eor w9, w14, w8
- movn w16, #14805, lsl #0
- eor w0, w0, w16
- eor w9, w9, w0
- cbz w9, .L208
- adrp x16, struct_obj_8 + 4
- ldrsb w15, [x16, #:lo12:struct_obj_8 + 4]
- and w29, w8, w15
- adrp x16, struct_obj_5 + 6
- ldrsh w0, [x16, #:lo12:struct_obj_5 + 6]
- bic w8, w29, w0
- cmp w8, #0
- cset x8, ne
- b .L209
-.L208:
- movz w8, #0, lsl #0
-.L209:
- movz w14, #17, lsl #0
- adrp x16, var_56
- ldrh w1, [x16, #:lo12:var_56]
- sub w3, w1, #16384
- sub w3, w3, #3797
- lsl w6, w14, w3
- orn w1, wzr, w6
- cmp w1, w17
- cset x17, gt
- cmp w17, w8
- b.le .L210
- movz w17, #0, lsl #0
- orn w14, wzr, w7
- ubfiz w4, w14, 0, 16
- sdiv w15, w17, w4
- msub w13, w15, w4, w17
- movz w16, #14314, lsl #0
- cmp w13, w16
- cset x2, le
- b .L211
-.L210:
- orr w2, wzr, #1
-.L211:
- adrp x16, var_46
- strh w2, [x16, #:lo12:var_46]
- adrp x16, var_20
- ldrh w8, [x16, #:lo12:var_20]
- adrp x16, var_24
- ldrsh w9, [x16, #:lo12:var_24]
- adrp x16, struct_obj_8 + 20
- ldrsh w12, [x16, #:lo12:struct_obj_8 + 20]
- add w3, w9, w12
- add w6, w3, #16384
- add w6, w6, #3130
- ubfiz w11, w6, 0, 16
- adrp x16, struct_obj_3 + 2
- ldrh w6, [x16, #:lo12:struct_obj_3 + 2]
- movz w16, #24836, lsl #0
- and w1, w6, w16
- movz w16, #14314, lsl #0
- eor w5, w1, w16
- orn w15, wzr, w5
- sdiv w2, w11, w15
- msub w13, w2, w15, w11
-.L204:
- adrp x16, struct_obj_8 + 12
- ldrsb w2, [x16, #:lo12:struct_obj_8 + 12]
- sub w13, wzr, w2
- cbz w13, .L212
- orn w13, wzr, w7
- sub w2, wzr, w13
- adrp x16, var_392
- strh w2, [x16, #:lo12:var_392]
- adrp x16, var_14
- ldrsb w6, [x16, #:lo12:var_14]
- adrp x16, struct_obj_9 + 10
- ldrh w14, [x16, #:lo12:struct_obj_9 + 10]
- cbnz w14, .L213
- adrp x16, var_47
- ldrsb w1, [x16, #:lo12:var_47]
-.L213:
- adrp x16, var_65
- ldrsh w29, [x16, #:lo12:var_65]
- adrp x16, var_35
- ldrh w17, [x16, #:lo12:var_35]
- sub w11, w17, #12288
- sub w11, w11, #2120
- asr w10, w17, w11
- ubfiz w17, w10, 0, 16
- adrp x16, struct_obj_10
- ldrsb w1, [x16, #:lo12:struct_obj_10]
- ubfiz w29, w1, 0, 16
- cbnz w29, .L212
- adrp x16, var_63
- ldrsh w4, [x16, #:lo12:var_63]
- cbz w4, .L212
- cbz w6, .L212
- adrp x16, var_3
- ldrsb w6, [x16, #:lo12:var_3]
- cmp w6, #0
- cset x12, ne
-.L212:
- orr w10, wzr, #1
- movz w6, #0, lsl #0
- adrp x16, struct_obj_1 + 4
- ldrh w5, [x16, #:lo12:struct_obj_1 + 4]
- cmp w5, #0
- csel x0, x10, x6, ne
- cbz w0, .L214
- adrp x16, var_26
- ldrh w5, [x16, #:lo12:var_26]
- cbnz w5, .L215
- cmp w7, #0
- cset x17, eq
- cbnz w17, .L214
-.L215:
- movz w1, #0, lsl #0
- b .L216
-.L214:
- adrp x16, struct_obj_4 + 14
- ldrsh w3, [x16, #:lo12:struct_obj_4 + 14]
- cmp w3, #0
- cset x8, ne
- eor w1, w8, #1
-.L216:
- cbz w1, .L217
- adrp x16, var_6
- ldrh w0, [x16, #:lo12:var_6]
- orn w0, wzr, w0
- movz w16, #45366, lsl #0
- and w4, w0, w16
- adrp x16, struct_obj_8 + 4
- ldrsb w14, [x16, #:lo12:struct_obj_8 + 4]
- adrp x16, struct_obj_8 + 12
- ldrsb w3, [x16, #:lo12:struct_obj_8 + 12]
- and w3, w14, w3
- adrp x16, var_55
- ldrsb w13, [x16, #:lo12:var_55]
- orn w0, w3, w13
- and w0, w4, w0
- sbfiz w0, w0, 0, 8
- orn w0, wzr, w0
- cbz w0, .L218
- adrp x16, struct_obj_6 + 4
- ldrh w0, [x16, #:lo12:struct_obj_6 + 4]
- adrp x16, var_63
- ldrsh w0, [x16, #:lo12:var_63]
- ubfiz w6, w0, 0, 16
- adrp x16, struct_obj_4 + 18
- ldrsh w11, [x16, #:lo12:struct_obj_4 + 18]
- movz w16, #888, lsl #0
- eor w7, w11, w16
- eon w0, w6, w7
- adrp x16, var_61
- ldrsb w0, [x16, #:lo12:var_61]
- cbz w0, .L219
- adrp x16, struct_obj_9 + 8
- ldrsh w0, [x16, #:lo12:struct_obj_9 + 8]
-.L219:
- orr w13, wzr, #1
- adrp x16, var_26
- ldrh w8, [x16, #:lo12:var_26]
- cbnz w8, .L220
- orr w12, wzr, #1
- b .L221
-.L220:
- movz w12, #0, lsl #0
-.L221:
- cmp w13, #0
- cset x7, lt
- adrp x16, struct_obj_4 + 14
- ldrsh w0, [x16, #:lo12:struct_obj_4 + 14]
- sub w8, wzr, w0
- adrp x16, var_56
- ldrh w4, [x16, #:lo12:var_56]
- sbfiz w5, w4, 0, 8
- cmp w8, w5
- cset x10, ne
- cmp w12, w10
- cset x4, lt
- asr w2, w7, w4
- adrp x16, var_52
- ldrsh w3, [x16, #:lo12:var_52]
- movz w16, #6800, lsl #0
- eor w12, w3, w16
- orr w4, w12, #4
- movn w16, #20, lsl #0
- eor w10, w4, w16
- cmp w2, w10
- cset x0, eq
- adrp x16, struct_obj_5 + 6
- strh w0, [x16, #:lo12:struct_obj_5 + 6]
-.L218:
- adrp x16, var_16
- ldrh w9, [x16, #:lo12:var_16]
- adrp x16, var_60
- ldrsh w1, [x16, #:lo12:var_60]
- eor w0, w9, w1
- movn w16, #8171, lsl #0
- eor w0, w0, w16
- sbfiz w11, w0, 0, 8
- adrp x16, var_63
- ldrsh w2, [x16, #:lo12:var_63]
- eon w0, w11, w2
- cbz w0, .L222
- adrp x16, var_23
- ldrh w14, [x16, #:lo12:var_23]
- adrp x16, var_30
- ldrh w2, [x16, #:lo12:var_30]
- orn w29, wzr, w2
- cbz w29, .L222
-.L222:
- movz w5, #29097, lsl #0
- movk w5, #32767, lsl #16
- adrp x16, struct_obj_1 + 6
- ldrsh w10, [x16, #:lo12:struct_obj_1 + 6]
- adrp x16, var_2
- ldrh w11, [x16, #:lo12:var_2]
- sub w1, w11, #16384
- sub w1, w1, #1397
- lsl w6, w10, w1
- sub w0, w6, #4096
- sub w0, w0, #1824
- lsl w15, w5, w0
- adrp x16, struct_obj_4 + 8
- ldrsh w3, [x16, #:lo12:struct_obj_4 + 8]
- sbfiz w17, w3, 0, 8
- bic w5, w15, w17
- adrp x16, var_33
- ldrh w15, [x16, #:lo12:var_33]
- orr w2, wzr, w15, lsl #11
- adrp x16, var_20
- ldrh w6, [x16, #:lo12:var_20]
- sbfiz w6, w6, 0, 16
- add w17, w6, #12288
- add w17, w17, #3732
- asr w29, w2, w17
- movz w17, #65433, lsl #0
- movk w17, #32767, lsl #16
- adrp x16, struct_obj_4 + 20
- ldrsh w14, [x16, #:lo12:struct_obj_4 + 20]
- movn w16, #7862, lsl #0
- eor w0, w14, w16
- sub w7, w0, #20480
- sub w7, w7, #1456
- asr w0, w17, w7
- eor w11, w29, w0
- eor w29, w5, w11
- adrp x16, struct_obj_4 + 16
- ldrsb w4, [x16, #:lo12:struct_obj_4 + 16]
- orn w0, w29, w4
- cbz w0, .L223
- movz w0, #25335, lsl #0
- adrp x16, var_36
- strh w0, [x16, #:lo12:var_36]
- adrp x16, struct_obj_2 + 4
- ldrh w0, [x16, #:lo12:struct_obj_2 + 4]
- movz w16, #57552, lsl #0
- eor w2, w0, w16
- adrp x16, var_38
- ldrsb w7, [x16, #:lo12:var_38]
- movz w16, #2460, lsl #0
- and w13, w7, w16
- asr w0, w2, w13
- adrp x16, var_37
- ldrsb w0, [x16, #:lo12:var_37]
- orn w0, wzr, w0
-.L223:
- adrp x16, struct_obj_8
- ldrh w13, [x16, #:lo12:struct_obj_8]
- adrp x16, struct_obj_9 + 4
- ldrsh w7, [x16, #:lo12:struct_obj_9 + 4]
- sub w2, w7, #28672
- sub w2, w2, #3284
- lsl w8, w13, w2
- adrp x16, struct_obj_8 + 8
- ldrsb w6, [x16, #:lo12:struct_obj_8 + 8]
- bic w3, w8, w6
- adrp x16, var_56
- ldrh w17, [x16, #:lo12:var_56]
- adrp x16, var_43
- ldrh w29, [x16, #:lo12:var_43]
- adrp x16, var_13
- ldrsh w15, [x16, #:lo12:var_13]
- add w8, w15, #20480
- add w8, w8, #3434
- asr w6, w29, w8
- adrp x16, struct_obj_4 + 14
- ldrsh w12, [x16, #:lo12:struct_obj_4 + 14]
- adrp x16, var_6
- ldrh w2, [x16, #:lo12:var_6]
- and w11, w12, w2
- sub w4, w11, #32768
- sub w4, w4, #2751
- asr w4, w6, w4
- orr w8, w17, w4
- eon w14, w3, w8
- cbz w14, .L224
- adrp x16, var_20
- ldrh w6, [x16, #:lo12:var_20]
- adrp x16, var_18
- ldrsb w3, [x16, #:lo12:var_18]
- and w0, w6, w3
- adrp x16, struct_obj_7
- ldrsb w12, [x16, #:lo12:struct_obj_7]
- orn w13, w0, w12
- adrp x16, var_57
- ldrsb w29, [x16, #:lo12:var_57]
- movn w16, #5371, lsl #0
- orr w10, w29, w16
- eon w29, w13, w10
- adrp x16, var_28
- ldrsh w2, [x16, #:lo12:var_28]
- movn w11, #23905, lsl #0
- adrp x16, var_22
- ldrsb w9, [x16, #:lo12:var_22]
- adrp x16, struct_obj_4 + 18
- ldrsh w13, [x16, #:lo12:struct_obj_4 + 18]
- add w1, w9, w13
- sub w5, w11, w1
- sub w7, w2, w5
- adrp x16, var_2
- ldrh w8, [x16, #:lo12:var_2]
- adrp x16, struct_obj_10
- ldrsb w12, [x16, #:lo12:struct_obj_10]
- add w9, w8, w12
- adrp x16, struct_obj_10 + 4
- ldrsb w5, [x16, #:lo12:struct_obj_10 + 4]
- add w14, w9, w5
- adrp x16, var_23
- ldrh w1, [x16, #:lo12:var_23]
- sub w12, w1, #28672
- sub w12, w12, #777
- sub w6, wzr, w12
- add w8, w14, w6
- sub w8, w7, w8
- add w3, w8, #53248
- add w3, w3, #2668
- adrp x16, struct_obj_9 + 22
- ldrh w13, [x16, #:lo12:struct_obj_9 + 22]
- adrp x16, struct_obj_9 + 10
- ldrh w9, [x16, #:lo12:struct_obj_9 + 10]
- cbnz w15, .L225
- adrp x16, var_48
- ldrh w10, [x16, #:lo12:var_48]
- cmp w10, #0
- cset x6, eq
- b .L226
-.L225:
- orr w6, wzr, #1
-.L226:
- orr w8, wzr, #1
- movz w29, #0, lsl #0
- cmp w6, #0
- csel x13, x8, x29, ne
-.L224:
- adrp x16, var_60
- ldrsh w4, [x16, #:lo12:var_60]
- movz w29, #59623, lsl #0
- adrp x16, struct_obj_2 + 6
- ldrsh w13, [x16, #:lo12:struct_obj_2 + 6]
- adrp x16, var_16
- ldrh w15, [x16, #:lo12:var_16]
- madd w10, w13, w15, wzr
- sbfiz w9, w10, 0, 8
- adrp x16, var_34
- ldrsb w15, [x16, #:lo12:var_34]
- adrp x16, var_24
- ldrsh w14, [x16, #:lo12:var_24]
- sbfiz w10, w14, 0, 16
- cmp w15, w10
- cset x15, lt
- adrp x16, var_14
- ldrsb w11, [x16, #:lo12:var_14]
- adrp x16, var_33
- ldrh w7, [x16, #:lo12:var_33]
- adrp x16, struct_obj_3
- ldrsh w2, [x16, #:lo12:struct_obj_3]
- orn w0, wzr, w2
- adrp x16, struct_obj_6 + 4
- ldrh w3, [x16, #:lo12:struct_obj_6 + 4]
- add w8, w3, w4
- madd w2, w0, w8, wzr
- cbz w2, .L227
- movz w2, #0, lsl #0
- movz w3, #0, lsl #0
- adrp x16, struct_obj_6
- ldrsh w8, [x16, #:lo12:struct_obj_6]
- cmp w8, #0
- csel x0, x2, x3, ne
- sbfiz w13, w7, 0, 8
- cmp w0, w13
- cset x1, le
- cbnz w1, .L228
-.L227:
- madd w5, w9, w29, wzr
- bic w12, w11, w11
- and w12, w15, w12
- madd w3, w5, w12, wzr
- adrp x16, struct_obj_5 + 2
- ldrsh w5, [x16, #:lo12:struct_obj_5 + 2]
- movz w16, #11652, lsl #0
- and w10, w5, w16
- bic w15, w3, w10
- sbfiz w7, w4, 0, 8
- ubfiz w11, w7, 0, 16
- orn w7, w15, w11
- cmp w7, #0
- cset x15, ne
- cbnz w15, .L228
- orr w13, wzr, #1
- orr w15, wzr, #1
- adrp x16, struct_obj_4 + 22
- ldrh w29, [x16, #:lo12:struct_obj_4 + 22]
- movn w16, #26751, lsl #0
- tst w29, w16
- csel x0, x13, x15, ne
- adrp x16, var_32
- ldrh w15, [x16, #:lo12:var_32]
- orr w6, wzr, #-65
- sdiv w1, w15, w6
- movz w16, #45959, lsl #0
- cmp w1, w16
- cset x3, ge
- sub w0, w0, w3
- cbz w0, .L229
- adrp x16, struct_obj_3 + 6
- ldrsh w0, [x16, #:lo12:struct_obj_3 + 6]
-.L229:
- adrp x16, struct_obj_3 + 6
- ldrsh w0, [x16, #:lo12:struct_obj_3 + 6]
- b .L168
-.L228:
- adrp x16, var_18
- ldrsb w0, [x16, #:lo12:var_18]
- cbz w0, .L230
- cmp w17, #0
- cset x0, ne
- cbnz w0, .L168
-.L230:
- adrp x16, struct_obj_5 + 6
- ldrsh w0, [x16, #:lo12:struct_obj_5 + 6]
- b .L168
-.L217:
- adrp x16, struct_obj_4 + 26
- ldrsh w0, [x16, #:lo12:struct_obj_4 + 26]
- adrp x16, var_35
- ldrh w1, [x16, #:lo12:var_35]
- sbfiz w14, w1, 0, 16
- adrp x16, struct_obj_4
- ldrsh w2, [x16, #:lo12:struct_obj_4]
- orn w17, w14, w2
- cmp w0, w17
- cset x8, gt
- adrp x16, struct_obj_4 + 8
- ldrsh w1, [x16, #:lo12:struct_obj_4 + 8]
- movz w16, #39209, lsl #0
- eor w0, w1, w16
- cmp w8, w0
- cset x0, gt
- adrp x16, var_14
- ldrsb w14, [x16, #:lo12:var_14]
- adrp x16, struct_obj_3 + 4
- ldrh w29, [x16, #:lo12:struct_obj_3 + 4]
- cmp w14, w29
- cset x14, eq
- adrp x16, struct_obj_4 + 18
- ldrsh w9, [x16, #:lo12:struct_obj_4 + 18]
- movz w16, #56773, lsl #0
- cmp w9, w16
- cset x17, ge
- madd w14, w14, w17, wzr
- sbfiz w4, w14, 0, 16
- adrp x16, var_13
- ldrsh w14, [x16, #:lo12:var_13]
- orr w16, wzr, #2147483647
- add w11, w14, w16
- orr w14, wzr, w11, asr #29
- adrp x16, struct_obj_2 + 2
- ldrh w29, [x16, #:lo12:struct_obj_2 + 2]
- sub w5, w29, #24576
- sub w5, w5, #1173
- lsl w9, w14, w5
- cmp w4, w9
- cset x8, le
- cmp w0, w8
- cset x14, ne
- cbz w14, .L168
- adrp x16, var_10
- ldrh w0, [x16, #:lo12:var_10]
- sbfiz w0, w0, 0, 8
- orr w5, wzr, #1
- movz w12, #0, lsl #0
- adrp x16, var_23
- ldrh w17, [x16, #:lo12:var_23]
- sub w2, wzr, w5
- movz w1, #44106, lsl #0
- movk w1, #32767, lsl #16
- asr w1, w1, w12
- cmp w2, w1
- cset x8, lt
- cmp w17, w8
- cset x0, lt
- adrp x16, var_53
- strh w0, [x16, #:lo12:var_53]
- adrp x16, struct_obj_2 + 2
- ldrh w0, [x16, #:lo12:struct_obj_2 + 2]
- orn w0, wzr, w0
- orn w0, wzr, w0
- movz w16, #41, lsl #0
- orr w0, w0, w16
- sbfiz w3, w0, 0, 8
- adrp x16, struct_obj_4 + 18
- ldrsh w11, [x16, #:lo12:struct_obj_4 + 18]
- cmp w11, #0
- cset x0, eq
- movz w1, #65006, lsl #0
- adrp x16, struct_obj_8 + 22
- ldrh w2, [x16, #:lo12:struct_obj_8 + 22]
- madd w11, w2, w1, wzr
- adrp x16, struct_obj_8 + 6
- ldrsh w15, [x16, #:lo12:struct_obj_8 + 6]
- sub w1, wzr, w15
- sdiv w6, w11, w1
- ubfiz w4, w6, 0, 16
- madd w15, w0, w4, wzr
- adrp x16, struct_obj_8 + 26
- ldrsb w11, [x16, #:lo12:struct_obj_8 + 26]
- adrp x16, struct_obj_5
- ldrsb w6, [x16, #:lo12:struct_obj_5]
- eor w9, w11, w6
- adrp x16, var_37
- ldrsb w29, [x16, #:lo12:var_37]
- movz w16, #2436, lsl #0
- orr w14, w29, w16
- eor w6, w9, w14
- eon w14, w6, w3
- cmp w15, w14
- cset x0, lt
- adrp x16, var_468
- strb w0, [x16, #:lo12:var_468]
-.L168:
- adrp x16, var_10
- ldrh w4, [x16, #:lo12:var_10]
- adrp x16, struct_obj_2 + 2
- ldrh w9, [x16, #:lo12:struct_obj_2 + 2]
- sub w10, w9, #24576
- sub w10, w10, #1167
- asr w4, w4, w10
- adrp x16, var_49
- ldrsb w6, [x16, #:lo12:var_49]
- orn w10, wzr, w6
- add w7, w10, #31
- lsl w1, w4, w7
- orn w13, wzr, w1
- adrp x16, var_36
- ldrsh w14, [x16, #:lo12:var_36]
- adrp x16, var_18
- ldrsb w9, [x16, #:lo12:var_18]
- adrp x16, struct_obj_2
- ldrsh w3, [x16, #:lo12:struct_obj_2]
- bic w1, w9, w3
- and w9, w14, w1
- eon w4, w13, w9
- sbfiz w14, w4, 0, 16
- adrp x16, var_9
- ldrh w4, [x16, #:lo12:var_9]
- sbfiz w5, w4, 0, 8
- adrp x16, struct_obj_8 + 16
- ldrsb w2, [x16, #:lo12:struct_obj_8 + 16]
- movn w16, #2066, lsl #0
- eor w13, w2, w16
- eon w6, w13, w6
- movz w7, #36764, lsl #0
- movk w7, #32767, lsl #16
- adrp x16, var_45
- ldrsb w8, [x16, #:lo12:var_45]
- adrp x16, var_27
- ldrsh w9, [x16, #:lo12:var_27]
- orr w8, w8, w9
- add w1, w8, #3
- lsl w15, w7, w1
- orr w0, w6, w15
- adrp x16, var_65
- ldrsh w15, [x16, #:lo12:var_65]
- add w29, w15, #12288
- add w29, w29, #558
- lsl w6, w0, w29
- cmp w5, w6
- cset x15, ne
- adrp x16, var_26
- ldrh w10, [x16, #:lo12:var_26]
- movz w11, #5330, lsl #0
- adrp x16, struct_obj_1 + 4
- ldrh w29, [x16, #:lo12:struct_obj_1 + 4]
- madd w0, w29, w11, wzr
- movz w1, #101, lsl #0
- madd w17, w29, w1, wzr
- sdiv w13, w0, w17
- orn w9, wzr, w13
- adrp x16, struct_obj_8 + 14
- ldrh w7, [x16, #:lo12:struct_obj_8 + 14]
- madd w7, w9, w7, wzr
- adrp x16, struct_obj_2 + 6
- ldrsh w29, [x16, #:lo12:struct_obj_2 + 6]
- adrp x16, var_48
- ldrh w2, [x16, #:lo12:var_48]
- madd w5, w29, w2, wzr
- adrp x16, struct_obj_3 + 4
- ldrh w17, [x16, #:lo12:struct_obj_3 + 4]
- sub w6, w5, w17
- add w9, w6, #4096
- add w9, w9, #3658
- orr w2, w7, w9
- ubfiz w1, w2, 0, 16
- adrp x16, var_47
- ldrsb w11, [x16, #:lo12:var_47]
- orn w5, w10, w11
- movz w29, #33232, lsl #0
- adrp x16, var_43
- ldrh w12, [x16, #:lo12:var_43]
- madd w13, w12, w29, wzr
- sub w29, wzr, w13
- orn w13, wzr, w29
- movz w16, #2753, lsl #0
- and w6, w13, w16
- sdiv w7, w5, w6
- msub w11, w7, w6, w5
- ubfiz w0, w11, 0, 16
- adrp x16, struct_obj_10 + 4
- ldrsb w9, [x16, #:lo12:struct_obj_10 + 4]
- adrp x16, struct_obj_1 + 2
- ldrh w7, [x16, #:lo12:struct_obj_1 + 2]
- sdiv w29, w9, w7
- adrp x16, var_29
- ldrh w7, [x16, #:lo12:var_29]
- sdiv w11, w29, w7
- msub w13, w11, w7, w29
- sbfiz w11, w13, 0, 8
- cmp w11, #1
- b.le .L231
- movn w29, #123, lsl #0
- adrp x16, var_33
- ldrh w11, [x16, #:lo12:var_33]
- orn w8, wzr, w11
- sub w11, w29, w8
- orn w13, wzr, w11
- adrp x16, var_16
- ldrh w5, [x16, #:lo12:var_16]
- adrp x16, struct_obj_6 + 2
- ldrh w12, [x16, #:lo12:struct_obj_6 + 2]
- cmp w5, w12
- cset x5, ge
- adrp x16, var_3
- ldrsb w2, [x16, #:lo12:var_3]
- adrp x16, struct_obj_8 + 8
- ldrsb w8, [x16, #:lo12:struct_obj_8 + 8]
- orr w29, w2, w8
- cmp w5, w29
- cset x2, ne
- movn w16, #7351, lsl #0
- and w11, w2, w16
- cmp w13, w11
- cset x6, eq
- sub w2, wzr, w6
- cbnz w2, .L232
- adrp x16, struct_obj_6 + 6
- ldrsh w7, [x16, #:lo12:struct_obj_6 + 6]
- cbz w7, .L233
- adrp x16, struct_obj_7
- ldrsb w7, [x16, #:lo12:struct_obj_7]
- cmp w7, #0
- cset x11, ne
-.L233:
- movn w8, #10, lsl #0
- adrp x16, var_522
- strb w8, [x16, #:lo12:var_522]
- adrp x16, var_1
- ldrh w3, [x16, #:lo12:var_1]
- adrp x16, var_30
- ldrh w13, [x16, #:lo12:var_30]
- adrp x16, struct_obj_4 + 24
- ldrh w19, [x16, #:lo12:struct_obj_4 + 24]
- adrp x16, struct_obj_5
- ldrsb w7, [x16, #:lo12:struct_obj_5]
- cbz w17, .L234
- adrp x16, var_17
- ldrsh w2, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w11, [x16, #:lo12:var_9]
- sub w11, w11, #12288
- sub w11, w11, #1187
- lsl w4, w2, w11
- cmp w4, #0
- cset x20, ne
- b .L235
-.L234:
- movz w20, #0, lsl #0
-.L235:
- adrp x16, struct_obj_3 + 4
- ldrh w9, [x16, #:lo12:struct_obj_3 + 4]
- cbz w9, .L236
- adrp x16, var_17
- ldrsh w29, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w17, [x16, #:lo12:var_9]
- sub w17, w17, #12288
- sub w17, w17, #1187
- lsl w12, w29, w17
- cmp w12, #0
- cset x29, ne
- b .L237
-.L236:
- movz w29, #0, lsl #0
-.L237:
- adrp x16, struct_obj_4 + 4
- ldrsh w2, [x16, #:lo12:struct_obj_4 + 4]
- movz w16, #24281, lsl #0
- and w17, w2, w16
- movn w16, #76, lsl #0
- eor w11, w9, w16
- orr w8, wzr, w13, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w6, w8, w16
- and w11, w11, w6
- adrp x16, struct_obj_2
- ldrsh w2, [x16, #:lo12:struct_obj_2]
- sub w2, wzr, w2
- sub w12, wzr, w2
- sub w4, wzr, w3
- madd w2, w12, w4, wzr
- cmp w29, #4
- cset x6, ne
- cmp w2, w6
- cset x3, gt
- cmp w11, w3
- cset x8, ge
- asr w3, w17, w8
- sub w8, w13, #40960
- sub w8, w8, #1739
- asr w5, w3, w8
- cmp w5, #0
- cset x5, ne
- adrp x16, var_36
- ldrsh w12, [x16, #:lo12:var_36]
- tst w12, #126
- cset x13, eq
- cmp w20, #4
- cset x6, ne
- cmp w2, w6
- cset x2, gt
- cmp w11, w2
- cset x29, ge
- movn w16, #1113, lsl #0
- eor w2, w19, w16
- ubfiz w6, w2, 0, 16
- movn w16, #28029, lsl #0
- cmp w6, w16
- cset x17, ge
- cmp w29, w17
- cset x29, gt
- sub w29, w29, w5
- and w11, w13, w29
- cbnz w11, .L238
- adrp x16, struct_obj_4 + 20
- ldrsh w17, [x16, #:lo12:struct_obj_4 + 20]
-.L238:
- movn w9, #0, lsl #0
- movz w2, #10162, lsl #0
- adrp x16, struct_obj_1 + 2
- ldrh w17, [x16, #:lo12:struct_obj_1 + 2]
- madd w29, w17, w2, wzr
- ubfiz w6, w29, 0, 16
- sub w12, wzr, w6
- madd w2, w12, w9, wzr
- cbnz w2, .L239
- cmp w7, #0
- cset x12, ne
- b .L240
-.L239:
- orr w12, wzr, #1
-.L240:
- adrp x16, var_36
- strh w12, [x16, #:lo12:var_36]
- b .L241
-.L232:
- cbz w17, .L242
- adrp x16, var_17
- ldrsh w7, [x16, #:lo12:var_17]
- sub w29, w4, #12288
- sub w29, w29, #1187
- lsl w4, w7, w29
- cmp w4, #0
- cset x13, ne
- b .L243
-.L242:
- movz w13, #0, lsl #0
-.L243:
- movn w16, #76, lsl #0
- eor w7, w17, w16
- adrp x16, var_30
- ldrh w5, [x16, #:lo12:var_30]
- orr w29, wzr, w5, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w2, w29, w16
- and w12, w7, w2
- sub w11, wzr, w3
- sub w5, wzr, w11
- adrp x16, var_1
- ldrh w11, [x16, #:lo12:var_1]
- sub w3, wzr, w11
- madd w6, w5, w3, wzr
- cmp w13, #4
- cset x5, ne
- cmp w6, w5
- cset x3, gt
- adrp x16, struct_obj_4 + 22
- ldrh w9, [x16, #:lo12:struct_obj_4 + 22]
- adrp x16, var_20
- ldrh w11, [x16, #:lo12:var_20]
- bic w4, w11, w17
- adrp x16, struct_obj_4 + 16
- ldrsb w2, [x16, #:lo12:struct_obj_4 + 16]
- adrp x16, struct_obj_8 + 30
- ldrsb w17, [x16, #:lo12:struct_obj_8 + 30]
- and w13, w2, w17
- eon w17, w4, w13
- adrp x16, var_514
- strh w17, [x16, #:lo12:var_514]
-.L241:
- adrp x16, struct_obj_3 + 4
- ldrh w4, [x16, #:lo12:struct_obj_3 + 4]
- cbz w4, .L244
- adrp x16, var_17
- ldrsh w17, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w12, [x16, #:lo12:var_9]
- sub w12, w12, #12288
- sub w12, w12, #1187
- lsl w13, w17, w12
- cmp w13, #0
- cset x7, ne
- b .L245
-.L244:
- movz w7, #0, lsl #0
-.L245:
- movn w16, #76, lsl #0
- eor w8, w4, w16
- adrp x16, var_30
- ldrh w17, [x16, #:lo12:var_30]
- orr w9, wzr, w17, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w11, w9, w16
- and w11, w8, w11
- adrp x16, struct_obj_2
- ldrsh w17, [x16, #:lo12:struct_obj_2]
- sub w6, wzr, w17
- sub w2, wzr, w6
- adrp x16, var_1
- ldrh w6, [x16, #:lo12:var_1]
- sub w6, wzr, w6
- madd w19, w2, w6, wzr
- cmp w7, #4
- cset x12, ne
- cmp w19, w12
- cset x2, gt
- cbz w4, .L246
- adrp x16, var_17
- ldrsh w5, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w12, [x16, #:lo12:var_9]
- sub w17, w12, #12288
- sub w17, w17, #1187
- lsl w5, w5, w17
- cmp w5, #0
- cset x2, ne
- b .L247
-.L246:
- movz w2, #0, lsl #0
-.L247:
- orr w3, wzr, #1
- movz w29, #0, lsl #0
- sub w6, wzr, w4
- movz w16, #4355, lsl #0
- cmp w6, w16
- cset x12, gt
- sub w6, w12, #1
- cmp w2, #4
- cset x17, ne
- cmp w19, w17
- cset x5, gt
- cmp w11, w5
- cset x12, ge
- movz w16, #7584, lsl #0
- cmp w12, w16
- cset x2, le
- cmp w6, w2
- csel x17, x3, x29, le
- add w12, w4, #45056
- add w12, w12, #778
- cmp w12, #0
- cset x6, ne
- sdiv w2, w17, w6
- msub w3, w2, w6, w17
- sbfiz w13, w3, 0, 8
- cbz w4, .L248
- adrp x16, var_17
- ldrsh w2, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w8, [x16, #:lo12:var_9]
- sub w9, w8, #12288
- sub w9, w9, #1187
- lsl w5, w2, w9
- cmp w5, #0
- cset x7, ne
- b .L249
-.L248:
- movz w7, #0, lsl #0
-.L249:
- cmp w7, #4
- cset x9, ne
- cmp w19, w9
- cset x8, gt
- cmp w11, w8
- cset x2, ge
- orn w3, wzr, w2
- cmp w3, #0
- cset x5, eq
- adrp x16, var_64
- strb w5, [x16, #:lo12:var_64]
- orr w12, wzr, #1
- orr w29, wzr, #1
- adrp x16, struct_obj_4 + 12
- ldrsb w11, [x16, #:lo12:struct_obj_4 + 12]
- cmp w11, #0
- csel x17, x12, x29, ne
- orr w7, wzr, #1
- orr w6, wzr, #1
- adrp x16, var_43
- ldrh w3, [x16, #:lo12:var_43]
- cmp w3, #0
- csel x7, x7, x6, ne
- sdiv w8, w17, w7
- msub w17, w8, w7, w17
- adrp x16, var_52
- ldrsh w2, [x16, #:lo12:var_52]
- orr w12, w17, w2
- orn w5, wzr, w12
- adrp x16, var_61
- ldrsb w8, [x16, #:lo12:var_61]
- adrp x16, var_5
- ldrh w11, [x16, #:lo12:var_5]
- orr w2, w8, w11
- adrp x16, struct_obj_8 + 22
- ldrh w3, [x16, #:lo12:struct_obj_8 + 22]
- orn w17, w2, w3
- adrp x16, struct_obj_6 + 6
- ldrsh w12, [x16, #:lo12:struct_obj_6 + 6]
- adrp x16, struct_obj_1 + 4
- ldrh w2, [x16, #:lo12:struct_obj_1 + 4]
- adrp x16, struct_obj_6 + 2
- ldrh w29, [x16, #:lo12:struct_obj_6 + 2]
- and w11, w2, w29
- eor w2, w12, w11
- orr w2, w17, w2
- sbfiz w3, w2, 0, 8
- cmp w5, w3
- b.gt .L250
- adrp x16, struct_obj_3 + 4
- ldrh w8, [x16, #:lo12:struct_obj_3 + 4]
- cbnz w8, .L251
- adrp x16, var_17
- ldrsh w17, [x16, #:lo12:var_17]
- sbfiz w12, w17, 0, 8
- cbnz w12, .L251
- adrp x16, var_38
- ldrsb w4, [x16, #:lo12:var_38]
- cbz w4, .L252
- adrp x16, var_36
- ldrsh w2, [x16, #:lo12:var_36]
- cmp w2, #0
- cset x17, ne
- cbnz w17, .L251
-.L252:
- adrp x16, var_3
- ldrsb w2, [x16, #:lo12:var_3]
-.L251:
- movn w16, #76, lsl #0
- eor w17, w8, w16
- adrp x16, var_30
- ldrh w2, [x16, #:lo12:var_30]
- orr w4, wzr, w2, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w12, w4, w16
- and w12, w17, w12
- adrp x16, struct_obj_2
- ldrsh w17, [x16, #:lo12:struct_obj_2]
- sub w11, wzr, w17
- sub w3, wzr, w11
- adrp x16, var_1
- ldrh w5, [x16, #:lo12:var_1]
- cbz w8, .L253
- adrp x16, var_17
- ldrsh w29, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w17, [x16, #:lo12:var_9]
- sub w2, w17, #12288
- sub w2, w2, #1187
- lsl w17, w29, w2
- cmp w17, #0
- cset x11, ne
- b .L254
-.L253:
- movz w11, #0, lsl #0
-.L254:
- sub w6, wzr, w5
- madd w17, w3, w6, wzr
- cmp w11, #4
- cset x29, ne
- cmp w17, w29
- cset x7, gt
-.L250:
- adrp x16, struct_obj_3 + 4
- ldrh w29, [x16, #:lo12:struct_obj_3 + 4]
- cbz w29, .L255
- adrp x16, var_17
- ldrsh w5, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w9, [x16, #:lo12:var_9]
- sub w17, w9, #12288
- sub w17, w17, #1187
- lsl w3, w5, w17
- cmp w3, #0
- cset x3, ne
- b .L256
-.L255:
- movz w3, #0, lsl #0
-.L256:
- movn w16, #76, lsl #0
- eor w6, w29, w16
- adrp x16, var_30
- ldrh w17, [x16, #:lo12:var_30]
- orr w2, wzr, w17, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w12, w2, w16
- and w4, w6, w12
- adrp x16, struct_obj_2
- ldrsh w17, [x16, #:lo12:struct_obj_2]
- sub w2, wzr, w17
- sub w7, wzr, w2
- adrp x16, var_1
- ldrh w17, [x16, #:lo12:var_1]
- sub w17, wzr, w17
- madd w5, w7, w17, wzr
- cmp w3, #4
- cset x3, ne
- cmp w5, w3
- cset x7, gt
- cbz w29, .L257
- adrp x16, var_17
- ldrsh w7, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w17, [x16, #:lo12:var_9]
- sub w8, w17, #12288
- sub w8, w8, #1187
- lsl w17, w7, w8
- cmp w17, #0
- cset x11, ne
- b .L258
-.L257:
- movz w11, #0, lsl #0
-.L258:
- adrp x16, var_59
- ldrh w17, [x16, #:lo12:var_59]
- madd w2, w0, w17, wzr
- sbfiz w17, w2, 0, 16
- adrp x16, var_63
- ldrsh w2, [x16, #:lo12:var_63]
- madd w13, w2, w13, wzr
- madd w9, w17, w13, wzr
- sub w8, wzr, w9
- movz w3, #11697, lsl #0
- sub w17, wzr, w29
- movz w16, #4355, lsl #0
- cmp w17, w16
- cset x7, gt
- sub w9, w7, #1
- cmp w11, #4
- cset x2, ne
- cmp w5, w2
- cset x17, gt
- cmp w4, w17
- cset x7, ge
- movz w16, #7584, lsl #0
- cmp w7, w16
- cset x7, le
- cmp w9, w7
- cset x13, le
- madd w17, w13, w3, wzr
- add w8, w8, w17
- add w8, w8, #1110016
- add w8, w8, #1199
- cbnz w8, .L259
- cbz w29, .L260
- adrp x16, var_17
- ldrsh w17, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w2, [x16, #:lo12:var_9]
- sub w7, w2, #12288
- sub w7, w7, #1187
- lsl w11, w17, w7
- cmp w11, #0
- cset x2, ne
- b .L261
-.L260:
- movz w2, #0, lsl #0
-.L261:
- cmp w2, #4
- cset x8, ne
- cmp w5, w8
- cset x13, gt
- cbz w29, .L262
- adrp x16, var_17
- ldrsh w7, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w2, [x16, #:lo12:var_9]
- sub w8, w2, #12288
- sub w8, w8, #1187
- lsl w17, w7, w8
- cmp w17, #0
- cset x8, ne
- b .L263
-.L262:
- movz w8, #0, lsl #0
-.L263:
- movz w13, #65414, lsl #0
- movk w13, #32767, lsl #16
- and w11, w6, w12
- cmp w8, #4
- cset x12, ne
- cmp w5, w12
- cset x7, gt
- cmp w11, w7
- cset x2, ge
- movz w16, #7584, lsl #0
- cmp w2, w16
- cset x17, le
- cmp w9, w17
- cset x2, le
- asr w6, w13, w2
- movz w11, #64835, lsl #0
- adrp x16, var_25
- ldrsb w12, [x16, #:lo12:var_25]
- orn w5, wzr, w12
- add w6, w5, #149
- asr w29, w11, w6
- adrp x16, struct_obj_7 + 4
- ldrsb w11, [x16, #:lo12:struct_obj_7 + 4]
- adrp x16, struct_obj_4 + 4
- ldrsh w2, [x16, #:lo12:struct_obj_4 + 4]
- orr w9, w11, w2
- add w2, w9, #128
- asr w9, w29, w2
- sub w4, wzr, w9
- adrp x16, struct_obj_4 + 18
- ldrsh w3, [x16, #:lo12:struct_obj_4 + 18]
- orn w9, wzr, w3
- movz w16, #17255, lsl #0
- orr w11, w9, w16
- adrp x16, struct_obj_8 + 4
- ldrsb w7, [x16, #:lo12:struct_obj_8 + 4]
- and w17, w11, w7
- adrp x16, var_2
- ldrh w29, [x16, #:lo12:var_2]
- sbfiz w11, w29, 0, 8
- sub w13, wzr, w11
- orn w11, wzr, w13
- cmp w17, w11
- cset x29, ne
- sdiv w17, w4, w29
- adrp x16, var_543
- strb w17, [x16, #:lo12:var_543]
- adrp x16, var_42
- ldrsb w17, [x16, #:lo12:var_42]
- madd w13, w17, w3, wzr
- movz w8, #63174, lsl #0
- movk w8, #19, lsl #16
- adrp x16, var_53
- ldrsh w3, [x16, #:lo12:var_53]
- sub w9, w8, w3
- sub w11, w9, #6
- sbfiz w2, w11, 0, 16
- add w8, w13, w2
- sub w9, w8, #117
- movz w5, #19559, lsl #0
- adrp x16, var_13
- ldrsh w13, [x16, #:lo12:var_13]
- madd w2, w13, w5, wzr
- adrp x16, var_46
- ldrh w5, [x16, #:lo12:var_46]
- madd w17, w14, w5, wzr
- madd w2, w2, w17, wzr
- sub w5, wzr, w2
- movz w14, #65517, lsl #0
- movz w6, #20823, lsl #0
- adrp x16, var_4
- ldrh w3, [x16, #:lo12:var_4]
- madd w13, w3, w6, wzr
- sdiv w6, w14, w13
- movz w29, #45116, lsl #0
- movk w29, #14440, lsl #16
- adrp x16, var_24
- ldrsh w4, [x16, #:lo12:var_24]
- sbfiz w11, w4, 0, 8
- sdiv w2, w29, w11
- madd w6, w6, w2, wzr
- madd w2, w5, w6, wzr
- cmp w9, w2
- cset x7, gt
- adrp x16, var_544
- strh w7, [x16, #:lo12:var_544]
- adrp x16, var_547
- strb w12, [x16, #:lo12:var_547]
- adrp x16, struct_obj_3 + 4
- ldrh w3, [x16, #:lo12:struct_obj_3 + 4]
- cbz w3, .L264
- adrp x16, var_17
- ldrsh w6, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w13, [x16, #:lo12:var_9]
- sub w4, w13, #12288
- sub w4, w4, #1187
- lsl w6, w6, w4
- cmp w6, #0
- cset x14, ne
- b .L265
-.L264:
- movz w14, #0, lsl #0
-.L265:
- movn w16, #76, lsl #0
- eor w17, w3, w16
- adrp x16, var_30
- ldrh w6, [x16, #:lo12:var_30]
- orr w12, wzr, w6, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w4, w12, w16
- and w13, w17, w4
- adrp x16, struct_obj_2
- ldrsh w2, [x16, #:lo12:struct_obj_2]
- sub w11, wzr, w2
- sub w17, wzr, w11
- adrp x16, var_1
- ldrh w29, [x16, #:lo12:var_1]
- sub w4, wzr, w29
- madd w17, w17, w4, wzr
- cmp w14, #4
- cset x12, ne
- cmp w17, w12
- cset x11, gt
- cbz w3, .L266
- adrp x16, var_17
- ldrsh w9, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w12, [x16, #:lo12:var_9]
- sub w2, w12, #12288
- sub w2, w2, #1187
- lsl w2, w9, w2
- cmp w2, #0
- cset x14, ne
- b .L267
-.L266:
- movz w14, #0, lsl #0
-.L267:
- adrp x16, var_41
- ldrh w6, [x16, #:lo12:var_41]
- adrp x16, var_16
- ldrh w2, [x16, #:lo12:var_16]
- adrp x16, struct_obj_7
- ldrsb w29, [x16, #:lo12:struct_obj_7]
- add w4, w29, #102
- asr w4, w2, w4
- adrp x16, struct_obj_4 + 24
- ldrh w8, [x16, #:lo12:struct_obj_4 + 24]
- orn w9, w4, w8
- orr w16, wzr, #2147483647
- add w12, w9, w16
- adrp x16, struct_obj_8 + 8
- ldrsb w9, [x16, #:lo12:struct_obj_8 + 8]
- sub w11, wzr, w3
- movz w16, #4355, lsl #0
- cmp w11, w16
- cset x29, gt
- sub w29, w29, #1
- cmp w14, #4
- cset x11, ne
- cmp w17, w11
- cset x17, gt
- cmp w13, w17
- cset x14, ge
- movz w16, #7584, lsl #0
- cmp w14, w16
- cset x2, le
- cmp w29, w2
- cset x8, le
- eor w3, w9, w8
- add w9, w3, #75
- lsl w8, w12, w9
- movz w16, #9477, lsl #0
- movk w16, #32767, lsl #16
- sub w5, w8, w16
- lsl w29, w6, w5
- orn w11, wzr, w29
- adrp x16, var_59
- strh w11, [x16, #:lo12:var_59]
- b .L268
-.L259:
- movz w17, #23716, lsl #0
- adrp x16, var_38
- ldrsb w3, [x16, #:lo12:var_38]
- sub w8, w3, #38
- lsl w12, w17, w8
- adrp x16, struct_obj_9 + 8
- ldrsh w4, [x16, #:lo12:struct_obj_9 + 8]
- asr w2, w4, w15
- orr w2, wzr, w2, lsl #16
- adrp x16, struct_obj_2 + 2
- ldrh w12, [x16, #:lo12:struct_obj_2 + 2]
- adrp x16, var_27
- ldrsh w9, [x16, #:lo12:var_27]
- cbnz w9, .L269
- adrp x16, var_24
- ldrsh w7, [x16, #:lo12:var_24]
- cmp w7, #0
- cset x4, ne
- b .L270
-.L269:
- orr w4, wzr, #1
-.L270:
- cbz w4, .L271
- adrp x16, var_17
- ldrsh w4, [x16, #:lo12:var_17]
-.L271:
- adrp x16, var_10
- ldrh w13, [x16, #:lo12:var_10]
- adrp x16, var_62
- strh w13, [x16, #:lo12:var_62]
- adrp x16, var_26
- ldrh w17, [x16, #:lo12:var_26]
-.L268:
- adrp x16, var_54
- ldrsh w14, [x16, #:lo12:var_54]
- cbz w14, .L272
- adrp x16, var_11
- ldrsh w29, [x16, #:lo12:var_11]
- cmp w29, #0
- cset x13, ne
- cbz w13, .L272
- adrp x16, var_18
- ldrsb w8, [x16, #:lo12:var_18]
- cbnz w8, .L273
- adrp x16, var_7
- ldrsb w2, [x16, #:lo12:var_7]
- cmp w2, #0
- cset x4, ne
- cbz w4, .L272
-.L273:
- adrp x16, var_16
- ldrh w17, [x16, #:lo12:var_16]
-.L272:
- adrp x16, struct_obj_3 + 4
- ldrh w11, [x16, #:lo12:struct_obj_3 + 4]
- cbz w11, .L274
- adrp x16, var_17
- ldrsh w17, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w12, [x16, #:lo12:var_9]
- sub w12, w12, #12288
- sub w12, w12, #1187
- lsl w29, w17, w12
- cmp w29, #0
- cset x8, ne
- b .L275
-.L274:
- movz w8, #0, lsl #0
-.L275:
- movn w16, #76, lsl #0
- eor w2, w11, w16
- adrp x16, var_30
- ldrh w12, [x16, #:lo12:var_30]
- orr w12, wzr, w12, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w9, w12, w16
- and w13, w2, w9
- adrp x16, struct_obj_2
- ldrsh w6, [x16, #:lo12:struct_obj_2]
- sub w29, wzr, w6
- sub w17, wzr, w29
- adrp x16, var_1
- ldrh w12, [x16, #:lo12:var_1]
- sub w29, wzr, w12
- madd w3, w17, w29, wzr
- cmp w8, #4
- cset x2, ne
- cmp w3, w2
- cset x9, gt
- cbz w11, .L276
- adrp x16, var_17
- ldrsh w2, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w14, [x16, #:lo12:var_9]
- sub w17, w14, #12288
- sub w17, w17, #1187
- lsl w2, w2, w17
- cmp w2, #0
- cset x9, ne
- b .L277
-.L276:
- movz w9, #0, lsl #0
-.L277:
- cmp w9, #4
- cset x7, ne
- cmp w3, w7
- cset x2, gt
- cmp w13, w2
- cset x3, ge
- orn w14, wzr, w3
- adrp x16, var_549
- strb w14, [x16, #:lo12:var_549]
-.L231:
- adrp x16, struct_obj_4 + 22
- ldrh w2, [x16, #:lo12:struct_obj_4 + 22]
- cbz w2, .L278
- adrp x16, var_17
- ldrsh w9, [x16, #:lo12:var_17]
- adrp x16, var_30
- ldrh w8, [x16, #:lo12:var_30]
- adrp x16, struct_obj_6 + 6
- ldrsh w13, [x16, #:lo12:struct_obj_6 + 6]
- adrp x16, struct_obj_3 + 4
- ldrh w5, [x16, #:lo12:struct_obj_3 + 4]
- adrp x16, var_40
- ldrsb w11, [x16, #:lo12:var_40]
- cbnz w11, .L279
- cbnz w10, .L280
- orr w2, wzr, #1
- b .L281
-.L280:
- orr w2, wzr, #1
- b .L281
-.L279:
- movz w2, #0, lsl #0
-.L281:
- adrp x16, var_47
- ldrsb w6, [x16, #:lo12:var_47]
- cbz w6, .L282
- cmp w5, #0
- cset x4, ne
- cbz w4, .L282
- orr w12, wzr, #1
- b .L283
-.L282:
- orr w7, wzr, #1
- orr w12, wzr, #1
- adrp x16, var_48
- ldrh w11, [x16, #:lo12:var_48]
- cmp w11, #0
- csel x17, x7, x12, ne
- cbz w17, .L284
- cmp w10, #0
- cset x12, eq
- b .L283
-.L284:
- movz w12, #0, lsl #0
-.L283:
- adrp x16, var_18
- ldrsb w11, [x16, #:lo12:var_18]
- orr w3, wzr, w11, lsr #31
- sxtw x29, w11
- movz x17, #30841, lsl #0
- movk x17, #30840, lsl #16
- madd x29, x29, x17, xzr
- orr x10, xzr, x29, asr #32
- add w14, w3, w10, asr #3
- add w14, w14, w14, lsl #4
- sub w6, w11, w14
- sub w14, w2, w12
- cmp w6, w14
- b.le .L285
- cbz w5, .L286
- adrp x16, var_9
- ldrh w29, [x16, #:lo12:var_9]
- sub w3, w29, #12288
- sub w3, w3, #1187
- lsl w2, w9, w3
- cmp w2, #0
- cset x2, ne
- b .L287
-.L286:
- movz w2, #0, lsl #0
-.L287:
- cbz w5, .L288
- adrp x16, var_9
- ldrh w3, [x16, #:lo12:var_9]
- sub w3, w3, #12288
- sub w3, w3, #1187
- lsl w3, w9, w3
- cmp w3, #0
- cset x10, ne
- b .L289
-.L288:
- movz w10, #0, lsl #0
-.L289:
- adrp x16, var_24
- ldrsh w9, [x16, #:lo12:var_24]
- adrp x16, var_41
- ldrh w14, [x16, #:lo12:var_41]
- madd w4, w9, w14, wzr
- movn w16, #76, lsl #0
- eor w7, w5, w16
- orr w17, wzr, w8, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w13, w17, w16
- and w29, w7, w13
- adrp x16, struct_obj_2
- ldrsh w14, [x16, #:lo12:struct_obj_2]
- sub w9, wzr, w14
- sub w17, wzr, w9
- adrp x16, var_1
- ldrh w6, [x16, #:lo12:var_1]
- sub w6, wzr, w6
- madd w7, w17, w6, wzr
- cmp w2, #4
- cset x3, ne
- cmp w7, w3
- cset x6, gt
- cmp w29, w6
- cset x13, ge
- orn w12, wzr, w13
- madd w6, w4, w12, wzr
- cmp w10, #4
- cset x13, ne
- cmp w7, w13
- cset x2, gt
- cmp w29, w2
- cset x7, ge
- adrp x16, var_21
- ldrsb w2, [x16, #:lo12:var_21]
- cmp w2, #0
- cset x8, eq
- orn w4, wzr, w8
- orr w3, w4, #-2
- and w7, w7, w3
- and w8, w6, w7
- adrp x16, var_48
- strh w8, [x16, #:lo12:var_48]
- cbz w5, .L290
- adrp x16, var_17
- ldrsh w4, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w2, [x16, #:lo12:var_9]
- sub w17, w2, #12288
- sub w17, w17, #1187
- lsl w6, w4, w17
- cmp w6, #0
- cset x13, ne
- b .L291
-.L290:
- movz w13, #0, lsl #0
-.L291:
- adrp x16, struct_obj_3 + 4
- ldrh w17, [x16, #:lo12:struct_obj_3 + 4]
- movn w16, #76, lsl #0
- eor w3, w17, w16
- adrp x16, var_30
- ldrh w2, [x16, #:lo12:var_30]
- orr w4, wzr, w2, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w7, w4, w16
- and w4, w3, w7
- adrp x16, struct_obj_2
- ldrsh w29, [x16, #:lo12:struct_obj_2]
- sub w2, wzr, w29
- sub w3, wzr, w2
- adrp x16, var_1
- ldrh w2, [x16, #:lo12:var_1]
- sub w10, wzr, w2
- madd w14, w3, w10, wzr
- cmp w13, #4
- cset x13, ne
- cmp w14, w13
- cset x29, gt
- adrp x16, var_26
- ldrh w7, [x16, #:lo12:var_26]
- cbnz w7, .L292
-.L292:
- cbz w17, .L293
- adrp x16, var_17
- ldrsh w9, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w12, [x16, #:lo12:var_9]
- sub w29, w12, #12288
- sub w29, w29, #1187
- lsl w10, w9, w29
- cmp w10, #0
- cset x3, ne
- b .L294
-.L293:
- movz w3, #0, lsl #0
-.L294:
- cmp w3, #4
- cset x9, ne
- cmp w14, w9
- cset x7, gt
- adrp x16, struct_obj_4 + 14
- ldrsh w17, [x16, #:lo12:struct_obj_4 + 14]
- cbz w17, .L295
- adrp x16, struct_obj_6 + 4
- ldrh w2, [x16, #:lo12:struct_obj_6 + 4]
- cmp w2, #0
- cset x17, ne
- cbz w17, .L295
- orr w2, wzr, #1
- b .L296
-.L295:
- adrp x16, var_60
- ldrsh w2, [x16, #:lo12:var_60]
- cbnz w2, .L297
- adrp x16, struct_obj_4 + 16
- ldrsb w13, [x16, #:lo12:struct_obj_4 + 16]
- cmp w13, #0
- cset x2, ne
- b .L296
-.L297:
- orr w2, wzr, #1
-.L296:
- orr w3, wzr, #1
- orr w7, wzr, #1
- cmp w2, #0
- csel x3, x3, x7, ne
- cbz w3, .L285
- adrp x16, var_65
- ldrsh w14, [x16, #:lo12:var_65]
- cbz w14, .L298
- adrp x16, struct_obj_9 + 20
- ldrsh w5, [x16, #:lo12:struct_obj_9 + 20]
- cmp w5, #0
- cset x9, ne
- cbz w9, .L298
- adrp x16, var_3
- ldrsb w17, [x16, #:lo12:var_3]
- cbz w17, .L299
- adrp x16, var_51
- ldrsh w7, [x16, #:lo12:var_51]
- cmp w7, #0
- cset x14, ne
- b .L300
-.L299:
- movz w14, #0, lsl #0
- b .L300
-.L298:
- movz w14, #0, lsl #0
-.L300:
- eor w2, w14, #1
- cbz w2, .L285
- adrp x16, var_50
- ldrh w9, [x16, #:lo12:var_50]
- cbz w9, .L301
- adrp x16, struct_obj_7
- ldrsb w14, [x16, #:lo12:struct_obj_7]
- cmp w14, #0
- cset x5, ne
- b .L302
-.L301:
- movz w5, #0, lsl #0
-.L302:
- cbnz w5, .L285
- orr w2, wzr, #1
- movz w11, #0, lsl #0
- adrp x16, var_45
- ldrsb w5, [x16, #:lo12:var_45]
- cmp w5, #0
- csel x2, x2, x11, ne
- cbnz w2, .L285
- adrp x16, var_19
- ldrsb w4, [x16, #:lo12:var_19]
-.L285:
- adrp x16, struct_obj_3 + 4
- ldrh w11, [x16, #:lo12:struct_obj_3 + 4]
- cbz w11, .L303
- adrp x16, var_17
- ldrsh w29, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w12, [x16, #:lo12:var_9]
- sub w5, w12, #12288
- sub w5, w5, #1187
- lsl w12, w29, w5
- cmp w12, #0
- cset x5, ne
- b .L304
-.L303:
- movz w5, #0, lsl #0
-.L304:
- adrp x16, var_24
- ldrsh w12, [x16, #:lo12:var_24]
- adrp x16, struct_obj_9 + 2
- ldrsb w29, [x16, #:lo12:struct_obj_9 + 2]
- add w13, w12, w29
- adrp x16, struct_obj_2
- ldrsh w4, [x16, #:lo12:struct_obj_2]
- sub w2, w4, #61440
- sub w2, w2, #4094
- add w3, w13, w2
- movz w14, #125, lsl #0
- adrp x16, var_40
- ldrsb w12, [x16, #:lo12:var_40]
- sub w17, w14, w12
- sub w10, wzr, w17
- sub w13, w3, w10
- adrp x16, struct_obj_8
- ldrh w12, [x16, #:lo12:struct_obj_8]
- adrp x16, var_6
- ldrh w8, [x16, #:lo12:var_6]
- sub w10, w12, w8
- sub w9, wzr, w10
- movn w16, #76, lsl #0
- eor w17, w11, w16
- adrp x16, var_30
- ldrh w14, [x16, #:lo12:var_30]
- orr w14, wzr, w14, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w2, w14, w16
- and w17, w17, w2
- sub w11, wzr, w4
- sub w3, wzr, w11
- adrp x16, var_1
- ldrh w29, [x16, #:lo12:var_1]
- sub w4, wzr, w29
- madd w10, w3, w4, wzr
- cmp w5, #4
- cset x11, ne
- cmp w10, w11
- cset x6, gt
- cmp w17, w6
- cset x11, ge
- madd w2, w9, w11, wzr
- madd w17, w13, w2, wzr
- orn w11, wzr, w17
- adrp x16, var_52
- strh w11, [x16, #:lo12:var_52]
- adrp x16, var_57
- ldrsb w8, [x16, #:lo12:var_57]
- cbnz w8, .L305
- adrp x16, var_39
- ldrh w11, [x16, #:lo12:var_39]
- cmp w11, #0
- cset x14, eq
- b .L306
-.L305:
- movz w14, #0, lsl #0
-.L306:
- adrp x16, var_29
- ldrh w2, [x16, #:lo12:var_29]
- sub w7, wzr, w14
- asr w14, w2, w7
- orr w11, wzr, #1
- orr w0, w15, w0
- movn w16, #8063, lsl #0
- cmp w0, w16
- cset x5, lt
- orn w12, wzr, w5
- sub w17, w11, w12
- sdiv w6, w14, w17
- msub w4, w6, w17, w14
- cbz w4, .L307
- adrp x16, struct_obj_3 + 4
- ldrh w9, [x16, #:lo12:struct_obj_3 + 4]
- cbz w9, .L308
- adrp x16, var_17
- ldrsh w7, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w3, [x16, #:lo12:var_9]
- sub w4, w3, #12288
- sub w4, w4, #1187
- lsl w11, w7, w4
- cmp w11, #0
- cset x10, ne
- b .L309
-.L308:
- movz w10, #0, lsl #0
-.L309:
- movn w16, #76, lsl #0
- eor w15, w9, w16
- adrp x16, var_30
- ldrh w7, [x16, #:lo12:var_30]
- orr w2, wzr, w7, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w5, w2, w16
- and w3, w15, w5
- adrp x16, struct_obj_2
- ldrsh w8, [x16, #:lo12:struct_obj_2]
- sub w5, wzr, w8
- sub w17, wzr, w5
- adrp x16, var_1
- ldrh w15, [x16, #:lo12:var_1]
- sub w5, wzr, w15
- madd w7, w17, w5, wzr
- cmp w10, #4
- cset x10, ne
- cmp w7, w10
- cset x7, gt
- cmp w3, w7
- cset x12, ge
- adrp x16, struct_obj_4 + 22
- ldrh w8, [x16, #:lo12:struct_obj_4 + 22]
- sbfiz w2, w8, 0, 8
- and w2, w12, w2
- adrp x16, var_8
- ldrh w9, [x16, #:lo12:var_8]
- movz w0, #16848, lsl #0
- movk w0, #61777, lsl #16
- sdiv w12, w9, w0
- sbfiz w0, w12, 0, 16
- asr w11, w2, w0
- adrp x16, struct_obj_5
- ldrsb w13, [x16, #:lo12:struct_obj_5]
- movn w7, #99, lsl #0
- adrp x16, var_19
- ldrsb w2, [x16, #:lo12:var_19]
- madd w4, w2, w7, wzr
- sub w7, wzr, w4
- sbfiz w17, w7, 0, 16
- cmp w13, w17
- cset x3, le
- asr w9, w11, w3
- ubfiz w8, w9, 0, 16
- adrp x16, var_31
- ldrsh w7, [x16, #:lo12:var_31]
- sub w2, w7, w8
- orn w4, wzr, w2
- movn w14, #19434, lsl #0
- adrp x16, struct_obj_9 + 2
- ldrsb w2, [x16, #:lo12:struct_obj_9 + 2]
- sdiv w3, w14, w2
- msub w0, w3, w2, w14
- sbfiz w11, w0, 0, 8
- add w29, w11, #55
- asr w3, w4, w29
- orn w0, wzr, w3
- cmp w0, #0
- cset x9, eq
- adrp x16, var_558
- strh w9, [x16, #:lo12:var_558]
- adrp x16, struct_obj_6 + 4
- ldrh w2, [x16, #:lo12:struct_obj_6 + 4]
- cbz w2, .L310
- adrp x16, struct_obj_4 + 2
- ldrsb w10, [x16, #:lo12:struct_obj_4 + 2]
- cmp w10, #0
- cset x11, ne
- b .L311
-.L310:
- movz w11, #0, lsl #0
-.L311:
- orn w6, wzr, w11
- sdiv w9, w1, w6
- msub w10, w9, w6, w1
- cbz w10, .L312
- orr w29, wzr, #1
- movz w10, #0, lsl #0
- movz w5, #0, lsl #0
- cmp w29, #0
- csel x11, x10, x5, ne
- eor w15, w11, #1
- b .L313
-.L312:
- movz w15, #0, lsl #0
-.L313:
- adrp x16, struct_obj_1 + 6
- ldrsh w9, [x16, #:lo12:struct_obj_1 + 6]
- cmp w15, w9
- cset x29, eq
- adrp x16, var_64
- strb w29, [x16, #:lo12:var_64]
- adrp x16, struct_obj_3 + 4
- ldrh w17, [x16, #:lo12:struct_obj_3 + 4]
- cbz w17, .L314
- adrp x16, var_17
- ldrsh w9, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w14, [x16, #:lo12:var_9]
- sub w0, w14, #12288
- sub w0, w0, #1187
- lsl w15, w9, w0
- cmp w15, #0
- cset x29, ne
- b .L315
-.L314:
- movz w29, #0, lsl #0
-.L315:
- movn w16, #76, lsl #0
- eor w3, w17, w16
- adrp x16, var_30
- ldrh w8, [x16, #:lo12:var_30]
- orr w5, wzr, w8, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w8, w5, w16
- and w12, w3, w8
- adrp x16, struct_obj_2
- ldrsh w11, [x16, #:lo12:struct_obj_2]
- sub w10, wzr, w11
- sub w13, wzr, w10
- adrp x16, var_1
- ldrh w15, [x16, #:lo12:var_1]
- sub w14, wzr, w15
- madd w7, w13, w14, wzr
- cmp w29, #4
- cset x13, ne
- cmp w7, w13
- cset x5, gt
- cbz w17, .L316
- adrp x16, var_17
- ldrsh w5, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w4, [x16, #:lo12:var_9]
- sub w10, w4, #12288
- sub w10, w10, #1187
- lsl w8, w5, w10
- cmp w8, #0
- cset x8, ne
- b .L317
-.L316:
- movz w8, #0, lsl #0
-.L317:
- cmp w8, #4
- cset x2, ne
- cmp w7, w2
- cset x8, gt
- orn w13, wzr, w17
- adrp x16, struct_obj_5 + 2
- ldrsh w14, [x16, #:lo12:struct_obj_5 + 2]
-.L307:
- adrp x16, struct_obj_3 + 4
- ldrh w15, [x16, #:lo12:struct_obj_3 + 4]
- adrp x16, var_1
- ldrh w11, [x16, #:lo12:var_1]
- movn w16, #23820, lsl #0
- eor w0, w11, w16
- orn w8, wzr, w0
- cbnz w8, .L318
- cbz w15, .L319
- adrp x16, var_17
- ldrsh w7, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w6, [x16, #:lo12:var_9]
- sub w12, w6, #12288
- sub w12, w12, #1187
- lsl w10, w7, w12
- cmp w10, #0
- cset x17, ne
- b .L320
-.L319:
- movz w17, #0, lsl #0
-.L320:
- movn w16, #76, lsl #0
- eor w8, w15, w16
- adrp x16, var_30
- ldrh w29, [x16, #:lo12:var_30]
- orr w9, wzr, w29, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w5, w9, w16
- and w9, w8, w5
- adrp x16, struct_obj_2
- ldrsh w7, [x16, #:lo12:struct_obj_2]
- sub w29, wzr, w7
- sub w7, wzr, w29
- sub w8, wzr, w11
- madd w12, w7, w8, wzr
- cmp w17, #4
- cset x17, ne
- cmp w12, w17
- cset x8, gt
- movz w13, #55, lsl #0
- adrp x16, var_51
- strh w13, [x16, #:lo12:var_51]
- cbz w15, .L321
- adrp x16, var_17
- ldrsh w4, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w15, [x16, #:lo12:var_9]
- sub w9, w15, #12288
- sub w9, w9, #1187
- lsl w17, w4, w9
- cmp w17, #0
- cset x12, ne
- b .L322
-.L321:
- movz w12, #0, lsl #0
-.L322:
- adrp x16, struct_obj_3 + 4
- ldrh w13, [x16, #:lo12:struct_obj_3 + 4]
- movn w16, #76, lsl #0
- eor w2, w13, w16
- adrp x16, var_30
- ldrh w5, [x16, #:lo12:var_30]
- orr w3, wzr, w5, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w0, w3, w16
- and w17, w2, w0
- adrp x16, struct_obj_2
- ldrsh w9, [x16, #:lo12:struct_obj_2]
- sub w15, wzr, w9
- sub w11, wzr, w15
- adrp x16, var_1
- ldrh w8, [x16, #:lo12:var_1]
- sub w0, wzr, w8
- madd w3, w11, w0, wzr
- cmp w12, #4
- cset x10, ne
- cmp w3, w10
- cset x0, gt
- cbz w13, .L323
- adrp x16, var_17
- ldrsh w14, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w0, [x16, #:lo12:var_9]
- sub w8, w0, #12288
- sub w8, w8, #1187
- lsl w2, w14, w8
- cmp w2, #0
- cset x11, ne
- b .L324
-.L323:
- movz w11, #0, lsl #0
-.L324:
- cmp w11, #4
- cset x29, ne
- cmp w3, w29
- cset x5, gt
- b .L278
-.L318:
- cbz w15, .L325
- adrp x16, var_17
- ldrsh w9, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w8, [x16, #:lo12:var_9]
- sub w10, w8, #12288
- sub w10, w10, #1187
- lsl w4, w9, w10
- cmp w4, #0
- cset x3, ne
- b .L326
-.L325:
- movz w3, #0, lsl #0
-.L326:
- movn w16, #76, lsl #0
- eor w14, w15, w16
- adrp x16, var_30
- ldrh w2, [x16, #:lo12:var_30]
- orr w10, wzr, w2, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w17, w10, w16
- and w7, w14, w17
- adrp x16, struct_obj_2
- ldrsh w6, [x16, #:lo12:struct_obj_2]
- sub w12, wzr, w6
- sub w12, wzr, w12
- sub w4, wzr, w11
- madd w2, w12, w4, wzr
- cmp w3, #4
- cset x12, ne
- cmp w2, w12
- cset x13, gt
- cbz w15, .L327
- adrp x16, var_17
- ldrsh w10, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w6, [x16, #:lo12:var_9]
- sub w17, w6, #12288
- sub w17, w17, #1187
- lsl w8, w10, w17
- cmp w8, #0
- cset x6, ne
- b .L328
-.L327:
- movz w6, #0, lsl #0
-.L328:
- movn w3, #54, lsl #0
- adrp x16, var_41
- ldrh w4, [x16, #:lo12:var_41]
- madd w0, w4, w3, wzr
- sbfiz w0, w0, 0, 16
- sub w3, wzr, w15
- movz w16, #4355, lsl #0
- cmp w3, w16
- cset x10, gt
- sub w4, w10, #1
- cmp w6, #4
- cset x5, ne
- cmp w2, w5
- cset x2, gt
- cmp w7, w2
- cset x10, ge
- movz w16, #7584, lsl #0
- cmp w10, w16
- cset x5, le
- cmp w4, w5
- cset x14, le
- sub w4, wzr, w14
- cmp w4, #0
- cset x11, eq
- madd w10, w0, w11, wzr
- adrp x16, struct_obj_8 + 28
- ldrsh w12, [x16, #:lo12:struct_obj_8 + 28]
- orn w4, wzr, w12
- adrp x16, struct_obj_5 + 2
- ldrsh w12, [x16, #:lo12:struct_obj_5 + 2]
- orn w0, w4, w12
- orr w10, wzr, #1
- adrp x16, var_2
- ldrh w17, [x16, #:lo12:var_2]
- adrp x16, var_34
- ldrsb w11, [x16, #:lo12:var_34]
- sdiv w17, w17, w11
- orn w13, wzr, w17
- sub w11, w13, #233
- lsl w10, w10, w11
- movn w16, #49, lsl #0
- orr w10, w10, w16
- orr w17, w0, w10
- adrp x16, struct_obj_8 + 8
- ldrsb w2, [x16, #:lo12:struct_obj_8 + 8]
- bic w2, w17, w2
- cbz w2, .L278
-.L278:
- adrp x16, var_62
- ldrh w17, [x16, #:lo12:var_62]
- adrp x16, var_8
- ldrh w9, [x16, #:lo12:var_8]
- cmp w9, #0
- cset x12, le
- and w9, w17, w12
- cbz w9, .L329
- adrp x16, struct_obj_1
- ldrsh w4, [x16, #:lo12:struct_obj_1]
- adrp x16, struct_obj_3 + 4
- ldrh w8, [x16, #:lo12:struct_obj_3 + 4]
- cbz w8, .L330
- adrp x16, var_17
- ldrsh w9, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w12, [x16, #:lo12:var_9]
- sub w7, w12, #12288
- sub w7, w7, #1187
- lsl w6, w9, w7
- cmp w6, #0
- cset x10, ne
- b .L331
-.L330:
- movz w10, #0, lsl #0
-.L331:
- adrp x16, var_27
- ldrsh w6, [x16, #:lo12:var_27]
- cmp w6, #0
- cset x2, eq
- adrp x16, var_10
- ldrh w6, [x16, #:lo12:var_10]
- adrp x16, var_60
- ldrsh w29, [x16, #:lo12:var_60]
- cmp w6, w29
- cset x5, le
- sub w17, w2, w5
- cbz w17, .L332
- movn w17, #19779, lsl #0
- orr w7, wzr, #-128
- adrp x16, var_40
- ldrsb w9, [x16, #:lo12:var_40]
- madd w14, w9, w7, wzr
- madd w29, w14, w17, wzr
- cmp w29, #0
- cset x2, ne
- b .L333
-.L332:
- movz w2, #0, lsl #0
-.L333:
- movn w16, #76, lsl #0
- eor w9, w8, w16
- adrp x16, var_30
- ldrh w12, [x16, #:lo12:var_30]
- orr w5, wzr, w12, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w14, w5, w16
- and w0, w9, w14
- adrp x16, struct_obj_2
- ldrsh w3, [x16, #:lo12:struct_obj_2]
- sub w11, wzr, w3
- sub w11, wzr, w11
- adrp x16, var_1
- ldrh w5, [x16, #:lo12:var_1]
- sub w15, wzr, w5
- madd w11, w11, w15, wzr
- cmp w10, #4
- cset x13, ne
- cmp w11, w13
- cset x4, gt
- cmp w0, w4
- cset x15, ge
- adrp x16, struct_obj_9 + 8
- ldrsh w3, [x16, #:lo12:struct_obj_9 + 8]
- add w12, w15, w3
- add w3, w12, #57344
- add w3, w3, #1750
- sbfiz w17, w3, 0, 8
- cmp w17, w2
- cset x15, gt
- adrp x16, var_43
- ldrh w17, [x16, #:lo12:var_43]
- adrp x16, struct_obj_5 + 6
- ldrsh w7, [x16, #:lo12:struct_obj_5 + 6]
- add w12, w17, w7
- movz w16, #26468, lsl #0
- cmp w12, w16
- cset x10, lt
- sub w2, wzr, w10
- cmp w2, #43
- cset x29, gt
- and w15, w15, w29
- adrp x16, var_53
- ldrsh w12, [x16, #:lo12:var_53]
- cbnz w12, .L334
- adrp x16, var_61
- ldrsb w13, [x16, #:lo12:var_61]
- ubfiz w13, w13, 0, 16
- cmp w13, #0
- cset x13, ne
- cbnz w13, .L334
- orr w2, wzr, #1
- cbnz w2, .L334
- cbnz w6, .L334
- adrp x16, var_44
- ldrh w10, [x16, #:lo12:var_44]
- cmp w10, #0
- cset x4, ne
-.L334:
- adrp x16, struct_obj_4 + 10
- ldrh w7, [x16, #:lo12:struct_obj_4 + 10]
- cbz w8, .L335
- adrp x16, var_17
- ldrsh w12, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w6, [x16, #:lo12:var_9]
- sub w6, w6, #12288
- sub w6, w6, #1187
- lsl w13, w12, w6
- cmp w13, #0
- cset x10, ne
- b .L336
-.L335:
- movz w10, #0, lsl #0
-.L336:
- cmp w10, #4
- cset x4, ne
- cmp w11, w4
- cset x17, gt
- cbz w8, .L337
- adrp x16, var_17
- ldrsh w12, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w3, [x16, #:lo12:var_9]
- sub w0, w3, #12288
- sub w0, w0, #1187
- lsl w10, w12, w0
- cmp w10, #0
- cset x12, ne
- b .L338
-.L337:
- movz w12, #0, lsl #0
-.L338:
- adrp x16, struct_obj_4 + 16
- ldrsb w2, [x16, #:lo12:struct_obj_4 + 16]
- movn w16, #27631, lsl #0
- and w29, w2, w16
- sub w17, wzr, w8
- movz w16, #4355, lsl #0
- cmp w17, w16
- cset x5, gt
- sub w10, w5, #1
- and w13, w9, w14
- cmp w12, #4
- cset x14, ne
- cmp w11, w14
- cset x9, gt
- cmp w13, w9
- cset x5, ge
- movz w16, #7584, lsl #0
- cmp w5, w16
- cset x8, le
- cmp w10, w8
- cset x6, le
- eor w5, w29, w6
- sub w29, wzr, w5
- sub w9, wzr, w29
- adrp x16, struct_obj_10 + 4
- strb w9, [x16, #:lo12:struct_obj_10 + 4]
- orr w2, wzr, #1
- movz w12, #0, lsl #0
- adrp x16, var_43
- ldrh w8, [x16, #:lo12:var_43]
- cmp w8, #0
- csel x4, x2, x12, ne
- cbnz w4, .L339
- adrp x16, var_25
- ldrsb w0, [x16, #:lo12:var_25]
- cmp w0, #0
- cset x8, ne
- b .L340
-.L339:
- orr w8, wzr, #1
-.L340:
- adrp x16, struct_obj_3 + 4
- ldrh w6, [x16, #:lo12:struct_obj_3 + 4]
- cbz w6, .L341
- adrp x16, var_17
- ldrsh w17, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w7, [x16, #:lo12:var_9]
- sub w2, w7, #12288
- sub w2, w2, #1187
- lsl w9, w17, w2
- cmp w9, #0
- cset x9, ne
- b .L342
-.L341:
- movz w9, #0, lsl #0
-.L342:
- movn w16, #76, lsl #0
- eor w12, w6, w16
- adrp x16, var_30
- ldrh w3, [x16, #:lo12:var_30]
- orr w3, wzr, w3, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w13, w3, w16
- and w0, w12, w13
- adrp x16, struct_obj_2
- ldrsh w7, [x16, #:lo12:struct_obj_2]
- sub w13, wzr, w7
- sub w11, wzr, w13
- adrp x16, var_1
- ldrh w29, [x16, #:lo12:var_1]
- sub w19, wzr, w29
- madd w7, w11, w19, wzr
- cmp w9, #4
- cset x10, ne
- cmp w7, w10
- cset x17, gt
- cbz w6, .L343
- adrp x16, var_17
- ldrsh w4, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w17, [x16, #:lo12:var_9]
- sub w13, w17, #12288
- sub w13, w13, #1187
- lsl w10, w4, w13
- cmp w10, #0
- cset x17, ne
- b .L344
-.L343:
- movz w17, #0, lsl #0
-.L344:
- adrp x16, var_7
- ldrsb w4, [x16, #:lo12:var_7]
- sub w2, wzr, w4
- cbnz w2, .L345
- adrp x16, struct_obj_4 + 16
- ldrsb w5, [x16, #:lo12:struct_obj_4 + 16]
- cbnz w5, .L346
- adrp x16, var_12
- ldrh w5, [x16, #:lo12:var_12]
- cmp w5, #0
- cset x10, ne
- b .L347
-.L346:
- orr w10, wzr, #1
- b .L347
-.L345:
- orr w10, wzr, #1
-.L347:
- orr w9, wzr, #1
- sub w13, wzr, w6
- movz w16, #4355, lsl #0
- cmp w13, w16
- cset x2, gt
- sub w2, w2, #1
- cmp w17, #4
- cset x4, ne
- cmp w7, w4
- cset x5, gt
- cmp w0, w5
- cset x5, ge
- movz w16, #7584, lsl #0
- cmp w5, w16
- cset x14, le
- cmp w2, w14
- cset x13, le
- orn w2, wzr, w13
- cmp w2, w10
- cset x2, eq
- adrp x16, var_27
- ldrsh w17, [x16, #:lo12:var_27]
- movn w16, #97, lsl #0
- and w13, w17, w16
- cmp w9, w6
- cset x29, ne
- cmp w13, w29
- cset x9, le
- cmp w2, w9
- cset x5, le
- cmp w8, w5
- b.eq .L348
- cbz w6, .L349
- adrp x16, var_17
- ldrsh w9, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w8, [x16, #:lo12:var_9]
- sub w4, w8, #12288
- sub w4, w4, #1187
- lsl w15, w9, w4
- cmp w15, #0
- cset x4, ne
- b .L350
-.L349:
- movz w4, #0, lsl #0
-.L350:
- cmp w4, #4
- cset x9, ne
- cmp w7, w9
- cset x15, gt
- cbz w6, .L351
- adrp x16, var_17
- ldrsh w2, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w8, [x16, #:lo12:var_9]
- sub w29, w8, #12288
- sub w29, w29, #1187
- lsl w29, w2, w29
- cmp w29, #0
- cset x14, ne
- b .L352
-.L351:
- movz w14, #0, lsl #0
-.L352:
- cmp w14, #4
- cset x8, ne
- cmp w7, w8
- cset x1, gt
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w13, w3, w16
- cbz w6, .L353
- adrp x16, var_17
- ldrsh w15, [x16, #:lo12:var_17]
- adrp x16, var_9
- ldrh w1, [x16, #:lo12:var_9]
- sub w1, w1, #12288
- sub w1, w1, #1187
- lsl w4, w15, w1
- cmp w4, #0
- cset x3, ne
- b .L354
-.L353:
- movz w3, #0, lsl #0
-.L354:
- and w15, w12, w13
- madd w1, w11, w19, wzr
- cmp w3, #4
- cset x17, ne
- cmp w1, w17
- cset x9, gt
- b .L355
-.L348:
- adrp x16, struct_obj_8 + 24
- ldrh w12, [x16, #:lo12:struct_obj_8 + 24]
- orr w8, w15, w12
- cbnz w8, .L356
- adrp x16, var_22
- ldrsb w6, [x16, #:lo12:var_22]
- cmp w6, #0
- cset x5, ne
- b .L357
-.L356:
- orr w5, wzr, #1
-.L357:
- orn w3, wzr, w5
- adrp x16, struct_obj_4 + 2
- ldrsb w14, [x16, #:lo12:struct_obj_4 + 2]
- cmp w14, #30
- cset x4, ge
- adrp x16, struct_obj_8 + 26
- ldrsb w9, [x16, #:lo12:struct_obj_8 + 26]
- adrp x16, struct_obj_8 + 2
- ldrsh w8, [x16, #:lo12:struct_obj_8 + 2]
- cbnz w8, .L358
- adrp x16, var_38
- ldrsb w5, [x16, #:lo12:var_38]
- cmp w5, #0
- cset x4, ne
- b .L359
-.L358:
- orr w4, wzr, #1
-.L359:
- adrp x16, var_57
- ldrsb w10, [x16, #:lo12:var_57]
- adrp x16, var_37
- ldrsb w11, [x16, #:lo12:var_37]
- and w7, w10, w11
- cbnz w7, .L360
- adrp x16, var_5
- ldrh w10, [x16, #:lo12:var_5]
- orn w6, wzr, w10
- cmp w6, #0
- cset x8, ne
- b .L361
-.L360:
- orr w8, wzr, #1
-.L361:
- adrp x16, var_21
- ldrsb w3, [x16, #:lo12:var_21]
- cmp w3, #0
- cset x2, eq
- adrp x16, var_55
- ldrsb w3, [x16, #:lo12:var_55]
- madd w7, w3, w1, wzr
- madd w2, w2, w7, wzr
- ubfiz w11, w2, 0, 16
- adrp x16, var_56
- ldrh w10, [x16, #:lo12:var_56]
- madd w1, w10, w9, wzr
- cmp w4, w1
- cset x9, le
- cmp w9, w8
- cset x12, gt
- cmp w11, w12
- cset x4, le
- adrp x16, var_62
- ldrh w14, [x16, #:lo12:var_62]
- cmp w4, w14
- cset x0, le
- adrp x16, var_42
- strb w0, [x16, #:lo12:var_42]
-.L355:
- movn w11, #94, lsl #0
- adrp x16, struct_obj_9 + 8
- ldrsh w2, [x16, #:lo12:struct_obj_9 + 8]
- sub w17, w2, #38
- adrp x16, var_48
- ldrh w9, [x16, #:lo12:var_48]
- madd w17, w17, w9, wzr
- madd w7, w17, w11, wzr
- cmp w7, #110
- b.ge .L362
- movz w10, #5919, lsl #0
- movk w10, #5, lsl #16
- movn w13, #974, lsl #0
- adrp x16, struct_obj_9 + 2
- ldrsb w8, [x16, #:lo12:struct_obj_9 + 2]
- madd w12, w8, w13, wzr
- adrp x16, var_9
- ldrh w15, [x16, #:lo12:var_9]
- adrp x16, struct_obj_3
- ldrsh w3, [x16, #:lo12:struct_obj_3]
- madd w2, w15, w3, wzr
- sdiv w9, w12, w2
- movz w7, #9108, lsl #0
- movk w7, #2, lsl #16
- adrp x16, struct_obj_8 + 6
- ldrsh w6, [x16, #:lo12:struct_obj_8 + 6]
- cmp w6, #0
- cset x13, eq
- madd w17, w13, w7, wzr
- madd w5, w9, w17, wzr
- madd w5, w5, w10, wzr
- cbnz w5, .L363
- adrp x16, struct_obj_4 + 2
- ldrsb w9, [x16, #:lo12:struct_obj_4 + 2]
- ubfiz w3, w9, 0, 16
-.L363:
- adrp x16, struct_obj_3 + 4
- ldrh w14, [x16, #:lo12:struct_obj_3 + 4]
- cbz w14, .L364
- adrp x16, var_17
- ldrsh w7, [x16, #:lo12:var_17]
- sub w12, w15, #12288
- sub w12, w12, #1187
- lsl w1, w7, w12
- cmp w1, #0
- cset x6, ne
- b .L365
-.L364:
- movz w6, #0, lsl #0
-.L365:
- movn w16, #76, lsl #0
- eor w10, w14, w16
- adrp x16, var_30
- ldrh w13, [x16, #:lo12:var_30]
- orr w11, wzr, w13, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w9, w11, w16
- and w5, w10, w9
- adrp x16, struct_obj_2
- ldrsh w3, [x16, #:lo12:struct_obj_2]
- sub w12, wzr, w3
- sub w2, wzr, w12
- adrp x16, var_1
- ldrh w9, [x16, #:lo12:var_1]
- sub w29, wzr, w9
- madd w2, w2, w29, wzr
- cmp w6, #4
- cset x29, ne
- cmp w2, w29
- cset x4, gt
- adrp x16, var_7
- ldrsb w10, [x16, #:lo12:var_7]
- sub w4, wzr, w10
- cbnz w4, .L366
- adrp x16, struct_obj_4 + 16
- ldrsb w7, [x16, #:lo12:struct_obj_4 + 16]
-.L366:
- sub w6, wzr, w14
- movz w16, #4355, lsl #0
- cmp w6, w16
- cset x7, gt
- adrp x16, var_27
- ldrsh w3, [x16, #:lo12:var_27]
- movn w16, #97, lsl #0
- and w0, w3, w16
- adrp x16, var_18
- ldrsb w12, [x16, #:lo12:var_18]
- ubfiz w3, w12, 0, 16
- cbnz w3, .L367
- cbz w14, .L368
- adrp x16, var_17
- ldrsh w1, [x16, #:lo12:var_17]
- sub w9, w15, #12288
- sub w9, w9, #1187
- lsl w8, w1, w9
- cmp w8, #0
- cset x29, ne
- b .L369
-.L368:
- movz w29, #0, lsl #0
-.L369:
- cmp w29, #4
- cset x6, ne
- cmp w2, w6
- cset x6, gt
- cbz w14, .L370
- adrp x16, var_17
- ldrsh w6, [x16, #:lo12:var_17]
- sub w3, w15, #12288
- sub w3, w3, #1187
- lsl w15, w6, w3
- cmp w15, #0
- cset x10, ne
- b .L371
-.L370:
- movz w10, #0, lsl #0
-.L371:
- cbnz w4, .L372
- adrp x16, struct_obj_4 + 16
- ldrsb w13, [x16, #:lo12:struct_obj_4 + 16]
- cbnz w13, .L373
- adrp x16, var_12
- ldrh w17, [x16, #:lo12:var_12]
- cmp w17, #0
- cset x1, ne
- b .L374
-.L373:
- orr w1, wzr, #1
- b .L374
-.L372:
- orr w1, wzr, #1
-.L374:
- orr w11, wzr, #1
- sub w12, w7, #1
- cmp w10, #4
- cset x15, ne
- cmp w2, w15
- cset x29, gt
- cmp w5, w29
- cset x3, ge
- movz w16, #7584, lsl #0
- cmp w3, w16
- cset x5, le
- cmp w12, w5
- cset x29, le
- orn w12, wzr, w29
- cmp w12, w1
- cset x8, eq
- cmp w11, w14
- cset x17, ne
- cmp w0, w17
- cset x15, le
- cmp w8, w15
- b.gt .L375
- adrp x16, struct_obj_8 + 18
- ldrsh w0, [x16, #:lo12:struct_obj_8 + 18]
- cmp w0, #0
- cset x0, ne
- cbnz w0, .L367
-.L375:
- orr w0, wzr, #1
- eor w0, w0, #1
- cbz w0, .L329
-.L367:
- orr w0, wzr, #1
- cbnz w0, .L329
- adrp x16, var_45
- ldrsb w0, [x16, #:lo12:var_45]
- cbz w0, .L329
- adrp x16, struct_obj_8 + 26
- ldrsb w0, [x16, #:lo12:struct_obj_8 + 26]
- cbnz w0, .L329
- adrp x16, var_23
- ldrh w0, [x16, #:lo12:var_23]
- cmp w0, #0
- cset x0, ne
- b .L329
-.L362:
- adrp x16, var_17
- ldrsh w12, [x16, #:lo12:var_17]
- adrp x16, var_60
- ldrsh w3, [x16, #:lo12:var_60]
- cbnz w3, .L376
- adrp x16, struct_obj_9 + 26
- ldrsh w11, [x16, #:lo12:struct_obj_9 + 26]
- cmp w11, #0
- cset x7, ne
- b .L377
-.L376:
- orr w7, wzr, #1
-.L377:
- sbfiz w9, w3, 0, 8
- adrp x16, struct_obj_8 + 28
- ldrsh w8, [x16, #:lo12:struct_obj_8 + 28]
- and w5, w9, w8
- asr w7, w5, w7
- cbnz w7, .L378
- adrp x16, struct_obj_3 + 4
- ldrh w5, [x16, #:lo12:struct_obj_3 + 4]
-.L378:
- adrp x16, var_62
- ldrh w5, [x16, #:lo12:var_62]
- add w6, w2, w5
- adrp x16, struct_obj_2
- ldrsh w5, [x16, #:lo12:struct_obj_2]
- cmp w5, #0
- cset x15, eq
- adrp x16, struct_obj_3 + 4
- ldrh w11, [x16, #:lo12:struct_obj_3 + 4]
- cbz w11, .L379
- adrp x16, var_9
- ldrh w4, [x16, #:lo12:var_9]
- sub w13, w4, #12288
- sub w13, w13, #1187
- lsl w9, w12, w13
- cmp w9, #0
- cset x12, ne
- b .L380
-.L379:
- movz w12, #0, lsl #0
-.L380:
- movn w16, #76, lsl #0
- eor w14, w11, w16
- adrp x16, var_30
- ldrh w4, [x16, #:lo12:var_30]
- orr w15, wzr, w4, asr #7
- movz w16, #65483, lsl #0
- movk w16, #8191, lsl #16
- orr w13, w15, w16
- and w13, w14, w13
- sub w15, wzr, w5
- sub w17, wzr, w15
- adrp x16, var_1
- ldrh w7, [x16, #:lo12:var_1]
- sub w14, wzr, w7
- madd w3, w17, w14, wzr
- cmp w12, #4
- cset x5, ne
- cmp w3, w5
- cset x8, gt
- adrp x16, var_7
- ldrsb w0, [x16, #:lo12:var_7]
- sub w0, wzr, w0
- cbnz w0, .L381
- adrp x16, struct_obj_4 + 16
- ldrsb w0, [x16, #:lo12:struct_obj_4 + 16]
-.L381:
- adrp x16, var_37
- ldrsb w0, [x16, #:lo12:var_37]
- movz w0, #0, lsl #0
- adrp x16, var_52
- strh w0, [x16, #:lo12:var_52]
-.L329:
- ldr x19, [sp, #16]
- ldr x20, [sp, #24]
- ldr x30, [sp, #8]
- add sp, sp, #32
- ret x30
- .type foo, @function
- .size foo, . - foo
diff --git a/multiple_labels_crash_test/hash.c b/multiple_labels_crash_test/hash.c
deleted file mode 100644
index a979bdc1..00000000
--- a/multiple_labels_crash_test/hash.c
+++ /dev/null
@@ -1,3 +0,0 @@
-void hash(unsigned long long int *seed, unsigned long long int const v) {
- *seed ^= v + 0x9e3779b9 + ((*seed)<<6) + ((*seed)>>2);
-}
diff --git a/multiple_labels_crash_test/init.c b/multiple_labels_crash_test/init.c
deleted file mode 100644
index d3c7cfcc..00000000
--- a/multiple_labels_crash_test/init.c
+++ /dev/null
@@ -1,209 +0,0 @@
-#include "init.h"
-
-const unsigned short var_1 = 64966;
-const unsigned short var_2 = 17784;
-signed char var_3 = 58;
-const unsigned short var_4 = 3656;
-unsigned short var_5 = 17583;
-const unsigned short var_6 = 40663;
-const signed char var_7 = 42;
-unsigned short var_8 = 14662;
-unsigned short var_9 = 13482;
-unsigned short var_10 = 21751;
-const short var_11 = 9782;
-const unsigned short var_12 = 29985;
-short var_13 = -23903;
-const signed char var_14 = 26;
-const unsigned short var_15 = 38613;
-unsigned short var_16 = 7910;
-short var_17 = 32667;
-signed char var_18 = 77;
-signed char var_19 = 69;
-unsigned short var_20 = 49524;
-const signed char var_21 = -59;
-const signed char var_22 = 114;
-const unsigned short var_23 = 43999;
-short var_24 = -4596;
-signed char var_25 = 127;
-const unsigned short var_26 = 14598;
-const short var_27 = 15321;
-short var_28 = 13394;
-const unsigned short var_29 = 51752;
-const unsigned short var_30 = 42705;
-const short var_31 = -23514;
-unsigned short var_32 = 46800;
-const unsigned short var_33 = 40302;
-const signed char var_34 = -74;
-unsigned short var_35 = 14428;
-
-
-short var_36 = 27385;
-signed char var_37 = 116;
-signed char var_38 = 47;
-unsigned short var_39 = 28164;
-signed char var_40 = 68;
-unsigned short var_41 = 48535;
-signed char var_42 = -56;
-unsigned short var_43 = 63272;
-unsigned short var_44 = 53605;
-signed char var_45 = -76;
-unsigned short var_46 = 37656;
-signed char var_47 = -2;
-unsigned short var_48 = 20934;
-signed char var_49 = -21;
-unsigned short var_50 = 46979;
-short var_51 = -11787;
-short var_52 = 9874;
-short var_53 = 13740;
-short var_54 = -24909;
-signed char var_55 = -12;
-unsigned short var_56 = 20186;
-signed char var_57 = -80;
-signed char var_58 = 48;
-unsigned short var_59 = 59812;
-short var_60 = 21585;
-signed char var_61 = -16;
-unsigned short var_62 = 49246;
-short var_63 = 21666;
-signed char var_64 = -18;
-short var_65 = -12846;
-
-
-signed char var_70 = 63;
-short var_78 = -3444;
-unsigned short var_82 = 58294;
-short var_90 = -25718;
-unsigned short var_94 = 54118;
-short var_100 = 16012;
-short var_106 = 6394;
-unsigned short var_123 = 42864;
-short var_129 = 18229;
-signed char var_143 = 92;
-short var_152 = -25759;
-signed char var_156 = -88;
-signed char var_162 = 86;
-short var_178 = -15567;
-signed char var_217 = 37;
-short var_234 = 29976;
-signed char var_240 = 29;
-unsigned short var_241 = 39297;
-signed char var_260 = -30;
-signed char var_268 = 13;
-short var_284 = -4345;
-unsigned short var_297 = 16067;
-signed char var_314 = -126;
-unsigned short var_358 = 48899;
-short var_359 = 5585;
-signed char var_367 = 57;
-unsigned short var_392 = 6146;
-signed char var_468 = -7;
-signed char var_500 = 28;
-short var_514 = -27356;
-signed char var_522 = 67;
-signed char var_543 = -115;
-unsigned short var_544 = 38397;
-signed char var_547 = 105;
-signed char var_549 = 62;
-short var_558 = -1976;
-signed char var_591 = 78;
-
-
-struct_5 struct_obj_1;
-struct_5 struct_obj_2;
-struct_5 struct_obj_3;
-struct_2 struct_obj_4;
-
-
-struct_1 struct_obj_5;
-struct_5 struct_obj_6;
-struct_1 struct_obj_7;
-struct_4 struct_obj_8;
-struct_2 struct_obj_9;
-struct_1 struct_obj_10;
-
-
-
-
-
-
-
-
-
-
-
-
-void init () {
- struct_obj_1.member_5_0 = (short) (-13981);
- struct_obj_1.member_5_1 = (unsigned short) (32569);
- struct_obj_1.member_5_2 = (unsigned short) (55905);
- struct_obj_1.member_5_3 = (short) (740);
- struct_obj_2.member_5_0 = (short) (-16520);
- struct_obj_2.member_5_1 = (unsigned short) (25768);
- struct_obj_2.member_5_2 = (unsigned short) (41445);
- struct_obj_2.member_5_3 = (short) (25458);
- struct_obj_3.member_5_0 = (short) (-27814);
- struct_obj_3.member_5_1 = (unsigned short) (32840);
- struct_obj_3.member_5_2 = (unsigned short) (59825);
- struct_obj_3.member_5_3 = (short) (-26656);
- struct_obj_4.member_2_0 = (short) (7610);
- struct_obj_4.member_2_1.member_1_0 = (signed char) (86);
- struct_obj_4.member_2_1.member_1_1 = (short) (-29951);
- struct_obj_4.member_2_1.member_1_2 = (signed char) (-57);
- struct_obj_4.member_2_1.member_1_3 = (short) (-1514);
- struct_obj_4.member_2_2 = (unsigned short) (30795);
- struct_obj_4.member_2_3.member_1_0 = (signed char) (17);
- struct_obj_4.member_2_3.member_1_1 = (short) (-21792);
- struct_obj_4.member_2_3.member_1_2 = (signed char) (-78);
- struct_obj_4.member_2_3.member_1_3 = (short) (-19417);
- struct_obj_4.member_2_4 = (short) (-19205);
- struct_obj_4.member_2_5 = (unsigned short) (10096);
- struct_obj_4.member_2_6 = (unsigned short) (56048);
- struct_obj_4.member_2_7 = (short) (-9525);
- struct_obj_5.member_1_0 = (signed char) (-105);
- struct_obj_5.member_1_1 = (short) (28953);
- struct_obj_5.member_1_2 = (signed char) (-80);
- struct_obj_5.member_1_3 = (short) (-20984);
- struct_obj_6.member_5_0 = (short) (30730);
- struct_obj_6.member_5_1 = (unsigned short) (44652);
- struct_obj_6.member_5_2 = (unsigned short) (45968);
- struct_obj_6.member_5_3 = (short) (12419);
- struct_obj_7.member_1_0 = (signed char) (-74);
- struct_obj_7.member_1_1 = (short) (-6639);
- struct_obj_7.member_1_2 = (signed char) (-119);
- struct_obj_7.member_1_3 = (short) (13879);
- struct_obj_8.member_4_0 = (unsigned short) (17346);
- struct_obj_8.member_4_1.member_3_0 = (short) (657);
- struct_obj_8.member_4_1.member_3_1.member_1_0 = (signed char) (-103);
- struct_obj_8.member_4_1.member_3_1.member_1_1 = (short) (25291);
- struct_obj_8.member_4_1.member_3_1.member_1_2 = (signed char) (-76);
- struct_obj_8.member_4_1.member_3_1.member_1_3 = (short) (-25024);
- struct_obj_8.member_4_2 = (signed char) (42);
- struct_obj_8.member_4_3 = (unsigned short) (57223);
- struct_obj_8.member_4_4 = (signed char) (58);
- struct_obj_8.member_4_5 = (short) (-1330);
- struct_obj_8.member_4_6 = (short) (-13828);
- struct_obj_8.member_4_7 = (unsigned short) (26678);
- struct_obj_8.member_4_8 = (unsigned short) (52711);
- struct_obj_8.member_4_9.member_1_0 = (signed char) (6);
- struct_obj_8.member_4_9.member_1_1 = (short) (13897);
- struct_obj_8.member_4_9.member_1_2 = (signed char) (-94);
- struct_obj_8.member_4_9.member_1_3 = (short) (-30110);
- struct_obj_9.member_2_0 = (short) (-24156);
- struct_obj_9.member_2_1.member_1_0 = (signed char) (40);
- struct_obj_9.member_2_1.member_1_1 = (short) (31967);
- struct_obj_9.member_2_1.member_1_2 = (signed char) (-36);
- struct_obj_9.member_2_1.member_1_3 = (short) (21679);
- struct_obj_9.member_2_2 = (unsigned short) (40629);
- struct_obj_9.member_2_3.member_1_0 = (signed char) (116);
- struct_obj_9.member_2_3.member_1_1 = (short) (-741);
- struct_obj_9.member_2_3.member_1_2 = (signed char) (101);
- struct_obj_9.member_2_3.member_1_3 = (short) (24485);
- struct_obj_9.member_2_4 = (short) (13544);
- struct_obj_9.member_2_5 = (unsigned short) (26978);
- struct_obj_9.member_2_6 = (unsigned short) (9057);
- struct_obj_9.member_2_7 = (short) (21085);
- struct_obj_10.member_1_0 = (signed char) (94);
- struct_obj_10.member_1_1 = (short) (28577);
- struct_obj_10.member_1_2 = (signed char) (-56);
- struct_obj_10.member_1_3 = (short) (-21782);
-} \ No newline at end of file
diff --git a/multiple_labels_crash_test/init.h b/multiple_labels_crash_test/init.h
deleted file mode 100644
index d3b5b008..00000000
--- a/multiple_labels_crash_test/init.h
+++ /dev/null
@@ -1,181 +0,0 @@
-void hash(unsigned long long int *seed, unsigned long long int const v);
-
-extern const unsigned short var_1;
-extern const unsigned short var_2;
-extern signed char var_3;
-extern const unsigned short var_4;
-extern unsigned short var_5;
-extern const unsigned short var_6;
-extern const signed char var_7;
-extern unsigned short var_8;
-extern unsigned short var_9;
-extern unsigned short var_10;
-extern const short var_11;
-extern const unsigned short var_12;
-extern short var_13;
-extern const signed char var_14;
-extern const unsigned short var_15;
-extern unsigned short var_16;
-extern short var_17;
-extern signed char var_18;
-extern signed char var_19;
-extern unsigned short var_20;
-extern const signed char var_21;
-extern const signed char var_22;
-extern const unsigned short var_23;
-extern short var_24;
-extern signed char var_25;
-extern const unsigned short var_26;
-extern const short var_27;
-extern short var_28;
-extern const unsigned short var_29;
-extern const unsigned short var_30;
-extern const short var_31;
-extern unsigned short var_32;
-extern const unsigned short var_33;
-extern const signed char var_34;
-extern unsigned short var_35;
-
-
-extern short var_36;
-extern signed char var_37;
-extern signed char var_38;
-extern unsigned short var_39;
-extern signed char var_40;
-extern unsigned short var_41;
-extern signed char var_42;
-extern unsigned short var_43;
-extern unsigned short var_44;
-extern signed char var_45;
-extern unsigned short var_46;
-extern signed char var_47;
-extern unsigned short var_48;
-extern signed char var_49;
-extern unsigned short var_50;
-extern short var_51;
-extern short var_52;
-extern short var_53;
-extern short var_54;
-extern signed char var_55;
-extern unsigned short var_56;
-extern signed char var_57;
-extern signed char var_58;
-extern unsigned short var_59;
-extern short var_60;
-extern signed char var_61;
-extern unsigned short var_62;
-extern short var_63;
-extern signed char var_64;
-extern short var_65;
-
-
-extern signed char var_70;
-extern short var_78;
-extern unsigned short var_82;
-extern short var_90;
-extern unsigned short var_94;
-extern short var_100;
-extern short var_106;
-extern unsigned short var_123;
-extern short var_129;
-extern signed char var_143;
-extern short var_152;
-extern signed char var_156;
-extern signed char var_162;
-extern short var_178;
-extern signed char var_217;
-extern short var_234;
-extern signed char var_240;
-extern unsigned short var_241;
-extern signed char var_260;
-extern signed char var_268;
-extern short var_284;
-extern unsigned short var_297;
-extern signed char var_314;
-extern unsigned short var_358;
-extern short var_359;
-extern signed char var_367;
-extern unsigned short var_392;
-extern signed char var_468;
-extern signed char var_500;
-extern short var_514;
-extern signed char var_522;
-extern signed char var_543;
-extern unsigned short var_544;
-extern signed char var_547;
-extern signed char var_549;
-extern short var_558;
-extern signed char var_591;
-
-
-typedef struct {
- signed char member_1_0;
- short member_1_1;
- signed char member_1_2;
- short member_1_3;
-} struct_1;
-
-typedef struct {
- short member_2_0;
- struct_1 member_2_1;
- unsigned short member_2_2;
- struct_1 member_2_3;
- short member_2_4;
- unsigned short member_2_5;
- unsigned short member_2_6;
- short member_2_7;
-} struct_2;
-
-typedef struct {
- short member_3_0;
- struct_1 member_3_1;
-} struct_3;
-
-typedef struct {
- unsigned short member_4_0;
- struct_3 member_4_1;
- signed char member_4_2;
- unsigned short member_4_3;
- signed char member_4_4;
- short member_4_5;
- short member_4_6;
- unsigned short member_4_7;
- unsigned short member_4_8;
- struct_1 member_4_9;
-} struct_4;
-
-typedef struct {
- short member_5_0;
- unsigned short member_5_1;
- unsigned short member_5_2;
- short member_5_3;
-} struct_5;
-
-typedef struct {
- signed char member_6_0;
- unsigned short member_6_1;
- short member_6_2;
- struct_3 member_6_3;
- struct_3 member_6_4;
- signed char member_6_5;
- short member_6_6;
-} struct_6;
-
-
-
-extern struct_5 struct_obj_1;
-extern struct_5 struct_obj_2;
-extern struct_5 struct_obj_3;
-extern struct_2 struct_obj_4;
-
-
-extern struct_1 struct_obj_5;
-extern struct_5 struct_obj_6;
-extern struct_1 struct_obj_7;
-extern struct_4 struct_obj_8;
-extern struct_2 struct_obj_9;
-extern struct_1 struct_obj_10;
-
-
-
-
diff --git a/scheduling/PseudoAsmblock.v b/scheduling/PseudoAsmblock.v
deleted file mode 100644
index b33ea1bd..00000000
--- a/scheduling/PseudoAsmblock.v
+++ /dev/null
@@ -1,267 +0,0 @@
-Require Import Coqlib Maps AST Integers Values Memory Events Globalenvs Smallstep.
-Require Import Op Machregs Locations Stacklayout Conventions.
-Require Import Mach Machblock OptionMonad.
-
-
-(** Registers and States *)
-
-Inductive preg: Type :=
- | PC: preg (* program counter *)
- | RA: preg (* return-address *)
- | SP: preg (* stack-pointer *)
- | preg_of: mreg -> preg.
-Coercion preg_of: mreg >-> preg.
-
-Lemma preg_eq: forall (x y: preg), {x=y} + {x<>y}.
-Proof.
- decide equality.
- apply mreg_eq.
-Defined.
-
-Module PregEq.
- Definition t := preg.
- Definition eq := preg_eq.
-End PregEq.
-
-Module Pregmap := EMap(PregEq).
-
-Definition regset := Pregmap.t val.
-
-Module AsmNotations.
-
-(* Declare Scope asm. *)
-Notation "a # b" := (a b) (at level 1, only parsing) : asm.
-Notation "a # b <- c" := (Pregmap.set b c a) (at level 1, b at next level) : asm.
-Open Scope asm.
-
-End AsmNotations.
-
-Import AsmNotations.
-
-Definition to_Machrs (rs: regset): Mach.regset :=
- fun (r:mreg) => rs r.
-Coercion to_Machrs: regset >-> Mach.regset.
-
-Definition set_from_Machrs (mrs: Mach.regset) (rs: regset): regset :=
- fun (r:preg) =>
- match r with
- | preg_of mr => mrs mr
- | _ => rs r
- end.
-
-Local Open Scope option_monad_scope.
-
-Record state: Type := State { _rs: regset; _m: mem }.
-Definition outcome := option state.
-Definition Next rs m: outcome := Some (State rs m).
-Definition Stuck: outcome := None.
-
-(* Asm semantic on Mach *)
-
-Section RELSEM.
-
-(** "oracle" stating the successive position (ie offset) of each block in the final assembly function *)
-Variable next: function -> Z -> Z.
-
-Inductive is_pos (f: function): Z -> code -> Prop :=
- | First_pos: is_pos f 0 (fn_code f)
- | Next_pos pos b c: is_pos f pos (b::c) -> is_pos f (next f pos) c.
-
-Fixpoint label_pos (f: function) (lbl: label) (pos: Z) (c: code) {struct c} : option Z :=
- match c with
- | nil => None
- | b :: c' =>
- if is_label lbl b then Some pos else label_pos f lbl (next f pos) c'
- end.
-
-Definition goto_label (f: function) (lbl: label) (rs: regset) : option val :=
- SOME pos <- label_pos f lbl 0 (fn_code f) IN
- match rs#PC with
- | Vptr b _ => Some (Vptr b (Ptrofs.repr pos))
- | _ => None
- end.
-
-Definition next_addr (f: function) (rs: regset): option val :=
- match rs#PC with
- | Vptr b ofs => Some (Vptr b (Ptrofs.repr (next f (Ptrofs.unsigned ofs))))
- | _ => None
- end.
-
-Variable ge:genv.
-
-Inductive basic_step (f: function) (rs: regset) (m:mem): basic_inst -> regset -> mem -> Prop :=
- | exec_MBgetstack:
- forall ofs ty dst v,
- load_stack m (rs#SP) ty ofs = Some v ->
- basic_step f rs m (MBgetstack ofs ty dst) (rs#dst <- v) m
- | exec_MBsetstack:
- forall (src: mreg) ofs ty m' rs',
- store_stack m (rs#SP) ty ofs (rs src) = Some m' ->
- rs' = set_from_Machrs (undef_regs (destroyed_by_setstack ty) rs) rs ->
- basic_step f rs m (MBsetstack src ofs ty) rs' m'
- | exec_MBgetparam:
- forall ofs ty (dst: mreg) v rs' psp,
- load_stack m (rs#SP) Tptr f.(fn_link_ofs) = Some psp ->
- load_stack m psp ty ofs = Some v ->
- rs' = (rs # temp_for_parent_frame <- Vundef # dst <- v) ->
- basic_step f rs m (MBgetparam ofs ty dst) rs' m
- | exec_MBop:
- forall op args v rs' (res: mreg),
- eval_operation ge (rs#SP) op (to_Machrs rs)##args m = Some v ->
- rs' = (set_from_Machrs (undef_regs (destroyed_by_op op) rs) rs)#res <- v ->
- basic_step f rs m (MBop op args res) rs' m
- | exec_MBload:
- forall addr args a v rs' trap chunk (dst: mreg),
- eval_addressing ge (rs#SP) addr (to_Machrs rs)##args = Some a ->
- Mem.loadv chunk m a = Some v ->
- rs' = (set_from_Machrs (undef_regs (destroyed_by_load chunk addr) rs) rs)#dst <- v ->
- basic_step f rs m (MBload trap chunk addr args dst) rs' m
- | exec_MBload_notrap1:
- forall addr args rs' chunk (dst: mreg),
- eval_addressing ge (rs#SP) addr (to_Machrs rs)##args = None ->
- rs' = (set_from_Machrs (undef_regs (destroyed_by_load chunk addr) rs) rs)#dst <- (default_notrap_load_value chunk) ->
- basic_step f rs m (MBload NOTRAP chunk addr args dst) rs' m
- | exec_MBload_notrap2:
- forall addr args a rs' chunk (dst: mreg),
- eval_addressing ge (rs#SP) addr (to_Machrs rs)##args = Some a ->
- Mem.loadv chunk m a = None ->
- rs' = (set_from_Machrs (undef_regs (destroyed_by_load chunk addr) rs) rs)#dst <- (default_notrap_load_value chunk) ->
- basic_step f rs m (MBload NOTRAP chunk addr args dst) rs' m
- | exec_MBstore:
- forall chunk addr args (src: mreg) m' a rs',
- eval_addressing ge (rs#SP) addr (to_Machrs rs)##args = Some a ->
- Mem.storev chunk m a (rs src) = Some m' ->
- rs' = set_from_Machrs (undef_regs (destroyed_by_store chunk addr) rs) rs ->
- basic_step f rs m (MBstore chunk addr args src) rs' m'
- .
-
-
-Inductive body_step (f: function) : bblock_body -> regset -> mem -> regset -> mem -> Prop :=
- | exec_nil_body rs m:
- body_step f nil rs m rs m
- | exec_cons_body rs m bi p rs' m' rs'' m'':
- basic_step f rs m bi rs' m' ->
- body_step f p rs' m' rs'' m'' ->
- body_step f (bi::p) rs m rs'' m''
- .
-
-
-Definition find_function_ptr (ros: mreg + ident) (rs: regset) : option val :=
- match ros with
- | inl r => Some (rs#r)
- | inr symb =>
- SOME b <- Genv.find_symbol ge symb IN
- Some (Vptr b Ptrofs.zero)
- end.
-
-Definition exec_epilogue (f: function) (rs: regset) (m: mem) : outcome :=
- SOME sp <- load_stack m rs#SP Tptr f.(fn_link_ofs) IN
- SOME ra <- load_stack m rs#SP Tptr f.(fn_retaddr_ofs) IN
- match rs#SP with
- | Vptr stk ofs =>
- SOME m' <- Mem.free m stk 0 f.(fn_stacksize) IN
- Next (rs#SP <- sp #RA <- ra) m'
- | _ => Stuck
- end.
-
-Inductive cfi_step (f: function): control_flow_inst -> regset -> mem -> trace -> regset -> mem -> Prop :=
- | exec_MBcall sig ros rs m pc:
- find_function_ptr ros rs = Some pc ->
- cfi_step f (MBcall sig ros) rs m E0 ((rs#RA <- (rs#PC))#PC <- pc) m
- | exec_MBtailcall sig ros rs m rs' m' pc:
- find_function_ptr ros rs = Some pc ->
- exec_epilogue f rs m = Next rs' m' ->
- cfi_step f (MBtailcall sig ros) rs m E0 (rs'#PC <- pc) m'
- | exec_MBreturn rs m rs' m':
- exec_epilogue f rs m = Next rs' m' ->
- cfi_step f MBreturn rs m E0 (rs'#PC <- (rs'#RA)) m'
- | exec_MBgoto lbl rs m pc:
- goto_label f lbl rs = Some pc ->
- cfi_step f (MBgoto lbl) rs m E0 (rs#PC <- pc) m
- | exec_MBcond_true cond args lbl rs m pc rs':
- eval_condition cond (to_Machrs rs)##args m = Some true ->
- goto_label f lbl rs = Some pc ->
- rs' = set_from_Machrs (undef_regs (destroyed_by_cond cond) rs) rs ->
- cfi_step f (MBcond cond args lbl) rs m E0 (rs'#PC <- pc) m
- | exec_MBcond_false cond args lbl rs m rs':
- eval_condition cond (to_Machrs rs)##args m = Some false ->
- rs' = set_from_Machrs (undef_regs (destroyed_by_cond cond) rs) rs ->
- cfi_step f (MBcond cond args lbl) rs m E0 rs' m
- | exec_MBjumptable arg tbl rs m index lbl pc rs':
- to_Machrs rs arg = Vint index ->
- list_nth_z tbl (Int.unsigned index) = Some lbl ->
- goto_label f lbl rs = Some pc ->
- rs' = set_from_Machrs (undef_regs destroyed_by_jumptable rs) rs ->
- cfi_step f (MBjumptable arg tbl) rs m E0 (rs'#PC <- pc) m
- | exec_MBbuiltin rs m ef args res vargs t vres rs' m':
- eval_builtin_args ge (to_Machrs rs) (rs#SP) m args vargs ->
- external_call ef ge vargs m t vres m' ->
- rs' = set_from_Machrs (set_res res vres (undef_regs (destroyed_by_builtin ef) rs)) rs ->
- cfi_step f (MBbuiltin ef args res) rs m t rs' m'
- .
-
-Inductive exit_step f : option control_flow_inst -> regset -> mem -> trace -> regset -> mem -> Prop :=
- | exec_Some_exit ctl rs m t rs' m':
- cfi_step f ctl rs m t rs' m' ->
- exit_step f (Some ctl) rs m t rs' m'
- | exec_None_exit rs m:
- exit_step f None rs m E0 rs m
- .
-
-Inductive exec_bblock f: bblock -> regset -> mem -> trace -> regset -> mem -> Prop :=
- | exec_bblock_all (bb: bblock) rs0 m0 rs1 m1 pc t rs2 m2:
- body_step f (body bb) rs0 m0 rs1 m1 ->
- next_addr f rs1 = Some pc ->
- exit_step f (exit bb) (rs1#PC <- pc) m1 t rs2 m2 ->
- exec_bblock f bb rs0 m0 t rs2 m2.
-
-Definition exec_prologue f (pos:Z) (rs: regset) (m:mem) : option state :=
- if Z.eq_dec pos 0 then
- let (m1, stk) := Mem.alloc m 0 f.(fn_stacksize) in
- let sp := Vptr stk Ptrofs.zero in
- SOME m2 <- store_stack m1 sp Tptr f.(fn_link_ofs) rs#SP IN
- SOME m3 <- store_stack m2 sp Tptr f.(fn_retaddr_ofs) rs#RA IN
- Next ((set_from_Machrs (undef_regs destroyed_at_function_entry rs) rs)#SP <- sp) m3
- else
- Next rs m.
-
-
-Inductive step: state -> trace -> state -> Prop :=
- | exec_step_internal b ofs f bb c rs0 m0 rs1 m1 t rs2 m2:
- rs0 PC = Vptr b ofs ->
- Genv.find_funct_ptr ge b = Some (Internal f) ->
- is_pos f (Ptrofs.unsigned ofs) (bb::c) ->
- exec_prologue f (Ptrofs.unsigned ofs) rs0 m0 = Next rs1 m1 ->
- exec_bblock f bb rs1 m1 t rs2 m2 ->
- step (State rs0 m0) t (State rs2 m2)
- | exec_step_external:
- forall b ef args res rs m t rs' m',
- rs PC = Vptr b Ptrofs.zero ->
- Genv.find_funct_ptr ge b = Some (External ef) ->
- extcall_arguments (to_Machrs rs) m (rs#SP) (ef_sig ef) args ->
- external_call ef ge args m t res m' ->
- rs' = (set_from_Machrs (set_pair (loc_result (ef_sig ef)) res (undef_caller_save_regs rs)) rs) #PC <- (rs RA) ->
- step (State rs m) t (State rs' m').
-
-End RELSEM.
-
-Inductive initial_state (p: program): state -> Prop :=
- | initial_state_intro: forall m0,
- let ge := Genv.globalenv p in
- Genv.init_mem p = Some m0 ->
- let rs0 :=
- (Pregmap.init Vundef)
- # PC <- (Genv.symbol_address ge p.(prog_main) Ptrofs.zero)
- # SP <- Vnullptr
- # RA <- Vnullptr in
- initial_state p (State rs0 m0).
-
-Inductive final_state: state -> int -> Prop :=
- | final_state_intro: forall rs m r retcode,
- loc_result signature_main = One r ->
- rs PC = Vnullptr ->
- rs r = Vint retcode ->
- final_state (State rs m) retcode.
-
-Definition semantics (next: function -> Z -> Z) (p: program) :=
- Semantics (step next) (initial_state p) final_state (Genv.globalenv p).
diff --git a/scheduling/PseudoAsmblockproof.v b/scheduling/PseudoAsmblockproof.v
deleted file mode 100644
index 67308278..00000000
--- a/scheduling/PseudoAsmblockproof.v
+++ /dev/null
@@ -1,1173 +0,0 @@
-Require Import Coqlib Maps AST Integers Values Memory Events Globalenvs Smallstep.
-Require Import Op Machregs Locations Stacklayout Conventions.
-Require Import Mach Machblock OptionMonad.
-Require Import Errors Datatypes PseudoAsmblock IterList.
-
-(** Tiny translation from Machblock semantics to PseudoAsmblock semantics (needs additional checks)
-*)
-
-Section TRANSLATION.
-
-(* In the actual Asmblock code, the prologue will be inserted in the first block of the function.
- But, this block should have an empty header.
-*)
-
-Definition has_header (c: code) : bool :=
- match c with
- | nil => false
- | bb::_ => match header bb with
- | nil => false
- | _ => true
- end
- end.
-
-Definition insert_implicit_prologue c :=
- if has_header c then {| header := nil; body := nil; exit := None |}::c else c.
-
-Definition transl_function (f: function) : function :=
- {| fn_sig:=fn_sig f;
- fn_code:=insert_implicit_prologue (fn_code f);
- fn_stacksize := fn_stacksize f;
- fn_link_ofs := fn_link_ofs f;
- fn_retaddr_ofs := fn_retaddr_ofs f
- |}.
-
-Definition transf_function (f: function) : res function :=
- let tf := transl_function f in
- (* removed because it is simpler or/and more efficient to perform this test in Asmblockgen !
- if zlt Ptrofs.max_unsigned (max_pos tf)
- then Error (msg "code size exceeded")
- else *)
- OK tf.
-
-Definition transf_fundef (f: fundef) : res fundef :=
- transf_partial_fundef transf_function f.
-
-Definition transf_program (p: program) : res program :=
- transform_partial_program transf_fundef p.
-
-End TRANSLATION.
-
-(** Proof of the translation
-*)
-
-Require Import Linking.
-Import PseudoAsmblock.AsmNotations.
-
-Section PRESERVATION.
-
-Definition match_prog (p: program) (tp: program) :=
- match_program (fun _ f tf => transf_fundef f = OK tf) eq p tp.
-
-Lemma transf_program_match:
- forall p tp, transf_program p = OK tp -> match_prog p tp.
-Proof.
- intros. eapply match_transform_partial_program; eauto.
-Qed.
-
-Local Open Scope Z_scope.
-Local Open Scope option_monad_scope.
-
-Variable prog: program.
-Variable tprog: program.
-
-Hypothesis TRANSF: match_prog prog tprog.
-Let ge := Genv.globalenv prog.
-Let tge := Genv.globalenv tprog.
-
-Variable next: function -> Z -> Z.
-
-Hypothesis next_progress: forall (f:function) (pos:Z), (pos < (next f pos))%Z.
-
-Definition max_pos (f:function) := iter (S (length f.(fn_code))) (next f) 0.
-
-(* This hypothesis expresses that Asmgen checks for each tf
- that (max_pos tf) represents a valid address
-*)
-Hypothesis functions_bound_max_pos: forall fb tf,
- Genv.find_funct_ptr tge fb = Some (Internal tf) ->
- (max_pos tf) <= Ptrofs.max_unsigned.
-
-(** * Agreement between Mach registers and PseudoAsm registers *)
-Record agree (ms: Mach.regset) (sp: val) (rs: regset) : Prop := mkagree {
- agree_sp: rs#SP = sp;
- agree_sp_def: sp <> Vundef;
- agree_mregs: forall r: mreg, (ms r)=(rs#r)
-}.
-
-(** [transl_code_at_pc pc fb f tf c] holds if the code pointer [pc] points
- within the code generated by Machblock function (originally [f] -- but translated as [tf]),
- and [c] is the tail of the code at the position corresponding to the code pointer [pc].
-*)
-Inductive transl_code_at_pc (b:block) (f:function) (tf:function) (c:code): val -> Prop :=
- transl_code_at_pc_intro ofs:
- Genv.find_funct_ptr ge b = Some (Internal f) ->
- transf_function f = OK tf ->
- (* we have passed the first block containing the prologue *)
- (0 < (Ptrofs.unsigned ofs))%Z ->
- (* the code is identical in the two functions *)
- is_pos next tf (Ptrofs.unsigned ofs) c ->
- transl_code_at_pc b f tf c (Vptr b ofs).
-
-Inductive match_stack: list stackframe -> Prop :=
- | match_stack_nil:
- match_stack nil
- | match_stack_cons: forall fb sp ra c s f tf,
- Genv.find_funct_ptr ge fb = Some (Internal f) ->
- transl_code_at_pc fb f tf c ra ->
- sp <> Vundef ->
- match_stack s ->
- match_stack (Stackframe fb sp ra c :: s).
-
-(** Semantic preservation is proved using simulation diagrams
- of the following form.
-<<
- s1 ---------------- s2
- | |
- t| *|t
- | |
- v v
- s1'---------------- s2'
->>
- The invariant is the [match_states] predicate below...
-
-*)
-
-Inductive match_states: Machblock.state -> state -> Prop :=
- | match_states_internal s fb sp c ms m rs f tf
- (STACKS: match_stack s)
- (FIND: Genv.find_funct_ptr ge fb = Some (Internal f))
- (AT: transl_code_at_pc fb f tf c (rs PC))
- (AG: agree ms sp rs):
- match_states (Machblock.State s fb sp c ms m)
- (State rs m)
- | match_states_prologue s sp fb ms rs0 m0 f rs1 m1
- (STACKS: match_stack s)
- (AG: agree ms sp rs1)
- (ATPC: rs0 PC = Vptr fb Ptrofs.zero)
- (ATLR: rs0 RA = parent_ra s)
- (FIND: Genv.find_funct_ptr ge fb = Some (Internal f))
- (PROL: exec_prologue f 0 rs0 m0 = Next rs1 m1):
- match_states (Machblock.State s fb sp (fn_code f) ms m1)
- (State rs0 m0)
- | match_states_call s fb ms m rs
- (STACKS: match_stack s)
- (AG: agree ms (parent_sp s) rs)
- (ATPC: rs PC = Vptr fb Ptrofs.zero)
- (ATLR: rs RA = parent_ra s):
- match_states (Machblock.Callstate s fb ms m)
- (State rs m)
- | match_states_return s ms m rs
- (STACKS: match_stack s)
- (AG: agree ms (parent_sp s) rs)
- (ATPC: rs PC = parent_ra s):
- match_states (Machblock.Returnstate s ms m)
- (State rs m).
-
-Definition measure (s: Machblock.state) : nat :=
- match s with
- | Machblock.State _ _ _ _ _ _ => 0%nat
- | Machblock.Callstate _ _ _ _ => 1%nat
- | Machblock.Returnstate _ _ _ => 1%nat
- end.
-
-Definition rao (f: function) (c: code) (ofs: ptrofs) : Prop :=
- forall tf,
- transf_function f = OK tf ->
- is_pos next tf (Ptrofs.unsigned ofs) c.
-
-Lemma symbols_preserved:
- forall (s: ident), Genv.find_symbol tge s = Genv.find_symbol ge s.
-Proof (Genv.find_symbol_match TRANSF).
-
-Lemma senv_preserved:
- Senv.equiv ge tge.
-Proof (Genv.senv_match TRANSF).
-
-Lemma functions_translated:
- forall b f,
- Genv.find_funct_ptr ge b = Some f ->
- exists tf,
- Genv.find_funct_ptr tge b = Some tf /\ transf_fundef f = OK tf.
-Proof (Genv.find_funct_ptr_transf_partial TRANSF).
-
-Lemma functions_transl fb f tf:
- Genv.find_funct_ptr ge fb = Some (Internal f) ->
- transf_function f = OK tf ->
- Genv.find_funct_ptr tge fb = Some (Internal tf).
-Proof.
- intros. exploit functions_translated; eauto. intros [tf' [A B]].
- monadInv B. inv H0; auto.
-Qed.
-
-Lemma function_bound fb f tf:
- Genv.find_funct_ptr ge fb = Some (Internal f) -> transf_function f = OK tf -> (max_pos tf) <= Ptrofs.max_unsigned.
-Proof.
- intros; eapply functions_bound_max_pos; eauto.
- eapply functions_transl; eauto.
-Qed.
-
-Lemma transf_function_def f tf:
- transf_function f = OK tf -> tf.(fn_code) = insert_implicit_prologue f.(fn_code).
-Proof.
- unfold transf_function.
- intros EQ; inv EQ.
- auto.
-Qed.
-
-Lemma stackinfo_preserved f tf:
- transf_function f = OK tf ->
- tf.(fn_stacksize) = f.(fn_stacksize)
- /\ tf.(fn_retaddr_ofs) = f.(fn_retaddr_ofs)
- /\ tf.(fn_link_ofs) = f.(fn_link_ofs).
-Proof.
- unfold transf_function.
- intros EQ0; inv EQ0. simpl; intuition.
-Qed.
-
-Lemma transf_initial_states st1: Machblock.initial_state prog st1 ->
- exists st2, initial_state tprog st2 /\ match_states st1 st2.
-Proof.
- intro H. inversion H. unfold ge0 in *.
- econstructor; split.
- - econstructor.
- eapply (Genv.init_mem_transf_partial TRANSF); eauto.
- - replace (Genv.symbol_address (Genv.globalenv tprog) (prog_main tprog) Ptrofs.zero)
- with (Vptr fb Ptrofs.zero).
- + econstructor; eauto.
- * constructor.
- * split; auto; simpl; unfold Vnullptr; destruct Archi.ptr64; congruence.
- + unfold Genv.symbol_address.
- rewrite (match_program_main TRANSF).
- rewrite symbols_preserved.
- unfold ge. simplify_someHyp. auto.
-Qed.
-
-Lemma transf_final_states st1 st2 r:
- match_states st1 st2 -> Machblock.final_state st1 r -> final_state st2 r.
-Proof.
- intros H H0. inv H0. inv H.
- econstructor; eauto.
- exploit agree_mregs; eauto.
- erewrite H2. intro H3; inversion H3.
- auto.
-Qed.
-
-(** Lemma on [is_pos]. *)
-
-Lemma is_pos_alt_def f pos code: is_pos next f pos code ->
- exists n, (n <= List.length (fn_code f))%nat /\ pos = (iter n (next f) 0) /\ code = iter_tail n (fn_code f).
-Proof.
- induction 1.
- - unfold iter_tail; exists O; simpl; intuition.
- - destruct IHis_pos as (n & H0 & H1 & H2).
- exists (S n). repeat split.
- + rewrite (length_iter_tail n); eauto.
- rewrite <- H2; simpl; omega.
- + rewrite iter_S; congruence.
- + unfold iter_tail in *; rewrite iter_S, <- H2; auto.
-Qed.
-
-Local Hint Resolve First_pos Next_pos: core.
-
-Lemma is_pos_alt_def_recip f n: (n <= List.length (fn_code f))%nat ->
- is_pos next f (iter n (next f) 0) (iter_tail n (fn_code f)).
-Proof.
- induction n.
- - unfold iter_tail; simpl; eauto.
- - intros H; destruct (iter_tail_S_ex n (fn_code f)) as (x & H1); try omega.
- rewrite iter_S; lapply IHn; try omega.
- rewrite H1; eauto.
-Qed.
-
-Lemma is_pos_inject1 f pos1 pos2 code:
- is_pos next f pos1 code -> is_pos next f pos2 code -> pos1=pos2.
-Proof.
- intros H1 H2.
- destruct (is_pos_alt_def f pos1 code) as (n1 & B1 & POS1 & CODE1); eauto.
- destruct (is_pos_alt_def f pos2 code) as (n2 & B2 & POS2 & CODE2); eauto.
- clear H1 H2; subst.
- erewrite (iter_tail_inject1 n1 n2); eauto.
-Qed.
-
-Lemma iter_next_strict_monotonic f n m x: (n < m)%nat -> iter n (next f) x < iter m (next f) x.
-Proof.
- induction 1; rewrite iter_S; auto.
- generalize (next_progress f (iter m (next f) x)).
- omega.
-Qed.
-
-Lemma iter_next_monotonic f n m x: (n <= m)%nat -> iter n (next f) x <= iter m (next f) x.
-Proof.
- destruct 1.
- - omega.
- - generalize (iter_next_strict_monotonic f n (S m) x). omega.
-Qed.
-
-Lemma is_pos_bound_pos f pos code:
- is_pos next f pos code -> 0 <= pos <= max_pos f.
-Proof.
- intros H; exploit is_pos_alt_def; eauto.
- intros (n & H1 & H2 & H3).
- rewrite H2. unfold max_pos. split.
- - cutrewrite (0 = iter O (next f) 0); auto.
- apply iter_next_monotonic; omega.
- - apply iter_next_monotonic; omega.
-Qed.
-
-Lemma is_pos_unsigned_repr f pos code:
- is_pos next f pos code ->
- max_pos f <= Ptrofs.max_unsigned ->
- Ptrofs.unsigned (Ptrofs.repr pos) = pos.
-Proof.
- intros; eapply Ptrofs.unsigned_repr.
- exploit is_pos_bound_pos; eauto.
- omega.
-Qed.
-
-Lemma is_pos_simplify f pos code:
- is_pos next f pos code ->
- max_pos f <= Ptrofs.max_unsigned ->
- is_pos next f (Ptrofs.unsigned (Ptrofs.repr pos)) code.
-Proof.
- intros; erewrite is_pos_unsigned_repr; eauto.
-Qed.
-
-Lemma find_label_label_pos f lbl c: forall pos c',
- find_label lbl c = Some c' ->
- exists n,
- label_pos next f lbl pos c = Some (iter n (next f) pos)
- /\ c' = iter_tail n c
- /\ (n <= List.length c)%nat.
-Proof.
- induction c.
- - simpl; intros. discriminate.
- - simpl; intros pos c'.
- destruct (is_label lbl a).
- + intro EQ; injection EQ; intro; subst c'.
- exists O; simpl; intuition.
- + intros. generalize (IHc (next f pos) c' H). intros (n' & A & B & C).
- exists (S n'). intuition.
-Qed.
-
-Lemma find_label_insert_implicit_prologue lbl c:
- find_label lbl c = find_label lbl (insert_implicit_prologue c).
-Proof.
- unfold insert_implicit_prologue.
- destruct (has_header c); simpl; auto.
- unfold is_label; simpl.
- destruct (in_dec lbl nil); auto.
- simpl in *. tauto.
-Qed.
-
-Lemma no_header_insert_implicit_prologue c:
- has_header (insert_implicit_prologue c) = false.
-Proof.
- unfold insert_implicit_prologue.
- destruct (has_header c) eqn: H; simpl; auto.
-Qed.
-
-Lemma find_label_has_header lbl c c':
- find_label lbl c = Some c' ->
- has_header c' = true.
-Proof.
- induction c; simpl; try congruence.
- destruct (is_label lbl a) eqn:LAB; auto.
- intros X; inv X; simpl.
- unfold is_label in LAB.
- destruct (in_dec lbl (header a)); try congruence.
- destruct (header a); try congruence.
- simpl in *; tauto.
-Qed.
-
-Lemma find_label_label_pos_no_header f lbl c pos c':
- (has_header c) = false ->
- find_label lbl c = Some c' ->
- exists n,
- label_pos next f lbl pos c = Some (iter (S n) (next f) pos)
- /\ c' = iter_tail (S n) c
- /\ ((S n) <= List.length c)%nat.
-Proof.
- intros H H0; exploit find_label_label_pos; eauto.
- intros ([|n] & H1 & H2 & H3); try (exists n; intuition eauto).
- unfold iter_tail in *; simpl in *; subst.
- erewrite find_label_has_header in H; eauto.
- congruence.
-Qed.
-
-Hint Resolve is_pos_simplify is_pos_alt_def_recip function_bound: core.
-
-Lemma find_label_goto_label f tf lbl rs c' b ofs:
- Genv.find_funct_ptr ge b = Some (Internal f) ->
- transf_function f = OK tf ->
- Vptr b ofs = rs PC ->
- find_label lbl f.(fn_code) = Some c' ->
- exists pc,
- goto_label next tf lbl rs = Some pc
- /\ transl_code_at_pc b f tf c' pc.
-Proof.
- intros FINDF T HPC FINDL.
- erewrite find_label_insert_implicit_prologue, <- transf_function_def in FINDL; eauto.
- exploit find_label_label_pos_no_header; eauto.
- { erewrite transf_function_def; eauto.
- apply no_header_insert_implicit_prologue.
- }
- intros (n & LAB & CODE & BOUND); subst.
- exists (Vptr b (Ptrofs.repr (iter (S n) (next tf) 0))).
- unfold goto_label; intuition.
- - simplify_someHyps; rewrite <- HPC. auto.
- - econstructor; eauto.
- erewrite is_pos_unsigned_repr; eauto.
- generalize (iter_next_strict_monotonic tf O (S n) 0); simpl.
- omega.
-Qed.
-
-(** Preservation of register agreement under various assignments. *)
-
-Lemma agree_mregs_list ms sp rs:
- agree ms sp rs ->
- forall l, (ms##l)=(to_Machrs rs)##l.
-Proof.
- unfold to_Machrs. intros AG; induction l; simpl; eauto.
- erewrite agree_mregs; eauto.
- congruence.
-Qed.
-
-Lemma agree_set_mreg ms sp rs r v rs':
- agree ms sp rs ->
- v=(rs'#(preg_of r)) ->
- (forall r', r' <> preg_of r -> rs'#r' = rs#r') ->
- agree (Regmap.set r v ms) sp rs'.
-Proof.
- intros H H0 H1. destruct H. split; auto.
- - rewrite H1; auto. destruct r; simpl; congruence.
- - intros. unfold Regmap.set. destruct (RegEq.eq r0 r). congruence.
- rewrite H1; auto. destruct r; simpl; congruence.
-Qed.
-
-Corollary agree_set_mreg_parallel:
- forall ms sp rs r v,
- agree ms sp rs ->
- agree (Regmap.set r v ms) sp (Pregmap.set (preg_of r) v rs).
-Proof.
- intros. eapply agree_set_mreg; eauto.
- - rewrite Pregmap.gss; auto.
- - intros; apply Pregmap.gso; auto.
-Qed.
-
-Corollary agree_set_mreg_parallel2:
- forall ms sp rs r v ms',
- agree ms sp (set_from_Machrs ms' rs)->
- agree (Regmap.set r v ms) sp (set_from_Machrs (Regmap.set r v ms') rs).
-Proof.
- intros. unfold set_from_Machrs in *. eapply agree_set_mreg; eauto.
- - rewrite Regmap.gss; auto.
- - intros r' X. destruct r'; try congruence. rewrite Regmap.gso; try congruence.
-Qed.
-
-Definition data_preg (r: preg) : bool :=
- match r with
- | preg_of _ | SP => true
- | _ => false
- end.
-
-Lemma agree_exten ms sp rs rs':
- agree ms sp rs ->
- (forall r, data_preg r = true -> rs'#r = rs#r) ->
- agree ms sp rs'.
-Proof.
- intros H H0. destruct H. split; intros; try rewrite H0; auto.
-Qed.
-
-Lemma agree_set_from_Machrs ms sp ms' rs:
- agree ms sp rs ->
- (forall (r:mreg), (ms' r) = rs#r) ->
- agree ms sp (set_from_Machrs ms' rs).
-Proof.
- unfold set_from_Machrs; intros.
- eapply agree_exten; eauto.
- intros r; destruct r; simpl; try congruence.
-Qed.
-
-Lemma agree_set_other ms sp rs r v:
- agree ms sp rs ->
- data_preg r = false ->
- agree ms sp (rs#r <- v).
-Proof.
- intros; apply agree_exten with rs; auto.
- intros. apply Pregmap.gso. congruence.
-Qed.
-
-
-Lemma agree_next_addr f ms sp b pos rs:
- agree ms sp rs ->
- agree ms sp (rs#PC <- (Vptr b (Ptrofs.repr (next f pos)))).
-Proof.
- intros. apply agree_set_other; auto.
-Qed.
-
-Local Hint Resolve agree_set_mreg_parallel2: core.
-
-Lemma agree_set_pair sp p v ms ms' rs:
- agree ms sp (set_from_Machrs ms' rs) ->
- agree (set_pair p v ms) sp (set_from_Machrs (set_pair p v ms') rs).
-Proof.
- intros H; destruct p; simpl; auto.
-Qed.
-
-Lemma agree_undef_caller_save_regs:
- forall ms sp ms' rs,
- agree ms sp (set_from_Machrs ms' rs) ->
- agree (undef_caller_save_regs ms) sp (set_from_Machrs (undef_caller_save_regs ms') rs).
-Proof.
- intros. destruct H as [H0 H1 H2]. unfold undef_caller_save_regs. split; auto.
- intros.
- unfold set_from_Machrs in * |- *.
- rewrite H2. auto.
-Qed.
-
-Lemma agree_change_sp ms sp rs sp':
- agree ms sp rs -> sp' <> Vundef ->
- agree ms sp' (rs#SP <- sp').
-Proof.
- intros H H0. inv H. split; auto.
-Qed.
-
-Lemma agree_undef_regs ms sp rl ms' rs:
- agree ms sp (set_from_Machrs ms' rs) ->
- agree (Mach.undef_regs rl ms) sp (set_from_Machrs (Mach.undef_regs rl ms') rs).
-Proof.
- unfold set_from_Machrs; intros H. destruct H; subst. split; auto.
- intros. destruct (In_dec mreg_eq r rl).
- + rewrite! undef_regs_same; auto.
- + rewrite! undef_regs_other; auto.
-Qed.
-
-(** Translation of arguments and results to builtins. *)
-
-Remark builtin_arg_match:
- forall ms rs sp m a v,
- agree ms sp rs ->
- eval_builtin_arg ge ms sp m a v ->
- eval_builtin_arg ge (to_Machrs rs) sp m a v.
-Proof.
- induction 2; simpl; eauto with barg.
- unfold to_Machrs; erewrite agree_mregs; eauto.
- econstructor.
-Qed.
-
-Lemma builtin_args_match:
- forall ms sp rs m,
- agree ms sp rs ->
- forall al vl, eval_builtin_args ge ms sp m al vl ->
- eval_builtin_args ge (to_Machrs rs) sp m al vl.
-Proof.
- induction 2; intros; simpl; try (constructor; auto).
- eapply eval_builtin_arg_preserved; eauto.
- eapply builtin_arg_match; eauto.
-Qed.
-
-Lemma agree_set_res res: forall ms sp rs v ms',
- agree ms sp (set_from_Machrs ms' rs) ->
- agree (set_res res v ms) sp (set_from_Machrs (set_res res v ms') rs).
-Proof.
- induction res; simpl; auto.
-Qed.
-
-Lemma find_function_ptr_agree ros ms rs sp b:
- agree ms sp rs ->
- Machblock.find_function_ptr ge ros ms = Some b ->
- find_function_ptr tge ros rs = Some (Vptr b Ptrofs.zero).
-Proof.
- intros AG; unfold Mach.find_function_ptr; destruct ros as [r|s]; simpl; auto.
- - generalize (agree_mregs _ _ _ AG r). destruct (ms r); simpl; try congruence.
- intros H; inv H; try congruence.
- inversion_ASSERT. intros H; rewrite (Ptrofs.same_if_eq _ _ H); eauto.
- try_simplify_someHyps.
- - intros H; rewrite symbols_preserved, H. auto.
-Qed.
-
-Lemma parent_sp_def: forall s, match_stack s -> parent_sp s <> Vundef.
-Proof.
- induction 1; simpl.
- unfold Vnullptr; destruct Archi.ptr64; congruence.
- auto.
-Qed.
-
-Lemma extcall_arg_match ms sp rs m l v:
- agree ms sp rs ->
- extcall_arg ms m sp l v ->
- extcall_arg rs m (rs#SP) l v.
-Proof.
- destruct 2.
- - erewrite agree_mregs; eauto. constructor.
- - unfold load_stack in *. econstructor; eauto.
- erewrite agree_sp; eauto.
-Qed.
-
-Local Hint Resolve extcall_arg_match: core.
-
-Lemma extcall_arg_pair_match:
- forall ms sp rs m p v,
- agree ms sp rs ->
- extcall_arg_pair ms m sp p v ->
- extcall_arg_pair rs m (rs#SP) p v.
-Proof.
- destruct 2; constructor; eauto.
-Qed.
-
-Local Hint Resolve extcall_arg_pair_match: core.
-
-Lemma extcall_args_match:
- forall ms sp rs m, agree ms sp rs ->
- forall ll vl,
- list_forall2 (extcall_arg_pair ms m sp) ll vl ->
- list_forall2 (extcall_arg_pair rs m rs#SP) ll vl.
-Proof.
- induction 2; constructor; eauto.
-Qed.
-
-Lemma extcall_arguments_match:
- forall ms m sp rs sg args,
- agree ms sp rs ->
- extcall_arguments ms m sp sg args ->
- extcall_arguments rs m (rs#SP) sg args.
-Proof.
- unfold extcall_arguments, extcall_arguments; intros.
- eapply extcall_args_match; eauto.
-Qed.
-
-(** A few tactics *)
-
-Local Hint Resolve functions_transl symbols_preserved
- agree_next_addr agree_mregs agree_set_mreg_parallel agree_undef_regs agree_set_other agree_change_sp
- agree_sp_def agree_set_from_Machrs agree_set_pair agree_undef_caller_save_regs agree_set_res f_equal Ptrofs.repr_unsigned parent_sp_def
- builtin_args_match external_call_symbols_preserved: core.
-
-Ltac simplify_regmap :=
- repeat (rewrite ?Pregmap.gss; try (rewrite Pregmap.gso; try congruence)).
-
-Ltac simplify_next_addr :=
- match goal with
- | [ HPC: Vptr _ _ = _ PC |- _ ] => try (unfold next_addr, Val.offset_ptr); simplify_regmap; try (rewrite <- HPC)
- end.
-
-Ltac discharge_match_states :=
- econstructor; eauto; try ( simplify_next_addr; econstructor; eauto ).
-
-
-(** Instruction step simulation lemma: the simulation lemma for stepping one instruction
-
-<<
- s1 ---------------- s2
- | |
- t| +|t
- | |
- v v
- s1'---------------- s2'
->>
-
-*)
-
-Lemma trivial_exec_prologue:
- forall tf ofs rs m,
- 0 < Ptrofs.unsigned ofs ->
- exec_prologue tf (Ptrofs.unsigned ofs) rs m = Next rs m.
-Proof.
- unfold exec_prologue. intros.
- destruct (Z.eq_dec); eauto. omega.
-Qed.
-
-Lemma basic_step_simulation: forall ms sp rs s f tf fb ms' bi m m',
- agree ms sp rs ->
- match_stack s ->
- transf_function f = OK tf ->
- Genv.find_funct_ptr ge fb = Some (Internal f) ->
- Machblock.basic_step ge s fb sp ms m bi ms' m' ->
- exists rs', basic_step tge tf rs m bi rs' m' /\ agree ms' sp rs' /\ rs' PC = rs PC.
-Proof.
- destruct 5.
- (* MBgetstack *)
- - eexists; split.
- + econstructor; eauto. erewrite agree_sp; eauto.
- + eauto.
- (* MBsetstack *)
- - eexists; split.
- + econstructor; eauto.
- erewrite agree_sp; eauto.
- erewrite <- agree_mregs; eauto.
- + rewrite H4; split; eauto.
- (* MBgetparam *)
- - eexists; split.
- + econstructor; eauto.
- erewrite agree_sp; eauto.
- assert (f = f0). { rewrite H2 in H3. inversion H3. reflexivity. }
- assert (fn_link_ofs tf = fn_link_ofs f0). {
- rewrite <- H7.
- eapply stackinfo_preserved. eauto.
- }
- rewrite H8. eauto.
- + rewrite H6; split; eauto.
- (* MBop *)
- - eexists; split.
- + econstructor; eauto.
- erewrite agree_sp; eauto.
- erewrite agree_mregs_list in H3.
- * erewrite <- H3.
- eapply eval_operation_preserved; trivial.
- * eauto.
- + rewrite H4; split; eauto.
- (* MBload *)
- - eexists; split.
- + econstructor; eauto.
- erewrite agree_sp; eauto. erewrite <- agree_mregs_list; eauto.
- erewrite <- H3.
- eapply eval_addressing_preserved; trivial.
- + rewrite H5; split; eauto.
- (* MBload notrap1 *)
- - eexists; split.
- + eapply exec_MBload_notrap1; eauto.
- erewrite agree_sp; eauto.
- erewrite agree_mregs_list in H3; eauto.
- * erewrite eval_addressing_preserved; eauto.
- + rewrite H4; eauto.
- (* MBload notrap2 *)
- - eexists; split.
- + eapply exec_MBload_notrap2; eauto.
- erewrite agree_sp; eauto.
- erewrite agree_mregs_list in H3; eauto.
- * erewrite eval_addressing_preserved; eauto.
- + rewrite H5; eauto.
- (* MBstore *)
- - eexists; split.
- + econstructor; eauto.
- * erewrite agree_sp; eauto.
- erewrite agree_mregs_list in H3.
- erewrite eval_addressing_preserved; eauto.
- eauto.
- * erewrite <- agree_mregs; eauto.
- + rewrite H5; eauto.
-Qed.
-
-Lemma body_step_simulation: forall ms sp s f tf fb ms' bb m m',
- match_stack s ->
- transf_function f = OK tf ->
- Genv.find_funct_ptr ge fb = Some (Internal f) ->
- Machblock.body_step ge s fb sp bb ms m ms' m' ->
- forall rs, agree ms sp rs ->
- exists rs', body_step tge tf bb rs m rs' m' /\ agree ms' sp rs' /\ rs' PC = rs PC.
-Proof.
- induction 4.
- - repeat (econstructor; eauto).
- - intros. exploit basic_step_simulation; eauto.
- intros (rs'0 & BASIC & AG1' & AGPC1).
- exploit IHbody_step; eauto.
- intros (rs'1 & BODY & AG2' & AGPC2).
- repeat (econstructor; eauto).
- congruence.
-Qed.
-
-Local Hint Resolve trivial_exec_prologue: core.
-
-Lemma exit_step_simulation s fb f sp c t bb ms m s1' tf rs pc
- (STEP: Machblock.exit_step rao ge (exit bb) (Machblock.State s fb sp (bb :: c) ms m) t s1')
- (STACKS: match_stack s)
- (AG: agree ms sp rs)
- (NXT: next_addr next tf rs = Some pc)
- (AT: transl_code_at_pc fb f tf c pc):
- exists rs' m', exit_step next tge tf (exit bb) (rs#PC <- pc) m t rs' m' /\ match_states s1' (State rs' m').
-Proof.
- inv AT.
- inv STEP.
- (* cfi_step currently only defined for exec_MBcall, exec_MBreturn, and exec_MBgoto *)
- - inversion H4; subst. clear H4. (* inversion_clear H4 does not work so well: it clears an important hypothesis about "sp" in the Mreturn case *)
- (* MBcall *)
- + eexists. eexists. split.
- * apply exec_Some_exit.
- apply exec_MBcall.
- eapply find_function_ptr_agree; eauto.
- * assert (f0 = f). { congruence. } subst.
- assert (Ptrofs.unsigned ra = Ptrofs.unsigned ofs). {
- eapply is_pos_inject1; eauto.
- }
- assert (ofs = ra). {
- apply Ptrofs.same_if_eq. unfold Ptrofs.eq.
- rewrite H4. rewrite zeq_true. reflexivity.
- }
- repeat econstructor; eauto.
- -- unfold rao in *. congruence.
- -- simpl. simplify_regmap.
- erewrite agree_sp; eauto.
- -- simpl. simplify_regmap. auto.
- (* MBtailcall *)
- + assert (f0 = f). { congruence. } subst.
- eexists. eexists. split.
- * repeat econstructor.
- -- eapply find_function_ptr_agree; eauto.
- -- unfold exec_epilogue. erewrite agree_sp; eauto.
- apply stackinfo_preserved in H0 as ( SS & RA & LO ).
- rewrite SS, RA, LO.
- try_simplify_someHyps.
- * repeat econstructor; eauto.
- intros r.
- eapply agree_mregs; eapply agree_set_other; eauto.
- (* MBbuiltin *)
- +eexists. eexists. split.
- * repeat econstructor.
- -- simplify_regmap. erewrite agree_sp; eauto.
- eapply eval_builtin_args_preserved; eauto.
- -- eapply external_call_symbols_preserved; eauto.
- exact senv_preserved.
- * repeat econstructor; eauto.
- -- assert (transl_function f = tf). {
- unfold transf_function in *. congruence.
- }
- erewrite H5. assumption.
- -- eapply agree_sp. eapply agree_set_res. eapply agree_undef_regs.
- eapply agree_set_from_Machrs; eauto.
- -- intros; simpl.
- eapply agree_set_res. eapply agree_undef_regs.
- eapply agree_set_from_Machrs; eauto.
- (* MBgoto *)
- + simplify_someHyps. intros.
- assert ((rs # PC <- (Vptr fb ofs)) PC = Vptr fb ofs). {
- rewrite Pregmap.gss. reflexivity.
- }
- eassert (exists pc, goto_label next tf lbl rs # PC <- (Vptr fb ofs) = Some pc
- /\ transl_code_at_pc fb f tf c' pc) as (pc & GOTO_LABEL & _). {
- eapply find_label_goto_label; eauto.
- }
- eexists. eexists. split.
- * apply exec_Some_exit.
- apply exec_MBgoto.
- rewrite GOTO_LABEL. trivial.
- * repeat econstructor; eauto.
- -- simplify_regmap.
- exploit find_label_goto_label; eauto. intros (pc' & GOTO_LABEL' & TRANSL).
- assert(pc' = pc). { congruence. } subst. eauto.
- -- simplify_regmap. erewrite agree_sp; eauto.
- (* MBcond true *)
- (* Mostly copy and paste from MBgoto *)
- + simplify_someHyps. intros.
- assert ((rs # PC <- (Vptr fb ofs)) PC = Vptr fb ofs). {
- rewrite Pregmap.gss. reflexivity.
- }
- eassert (exists pc, goto_label next tf lbl rs # PC <- (Vptr fb ofs) = Some pc
- /\ transl_code_at_pc fb f tf c' pc) as (pc & GOTO_LABEL & _). {
- eapply find_label_goto_label; eauto.
- }
- eexists. eexists. split.
- * apply exec_Some_exit. eapply exec_MBcond_true; eauto.
- erewrite agree_mregs_list in H14; eauto.
- * repeat econstructor; eauto.
- -- simplify_regmap.
- exploit find_label_goto_label; eauto. intros (pc' & GOTO_LABEL' & TRANSL).
- assert(pc' = pc). { congruence. } subst. eauto.
- -- simplify_regmap. erewrite agree_sp; eauto.
- (* MBcond false *)
- + inv H0. eexists. eexists. split.
- * apply exec_Some_exit. apply exec_MBcond_false.
- -- erewrite agree_mregs_list in H15; eauto.
- -- trivial.
- * repeat econstructor; eauto. erewrite agree_sp; eauto.
- (* MBjumptable *)
- + simplify_someHyps. intros.
- assert ((rs # PC <- (Vptr fb ofs)) PC = Vptr fb ofs). {
- rewrite Pregmap.gss. reflexivity.
- }
- eassert (exists pc, goto_label next tf lbl rs # PC <- (Vptr fb ofs) = Some pc
- /\ transl_code_at_pc fb f tf c' pc) as (pc & GOTO_LABEL & _). {
- eapply find_label_goto_label; eauto.
- }
- eexists. eexists. split.
- * repeat econstructor; eauto.
- rewrite <- H14.
- symmetry. eapply agree_mregs. eapply agree_set_other; eauto.
- * repeat econstructor; eauto.
- (* copy paste from MBgoto *)
- -- simplify_regmap.
- exploit find_label_goto_label; eauto. intros (pc' & GOTO_LABEL' & TRANSL).
- assert(pc' = pc). { congruence. } subst. eauto.
- -- simplify_regmap. erewrite agree_sp; eauto.
- -- intros; simplify_regmap. eauto.
- + (* MBreturn *)
- try_simplify_someHyps.
- eexists. eexists. split.
- * apply exec_Some_exit.
- apply exec_MBreturn.
- unfold exec_epilogue.
- erewrite agree_sp; eauto.
- apply stackinfo_preserved in H0 as ( SS & RA & LO ).
- rewrite SS, RA, LO.
- try_simplify_someHyps.
- * repeat econstructor; eauto. intros r.
- simplify_regmap. eapply agree_mregs; eauto.
- - inv H0; repeat econstructor; eauto.
- erewrite agree_sp; eauto.
-Qed.
-
-Lemma inst_step_simulation s fb f sp c t ms m s1' tf rs
- (STEP: Machblock.step rao ge (Machblock.State s fb sp c ms m) t s1')
- (STACKS: match_stack s)
- (AT: transl_code_at_pc fb f tf c (rs PC))
- (AG: agree ms sp rs):
- exists s2' : state, plus (step next) tge (State rs m) t s2' /\ match_states s1' s2'.
-Proof.
- inv STEP.
- inv AT.
- exploit body_step_simulation; eauto. intros (rs0' & BODY & AG0 & AGPC).
- assert (NXT: next_addr next tf rs0' = Some (Vptr fb (Ptrofs.repr (next tf (Ptrofs.unsigned ofs))))).
- { unfold next_addr; rewrite AGPC, <- H; simpl; eauto. }
- exploit exit_step_simulation; eauto.
- { econstructor; eauto.
- erewrite is_pos_unsigned_repr; eauto.
- generalize (next_progress tf (Ptrofs.unsigned ofs)); omega. }
- intros (rs2 & m2 & STEP & MS).
- eexists.
- split; eauto.
- eapply plus_one.
- eapply exec_step_internal; eauto.
- econstructor; eauto.
-Qed.
-
-Lemma prologue_preserves_pc: forall f rs0 m0 rs1 m1,
- exec_prologue f 0 rs0 m0 = Next rs1 m1 ->
- rs1 PC = rs0 PC.
-Proof.
- unfold exec_prologue; simpl;
- intros f rs0 m0 rs1 m1 H.
- destruct (Mem.alloc m0 0 (fn_stacksize f)) in H; unfold Next in H.
- simplify_someHyps; inversion_SOME ignored; inversion_SOME ignored';
- intros ? ? H'; inversion H'; trivial.
-Qed.
-
-Lemma is_pos_next_zero bb c fb f
- (FIND : Genv.find_funct_ptr ge fb = Some (Internal f))
- (FN_HEAD : bb :: c = fn_code f):
- is_pos next (transl_function f) (next (transl_function f) (Ptrofs.unsigned Ptrofs.zero)) (if has_header (fn_code f) then bb::c else c).
-Proof.
- exploit (transf_function_def f). unfold transf_function; auto.
- unfold insert_implicit_prologue.
- intros fn_code_tf; destruct (has_header (fn_code f));
- eapply Next_pos; rewrite Ptrofs.unsigned_zero;
- rewrite FN_HEAD; rewrite <- fn_code_tf; apply First_pos.
-Qed.
-
-Lemma prologue_simulation_no_header_step t s1' s sp fb ms f m1 rs0 m0 rs1
- (STACKS : match_stack s)
- (AG : agree ms sp rs1)
- (ATPC : rs0 PC = Vptr fb Ptrofs.zero)
- (ATLR : rs0 RA = parent_ra s)
- (FIND : Genv.find_funct_ptr ge fb = Some (Internal f))
- (PROL : exec_prologue f 0 rs0 m0 = Next rs1 m1)
- (STEP : Machblock.step rao ge (Machblock.State s fb sp (fn_code f) ms m1) t s1')
- (NO_HEADER: has_header (fn_code f) = false):
- exists s2' : state, step next tge {| _rs := rs0; _m := m0 |} t s2' /\ match_states s1' s2'.
-Proof.
- inv STEP.
-
- exploit functions_translated; eauto;
- intros (tf & FINDtf & TRANSf); monadInv TRANSf.
- assert (fn_code f = fn_code (transl_function f)) as TF_CODE. {
- unfold transl_function; simpl; unfold insert_implicit_prologue;
- rewrite NO_HEADER; trivial.
- }
-
- exploit body_step_simulation; eauto; unfold transf_function; auto.
- intros (rs0' & BODY & AG0 & AGPC).
-
- exploit prologue_preserves_pc; eauto.
- intros AGPC'.
-
- exploit is_pos_next_zero; eauto; rewrite NO_HEADER.
- intros IS_POS.
-
- exploit transl_code_at_pc_intro; eauto; unfold transf_function; auto. {
- rewrite Ptrofs.unsigned_zero; erewrite is_pos_unsigned_repr; eauto.
- } intros TRANSL_CODE.
-
- assert (next_addr next (transl_function f) rs0' =
- Some (Vptr fb (Ptrofs.repr (next (transl_function f)
- (Ptrofs.unsigned Ptrofs.zero))))) as NEXT_ADDR. {
- unfold next_addr; rewrite AGPC; rewrite AGPC'; rewrite ATPC; reflexivity.
- }
-
- exploit exit_step_simulation; eauto.
- intros (? & ? & EXIT_STEP & MATCH_EXIT).
-
- exploit exec_bblock_all; eauto.
- intros EXEC_BBLOCK.
-
- exploit exec_step_internal; eauto.
- apply is_pos_simplify; eauto. rewrite H3; rewrite TF_CODE; apply First_pos.
-Qed.
-
-Lemma prologue_simulation_header_step t s1' s sp fb ms f m1 rs0 m0 rs1
- (STACKS : match_stack s)
- (AG : agree ms sp rs1)
- (ATPC : rs0 PC = Vptr fb Ptrofs.zero)
- (ATLR : rs0 RA = parent_ra s)
- (FIND : Genv.find_funct_ptr ge fb = Some (Internal f))
- (PROL : exec_prologue f 0 rs0 m0 = Next rs1 m1)
- (STEP : Machblock.step rao ge (Machblock.State s fb sp (fn_code f) ms m1) t s1')
- (HEADER: has_header (fn_code f) = true):
- exists s2' : state, plus (step next) tge {| _rs := rs0; _m := m0 |} t s2' /\ match_states s1' s2'.
-Proof.
- inv STEP.
-
- (* FIRST STEP *)
- exploit functions_translated; eauto;
- intros (tf & FINDtf & TRANSf); monadInv TRANSf.
- exploit transf_function_def; eauto; unfold transf_function; auto;
- unfold insert_implicit_prologue; rewrite HEADER; intros TF_CODE.
-
- exploit is_pos_next_zero; eauto; rewrite HEADER; rewrite H3;
- intros IS_POS.
-
- exploit prologue_preserves_pc; eauto.
- intros AGPC'.
-
- assert ( next_addr next (transl_function f) rs1
- = Some (Vptr fb (Ptrofs.repr (next (transl_function f) (Ptrofs.unsigned Ptrofs.zero))))
- ) as NEXT_ADDR0. { unfold next_addr; rewrite AGPC'; rewrite ATPC; trivial. }
-
- exploit exec_nil_body; intros BODY0.
- assert ((body {| header := nil; body := nil; exit := None |}) = nil) as NIL; auto.
- rewrite <- NIL in BODY0.
-
- exploit exec_None_exit; intros EXIT0.
- assert ((exit {| header := nil; body := nil; exit := None |}) = None) as NONE; auto.
- rewrite <- NONE in EXIT0.
-
- exploit exec_bblock_all; eauto;
- intros BBLOCK0.
-
- exploit exec_step_internal; eauto. rewrite <- TF_CODE; apply First_pos.
- intros STEP0.
-
- clear BODY0 BBLOCK0 EXIT0.
-
- (* SECOND step *)
-
- exploit (mkagree ms sp
- (rs1 # PC <- (Vptr fb (Ptrofs.repr (next (transl_function f)
- (Ptrofs.unsigned Ptrofs.zero)))))); eauto.
- apply (agree_sp ms); apply agree_set_other; eauto.
- intros AG'.
-
- exploit body_step_simulation; eauto; unfold transf_function; auto.
- intros (rs1' & BODY1 & AGRS1' & AGPC).
-
- assert ( next_addr next (transl_function f) rs1'
- = Some (Vptr fb (Ptrofs.repr (next (transl_function f) (Ptrofs.unsigned
- (Ptrofs.repr (next (transl_function f) (Ptrofs.unsigned Ptrofs.zero)))))))
- ) as NEXT_ADDR1. { unfold next_addr; rewrite AGPC; reflexivity. }
-
- assert (IS_POS' := IS_POS).
- rewrite <- H3 in IS_POS'; apply Next_pos in IS_POS'.
- exploit transl_code_at_pc_intro; eauto; unfold transf_function; auto. {
- rewrite Ptrofs.unsigned_zero; erewrite is_pos_unsigned_repr; eauto.
- assert (0 < next (transl_function f) 0) as Z0. { apply next_progress. }
- assert ( next (transl_function f) 0
- < next (transl_function f) (next (transl_function f) 0)
- ) as Z1. { apply next_progress. }
- rewrite <- Z1. exact Z0.
- } intros TRANSL_CODE1.
-
- exploit exit_step_simulation; eauto.
- rewrite Ptrofs.unsigned_repr.
- 2: {
- assert(max_pos (transl_function f) <= Ptrofs.max_unsigned) as MAX_POS. {
- eapply functions_bound_max_pos; eauto.
- }
- rewrite <- MAX_POS.
- eapply is_pos_bound_pos; eauto.
- }
- exact TRANSL_CODE1.
- intros (? & ? & EXIT_STEP & MATCH_EXIT).
-
- exploit (trivial_exec_prologue (transl_function f) (Ptrofs.repr (next (transl_function f) (Ptrofs.unsigned Ptrofs.zero)))). {
- rewrite Ptrofs.unsigned_zero; erewrite is_pos_unsigned_repr; eauto.
- } intros NO_PROL.
-
- exploit exec_bblock_all; eauto; intros BBLOCK1.
-
- clear AGPC.
- rewrite <- H3 in IS_POS.
- exploit (exec_step_internal next tge fb
- (Ptrofs.repr (next (transl_function f) (Ptrofs.unsigned Ptrofs.zero)))
- (transl_function f)
- bb c); simplify_regmap; eauto.
-
- intros STEP1.
-
- eexists; split.
- + eapply plus_two.
- * exact STEP0.
- * exact STEP1.
- * trivial.
- + assumption.
-Qed.
-
-Lemma step_simulation s1 t s1':
- Machblock.step rao ge s1 t s1' ->
- forall s2, match_states s1 s2 ->
- (exists s2', plus (step next) tge s2 t s2' /\ match_states s1' s2') \/ ((measure s1' < measure s1)%nat /\ t = E0 /\ match_states s1' s2).
-Proof.
- intros STEP s2 MATCH; destruct MATCH.
- - exploit inst_step_simulation; eauto.
- - left.
- destruct (has_header (fn_code f)) eqn:NO_HEADER.
- + eapply prologue_simulation_header_step; eauto.
- + exploit prologue_simulation_no_header_step; eauto;
- intros (s2' & NO_HEADER_STEP & MATCH_STATES).
- eexists; split; eauto.
- apply plus_one; eauto.
- - inv STEP; simpl; exploit functions_translated; eauto;
- intros (tf0 & FINDtf & TRANSf);
- monadInv TRANSf.
- * (* internal calls *)
- right.
- intuition.
- econstructor; eauto.
- -- exploit
- (mkagree (undef_regs destroyed_at_function_entry ms)
- sp
- (set_from_Machrs (undef_regs destroyed_at_function_entry rs) rs) # SP <- sp
- ); eauto.
- ++ unfold sp; discriminate.
- ++ intros mr; unfold undef_regs;
- induction destroyed_at_function_entry as [ | ? ? IH].
- ** inversion AG as [_ _ AG_MREGS]; apply AG_MREGS.
- ** fold undef_regs in *;
- unfold Regmap.set; simpl; rewrite IH; reflexivity.
- -- unfold exec_prologue;
- inversion AG as (RS_SP & ?); rewrite RS_SP; fold sp;
- rewrite H4; fold sp; rewrite H7; rewrite ATLR; rewrite H8; eauto.
- * (* external calls *)
- left.
- exploit extcall_arguments_match; eauto.
- eexists; split.
- + eapply plus_one.
- eapply exec_step_external; eauto.
- eapply external_call_symbols_preserved; eauto. apply senv_preserved.
- + econstructor; eauto.
- - (* Returnstate *)
- inv STEP; simpl; right.
- inv STACKS; simpl in *; subst.
- repeat (econstructor; eauto).
-Qed.
-
-(** * The main simulation theorem *)
-
-Theorem transf_program_correct:
- forward_simulation (Machblock.semantics rao prog) (semantics next tprog).
-Proof.
- eapply forward_simulation_star with (measure := measure).
- apply senv_preserved.
- - eexact transf_initial_states.
- - eexact transf_final_states.
- - eexact step_simulation.
-Qed.
-
-End PRESERVATION.