SUCTF2019 babyunic

  • unicorn CPU 模拟器

  • 查看main

  • int __fastcall sub_CBA(const char *a1, __int64 a2, const char *a3)
    {
      size_t v3; // rax
      int v5; // [rsp+20h] [rbp-30h] BYREF
      int v6; // [rsp+24h] [rbp-2Ch] BYREF
      int v7; // [rsp+28h] [rbp-28h] BYREF
      int v8; // [rsp+2Ch] [rbp-24h] BYREF
      __int64 v9; // [rsp+30h] [rbp-20h] BYREF
      FILE *stream; // [rsp+38h] [rbp-18h]
      void *ptr; // [rsp+40h] [rbp-10h]
      unsigned __int64 v12; // [rsp+48h] [rbp-8h]
    
      v12 = __readfsqword(0x28u);
      stream = fopen(a3, "rb");
      ptr = malloc(0x7100uLL);
      fread(ptr, 1uLL, 0x7100uLL, stream);
      v5 = 270532544;
      v6 = 270532544;
      v7 = 270531328;
      v8 = 270531072;
      uc_open(3LL, 1073741828LL, &v9);
      uc_mem_map(v9, 0x400000LL, 0x200000LL, 7LL);
      uc_mem_map(v9, 0x10000000LL, 0x200000LL, 7LL);
      v3 = strlen(a1);
      uc_mem_write(v9, 270531328LL, a1, v3);
      uc_mem_write(v9, 0x400000LL, ptr, 28928LL);
      uc_reg_write(v9, 31LL, (__int64)&v5);
      uc_reg_write(v9, 32LL, (__int64)&v6);
      uc_reg_write(v9, 7LL, (__int64)&v8);
      uc_reg_write(v9, 6LL, (__int64)&v7);
      uc_emu_start(v9, 0x400000LL, 4223084LL, 0LL, 0LL);
      uc_mem_read(v9, 270531072LL, a2, 200LL);
      uc_close(v9);
      return fclose(stream);
    }
    
  • babyunic会通过un.so.1去模拟执行func

  • un.so.1反汇编后发现是对上述main函数中的一些函数进行解释,其实就是模拟CPU

  • 查看unicorn.h文件

  • 找到参数对应常量意义

  • typedef enum uc_arch {
        UC_ARCH_ARM = 1, // ARM architecture (including Thumb, Thumb-2)
        UC_ARCH_ARM64,   // ARM-64, also called AArch64
        UC_ARCH_MIPS,    // Mips architecture
        UC_ARCH_X86,     // X86 architecture (including x86 & x86-64)
        UC_ARCH_PPC,     // PowerPC architecture
        UC_ARCH_SPARC,   // Sparc architecture
        UC_ARCH_M68K,    // M68K architecture
        UC_ARCH_RISCV,   // RISCV architecture
        UC_ARCH_S390X,   // S390X architecture
        UC_ARCH_TRICORE, // TriCore architecture
        UC_ARCH_MAX,
    } uc_arch;
    
    // Mode type
    typedef enum uc_mode {
        UC_MODE_LITTLE_ENDIAN = 0,    // little-endian mode (default mode)
        UC_MODE_BIG_ENDIAN = 1 << 30, // big-endian mode
    
        // arm / arm64
        UC_MODE_ARM = 0,        // ARM mode
        UC_MODE_THUMB = 1 << 4, // THUMB mode (including Thumb-2)
        // Depreciated, use UC_ARM_CPU_* with uc_ctl instead.
        UC_MODE_MCLASS = 1 << 5,  // ARM's Cortex-M series.
        UC_MODE_V8 = 1 << 6,      // ARMv8 A32 encodings for ARM
        UC_MODE_ARMBE8 = 1 << 10, // Big-endian data and Little-endian code.
                                  // Legacy support for UC1 only.
    
        // arm (32bit) cpu types
        // Depreciated, use UC_ARM_CPU_* with uc_ctl instead.
        UC_MODE_ARM926 = 1 << 7,  // ARM926 CPU type
        UC_MODE_ARM946 = 1 << 8,  // ARM946 CPU type
        UC_MODE_ARM1176 = 1 << 9, // ARM1176 CPU type
    
        // mips
        UC_MODE_MICRO = 1 << 4,    // MicroMips mode (currently unsupported)
        UC_MODE_MIPS3 = 1 << 5,    // Mips III ISA (currently unsupported)
        UC_MODE_MIPS32R6 = 1 << 6, // Mips32r6 ISA (currently unsupported)
        UC_MODE_MIPS32 = 1 << 2,   // Mips32 ISA
        UC_MODE_MIPS64 = 1 << 3,   // Mips64 ISA
    
        // x86 / x64
        UC_MODE_16 = 1 << 1, // 16-bit mode
        UC_MODE_32 = 1 << 2, // 32-bit mode
        UC_MODE_64 = 1 << 3, // 64-bit mode
    
        // ppc
        UC_MODE_PPC32 = 1 << 2, // 32-bit mode
        UC_MODE_PPC64 = 1 << 3, // 64-bit mode (currently unsupported)
        UC_MODE_QPX =
            1 << 4, // Quad Processing eXtensions mode (currently unsupported)
    
        // sparc
        UC_MODE_SPARC32 = 1 << 2, // 32-bit mode
        UC_MODE_SPARC64 = 1 << 3, // 64-bit mode
        UC_MODE_V9 = 1 << 4,      // SparcV9 mode (currently unsupported)
    
        // riscv
        UC_MODE_RISCV32 = 1 << 2, // 32-bit mode
        UC_MODE_RISCV64 = 1 << 3, // 64-bit mode
    
        // m68k
    } uc_mode;
    
    
  • 发现是mips32位大端

  • 后用ghidra进行反编译

  • ./ghidrarun,codebrowser

  • void UndefinedFunction_00000000(byte *param_1,int *param_2)
    
    {
      int iStack_10;
      int iStack_c;
      
      for (iStack_c = 0; param_1[iStack_c] != 0; iStack_c = iStack_c + 1) {
      }
      for (iStack_10 = 0; iStack_10 < iStack_c; iStack_10 = iStack_10 + 1) {
        param_1[iStack_10] = (param_1[iStack_10] << 3 | param_1[iStack_10] >> 5) ^ (byte)iStack_10;
      }
      *param_2 = ((((((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2]) -
                                              (uint)param_1[3]) + (uint)param_1[4]) - (uint)param_1[5])
                                           - (uint)param_1[6]) - (uint)param_1[7]) - (uint)param_1[8]) +
                                         (uint)param_1[9] + (uint)param_1[10]) - (uint)param_1[0xb]) +
                                      (uint)param_1[0xc]) - (uint)param_1[0xd]) - (uint)param_1[0xe]) +
                                   (uint)param_1[0xf]) - (uint)param_1[0x10]) - (uint)param_1[0x11]) +
                                 (uint)param_1[0x12] + (uint)param_1[0x13]) - (uint)param_1[0x14]) +
                               (uint)param_1[0x15] + (uint)param_1[0x16] + (uint)param_1[0x17] +
                              (uint)param_1[0x18]) - (uint)param_1[0x19]) + (uint)param_1[0x1a]) -
                           (uint)param_1[0x1b]) + (uint)param_1[0x1c] + (uint)param_1[0x1d]) -
                         (uint)param_1[0x1e]) - (uint)param_1[0x1f]) + (uint)param_1[0x20]) -
                      (uint)param_1[0x21]) + (uint)param_1[0x22] + (uint)param_1[0x23]) -
                    (uint)param_1[0x24]) - (uint)param_1[0x25]) + (uint)param_1[0x26]) -
                 (uint)param_1[0x27]) + (uint)param_1[0x28] + (uint)param_1[0x29];
      param_2[1] = (((((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) +
                                                   (uint)param_1[2]) - (uint)param_1[3]) -
                                                 (uint)param_1[4]) + (uint)param_1[5]) -
                                               (uint)param_1[6]) - (uint)param_1[7]) - (uint)param_1[8])
                                            - (uint)param_1[9]) + (uint)param_1[10]) -
                                          (uint)param_1[0xb]) + (uint)param_1[0xc]) - (uint)param_1[0xd]
                                        ) - (uint)param_1[0xe]) + (uint)param_1[0xf]) -
                                     (uint)param_1[0x10]) - (uint)param_1[0x11]) + (uint)param_1[0x12])
                                  - (uint)param_1[0x13]) + (uint)param_1[0x14] + (uint)param_1[0x15]) -
                                (uint)param_1[0x16]) - (uint)param_1[0x17]) - (uint)param_1[0x18]) +
                             (uint)param_1[0x19]) - (uint)param_1[0x1a]) + (uint)param_1[0x1b]) -
                          (uint)param_1[0x1c]) - (uint)param_1[0x1d]) + (uint)param_1[0x1e] +
                         (uint)param_1[0x1f] + (uint)param_1[0x20] + (uint)param_1[0x21] +
                         (uint)param_1[0x22] + (uint)param_1[0x23]) - (uint)param_1[0x24]) -
                      (uint)param_1[0x25]) - (uint)param_1[0x26]) - (uint)param_1[0x27]) -
                   (uint)param_1[0x28]) + (uint)param_1[0x29];
      param_2[2] = ((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2] +
                                              (uint)param_1[3]) - (uint)param_1[4]) + (uint)param_1[5])
                                           - (uint)param_1[6]) - (uint)param_1[7]) + (uint)param_1[8]) -
                                        (uint)param_1[9]) - (uint)param_1[10]) - (uint)param_1[0xb]) -
                                     (uint)param_1[0xc]) - (uint)param_1[0xd]) + (uint)param_1[0xe]) -
                                  (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11] +
                                 (uint)param_1[0x12] + (uint)param_1[0x13] + (uint)param_1[0x14] +
                                (uint)param_1[0x15]) - (uint)param_1[0x16]) + (uint)param_1[0x17] +
                               (uint)param_1[0x18] + (uint)param_1[0x19] + (uint)param_1[0x1a]) -
                             (uint)param_1[0x1b]) + (uint)param_1[0x1c]) - (uint)param_1[0x1d]) +
                          (uint)param_1[0x1e]) - (uint)param_1[0x1f]) + (uint)param_1[0x20] +
                        (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) +
                      (uint)param_1[0x24] + (uint)param_1[0x25] + (uint)param_1[0x26]) -
                    (uint)param_1[0x27]) + (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[3] = ((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) - (uint)param_1[2])
                                               - (uint)param_1[3]) - (uint)param_1[4]) -
                                             (uint)param_1[5]) + (uint)param_1[6] + (uint)param_1[7]) -
                                           (uint)param_1[8]) - (uint)param_1[9]) - (uint)param_1[10]) -
                                        (uint)param_1[0xb]) + (uint)param_1[0xc]) - (uint)param_1[0xd])
                                     + (uint)param_1[0xe]) - (uint)param_1[0xf]) + (uint)param_1[0x10])
                                  - (uint)param_1[0x11]) + (uint)param_1[0x12] + (uint)param_1[0x13] +
                                 (uint)param_1[0x14]) - (uint)param_1[0x15]) + (uint)param_1[0x16] +
                                (uint)param_1[0x17] + (uint)param_1[0x18]) - (uint)param_1[0x19]) -
                             (uint)param_1[0x1a]) + (uint)param_1[0x1b]) - (uint)param_1[0x1c]) +
                           (uint)param_1[0x1d] + (uint)param_1[0x1e]) - (uint)param_1[0x1f]) -
                        (uint)param_1[0x20]) - (uint)param_1[0x21]) + (uint)param_1[0x22]) -
                     (uint)param_1[0x23]) + (uint)param_1[0x24] + (uint)param_1[0x25] +
                    (uint)param_1[0x26]) - (uint)param_1[0x27]) + (uint)param_1[0x28] +
                   (uint)param_1[0x29];
      param_2[4] = ((((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) -
                                                  (uint)param_1[2]) + (uint)param_1[3]) -
                                                (uint)param_1[4]) - (uint)param_1[5]) + (uint)param_1[6]
                                               + (uint)param_1[7] + (uint)param_1[8] + (uint)param_1[9])
                                             - (uint)param_1[10]) + (uint)param_1[0xb] +
                                            (uint)param_1[0xc]) - (uint)param_1[0xd]) +
                                          (uint)param_1[0xe]) - (uint)param_1[0xf]) +
                                         (uint)param_1[0x10] + (uint)param_1[0x11]) -
                                       (uint)param_1[0x12]) + (uint)param_1[0x13]) - (uint)param_1[0x14]
                                     ) + (uint)param_1[0x15]) - (uint)param_1[0x16]) -
                                  (uint)param_1[0x17]) - (uint)param_1[0x18]) + (uint)param_1[0x19]) -
                               (uint)param_1[0x1a]) - (uint)param_1[0x1b]) - (uint)param_1[0x1c]) +
                             (uint)param_1[0x1d] + (uint)param_1[0x1e] + (uint)param_1[0x1f]) -
                           (uint)param_1[0x20]) + (uint)param_1[0x21]) - (uint)param_1[0x22]) -
                        (uint)param_1[0x23]) + (uint)param_1[0x24]) - (uint)param_1[0x25]) +
                     (uint)param_1[0x26]) - (uint)param_1[0x27]) - (uint)param_1[0x28]) -
                   (uint)param_1[0x29];
      param_2[5] = (((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2] +
                                               (uint)param_1[3] + (uint)param_1[4] + (uint)param_1[5] +
                                               (uint)param_1[6] + (uint)param_1[7] + (uint)param_1[8]) -
                                             (uint)param_1[9]) - (uint)param_1[10]) - (uint)param_1[0xb]
                                           ) - (uint)param_1[0xc]) - (uint)param_1[0xd]) -
                                        (uint)param_1[0xe]) + (uint)param_1[0xf]) - (uint)param_1[0x10])
                                     + (uint)param_1[0x11]) - (uint)param_1[0x12]) + (uint)param_1[0x13]
                                   + (uint)param_1[0x14]) - (uint)param_1[0x15]) + (uint)param_1[0x16])
                                - (uint)param_1[0x17]) + (uint)param_1[0x18]) - (uint)param_1[0x19]) +
                              (uint)param_1[0x1a] + (uint)param_1[0x1b]) - (uint)param_1[0x1c]) +
                           (uint)param_1[0x1d]) - (uint)param_1[0x1e]) + (uint)param_1[0x1f] +
                          (uint)param_1[0x20] + (uint)param_1[0x21]) - (uint)param_1[0x22]) -
                       (uint)param_1[0x23]) - (uint)param_1[0x24]) + (uint)param_1[0x25]) -
                    (uint)param_1[0x26]) - (uint)param_1[0x27]) + (uint)param_1[0x28] +
                   (uint)param_1[0x29];
      param_2[6] = ((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2] +
                                             (uint)param_1[3] + (uint)param_1[4]) - (uint)param_1[5]) +
                                           (uint)param_1[6] + (uint)param_1[7] + (uint)param_1[8] +
                                          (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb] +
                                        (uint)param_1[0xc]) - (uint)param_1[0xd]) + (uint)param_1[0xe] +
                                       (uint)param_1[0xf] + (uint)param_1[0x10] + (uint)param_1[0x11]) -
                                     (uint)param_1[0x12]) - (uint)param_1[0x13]) - (uint)param_1[0x14])
                                  - (uint)param_1[0x15]) - (uint)param_1[0x16]) - (uint)param_1[0x17]) +
                                (uint)param_1[0x18] + (uint)param_1[0x19]) - (uint)param_1[0x1a]) +
                              (uint)param_1[0x1b] + (uint)param_1[0x1c] + (uint)param_1[0x1d]) -
                            (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
                         (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) +
                       (uint)param_1[0x24] + (uint)param_1[0x25]) - (uint)param_1[0x26]) -
                    (uint)param_1[0x27]) + (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[7] = (((((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1]) - (uint)param_1[2])
                                              - (uint)param_1[3]) - (uint)param_1[4]) + (uint)param_1[5]
                                            + (uint)param_1[6]) - (uint)param_1[7]) + (uint)param_1[8] +
                                          (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb]) -
                                       (uint)param_1[0xc]) + (uint)param_1[0xd]) - (uint)param_1[0xe]) +
                                    (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11]) -
                                 (uint)param_1[0x12]) - (uint)param_1[0x13]) + (uint)param_1[0x14]) -
                              (uint)param_1[0x15]) + (uint)param_1[0x16]) - (uint)param_1[0x17]) -
                           (uint)param_1[0x18]) + (uint)param_1[0x19]) - (uint)param_1[0x1a]) +
                         (uint)param_1[0x1b] + (uint)param_1[0x1c] + (uint)param_1[0x1d] +
                         (uint)param_1[0x1e] + (uint)param_1[0x1f] + (uint)param_1[0x20]) -
                       (uint)param_1[0x21]) + (uint)param_1[0x22]) - (uint)param_1[0x23]) +
                     (uint)param_1[0x24] + (uint)param_1[0x25] + (uint)param_1[0x26] +
                    (uint)param_1[0x27]) - (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[8] = ((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) - (uint)param_1[2]) +
                                              (uint)param_1[3] + (uint)param_1[4]) - (uint)param_1[5]) +
                                            (uint)param_1[6] + (uint)param_1[7] + (uint)param_1[8] +
                                            (uint)param_1[9] + (uint)param_1[10]) - (uint)param_1[0xb])
                                         - (uint)param_1[0xc]) + (uint)param_1[0xd]) -
                                       (uint)param_1[0xe]) + (uint)param_1[0xf] + (uint)param_1[0x10] +
                                       (uint)param_1[0x11] + (uint)param_1[0x12]) - (uint)param_1[0x13])
                                     + (uint)param_1[0x14] + (uint)param_1[0x15]) - (uint)param_1[0x16])
                                  - (uint)param_1[0x17]) + (uint)param_1[0x18] + (uint)param_1[0x19] +
                                 (uint)param_1[0x1a]) - (uint)param_1[0x1b]) + (uint)param_1[0x1c]) -
                              (uint)param_1[0x1d]) - (uint)param_1[0x1e]) - (uint)param_1[0x1f]) -
                           (uint)param_1[0x20]) - (uint)param_1[0x21]) + (uint)param_1[0x22]) -
                        (uint)param_1[0x23]) - (uint)param_1[0x24]) + (uint)param_1[0x25]) -
                     (uint)param_1[0x26]) - (uint)param_1[0x27]) + (uint)param_1[0x28]) -
                   (uint)param_1[0x29];
      param_2[9] = ((((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2]) -
                                              (uint)param_1[3]) + (uint)param_1[4] + (uint)param_1[5] +
                                             (uint)param_1[6]) - (uint)param_1[7]) - (uint)param_1[8]) -
                                          (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb] +
                                         (uint)param_1[0xc] + (uint)param_1[0xd]) - (uint)param_1[0xe])
                                       + (uint)param_1[0xf] + (uint)param_1[0x10]) - (uint)param_1[0x11]
                                     ) - (uint)param_1[0x12]) + (uint)param_1[0x13] +
                                   (uint)param_1[0x14]) - (uint)param_1[0x15]) - (uint)param_1[0x16]) -
                                (uint)param_1[0x17]) + (uint)param_1[0x18]) - (uint)param_1[0x19]) -
                             (uint)param_1[0x1a]) - (uint)param_1[0x1b]) + (uint)param_1[0x1c] +
                            (uint)param_1[0x1d] + (uint)param_1[0x1e]) - (uint)param_1[0x1f]) +
                          (uint)param_1[0x20] + (uint)param_1[0x21]) - (uint)param_1[0x22]) -
                       (uint)param_1[0x23]) - (uint)param_1[0x24]) - (uint)param_1[0x25]) +
                    (uint)param_1[0x26]) - (uint)param_1[0x27]) + (uint)param_1[0x28] +
                   (uint)param_1[0x29];
      param_2[10] = (((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) +
                                                   (uint)param_1[2] + (uint)param_1[3]) -
                                                 (uint)param_1[4]) - (uint)param_1[5]) +
                                                (uint)param_1[6] + (uint)param_1[7]) - (uint)param_1[8])
                                             - (uint)param_1[9]) - (uint)param_1[10]) -
                                           (uint)param_1[0xb]) + (uint)param_1[0xc] + (uint)param_1[0xd]
                                          + (uint)param_1[0xe]) - (uint)param_1[0xf]) +
                                        (uint)param_1[0x10]) - (uint)param_1[0x11]) +
                                       (uint)param_1[0x12] + (uint)param_1[0x13] + (uint)param_1[0x14])
                                     - (uint)param_1[0x15]) + (uint)param_1[0x16]) - (uint)param_1[0x17]
                                   ) - (uint)param_1[0x18]) - (uint)param_1[0x19]) + (uint)param_1[0x1a]
                                ) - (uint)param_1[0x1b]) - (uint)param_1[0x1c]) + (uint)param_1[0x1d]) -
                            (uint)param_1[0x1e]) + (uint)param_1[0x1f] + (uint)param_1[0x20]) -
                          (uint)param_1[0x21]) - (uint)param_1[0x22]) + (uint)param_1[0x23]) -
                       (uint)param_1[0x24]) - (uint)param_1[0x25]) + (uint)param_1[0x26]) -
                    (uint)param_1[0x27]) + (uint)param_1[0x28] + (uint)param_1[0x29];
      param_2[0xb] = (((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2]
                                                  + (uint)param_1[3] + (uint)param_1[4]) -
                                                (uint)param_1[5]) + (uint)param_1[6] + (uint)param_1[7])
                                              - (uint)param_1[8]) + (uint)param_1[9] + (uint)param_1[10]
                                             ) - (uint)param_1[0xb]) - (uint)param_1[0xc]) -
                                          (uint)param_1[0xd]) - (uint)param_1[0xe]) + (uint)param_1[0xf]
                                        ) - (uint)param_1[0x10]) - (uint)param_1[0x11]) -
                                     (uint)param_1[0x12]) + (uint)param_1[0x13] + (uint)param_1[0x14]) -
                                   (uint)param_1[0x15]) + (uint)param_1[0x16]) - (uint)param_1[0x17]) +
                                 (uint)param_1[0x18] + (uint)param_1[0x19] + (uint)param_1[0x1a] +
                                (uint)param_1[0x1b]) - (uint)param_1[0x1c]) + (uint)param_1[0x1d] +
                              (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
                           (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) +
                         (uint)param_1[0x24] + (uint)param_1[0x25]) - (uint)param_1[0x26]) -
                      (uint)param_1[0x27]) - (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0xc] = ((((((((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) -
                                                        (uint)param_1[2]) - (uint)param_1[3]) +
                                                      (uint)param_1[4]) - (uint)param_1[5]) -
                                                    (uint)param_1[6]) + (uint)param_1[7] +
                                                   (uint)param_1[8]) - (uint)param_1[9]) +
                                                 (uint)param_1[10]) - (uint)param_1[0xb]) -
                                               (uint)param_1[0xc]) - (uint)param_1[0xd]) +
                                             (uint)param_1[0xe]) - (uint)param_1[0xf]) +
                                           (uint)param_1[0x10]) - (uint)param_1[0x11]) +
                                         (uint)param_1[0x12]) - (uint)param_1[0x13]) -
                                       (uint)param_1[0x14]) - (uint)param_1[0x15]) - (uint)param_1[0x16]
                                     ) + (uint)param_1[0x17]) - (uint)param_1[0x18]) +
                                  (uint)param_1[0x19]) - (uint)param_1[0x1a]) + (uint)param_1[0x1b]) -
                               (uint)param_1[0x1c]) + (uint)param_1[0x1d]) - (uint)param_1[0x1e]) -
                            (uint)param_1[0x1f]) + (uint)param_1[0x20] + (uint)param_1[0x21] +
                           (uint)param_1[0x22]) - (uint)param_1[0x23]) - (uint)param_1[0x24]) -
                        (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27]) -
                     (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0xd] = ((((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) +
                                                    (uint)param_1[2]) - (uint)param_1[3]) +
                                                  (uint)param_1[4]) - (uint)param_1[5]) +
                                                (uint)param_1[6]) - (uint)param_1[7]) + (uint)param_1[8]
                                              ) - (uint)param_1[9]) + (uint)param_1[10]) -
                                           (uint)param_1[0xb]) + (uint)param_1[0xc] + (uint)param_1[0xd]
                                           + (uint)param_1[0xe] + (uint)param_1[0xf]) -
                                         (uint)param_1[0x10]) - (uint)param_1[0x11]) -
                                       (uint)param_1[0x12]) + (uint)param_1[0x13] + (uint)param_1[0x14]
                                      + (uint)param_1[0x15]) - (uint)param_1[0x16]) -
                                    (uint)param_1[0x17]) + (uint)param_1[0x18] + (uint)param_1[0x19]) -
                                  (uint)param_1[0x1a]) - (uint)param_1[0x1b]) + (uint)param_1[0x1c] +
                                (uint)param_1[0x1d]) - (uint)param_1[0x1e]) - (uint)param_1[0x1f]) -
                             (uint)param_1[0x20]) + (uint)param_1[0x21]) - (uint)param_1[0x22]) -
                          (uint)param_1[0x23]) + (uint)param_1[0x24]) - (uint)param_1[0x25]) -
                       (uint)param_1[0x26]) - (uint)param_1[0x27]) + (uint)param_1[0x28]) -
                     (uint)param_1[0x29];
      param_2[0xe] = ((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2]) -
                                            (uint)param_1[3]) - (uint)param_1[4]) - (uint)param_1[5]) +
                                         (uint)param_1[6]) - (uint)param_1[7]) + (uint)param_1[8] +
                                        (uint)param_1[9] + (uint)param_1[10]) - (uint)param_1[0xb]) +
                                     (uint)param_1[0xc]) - (uint)param_1[0xd]) - (uint)param_1[0xe]) +
                                   (uint)param_1[0xf] + (uint)param_1[0x10] + (uint)param_1[0x11]) -
                                 (uint)param_1[0x12]) - (uint)param_1[0x13]) - (uint)param_1[0x14]) -
                              (uint)param_1[0x15]) + (uint)param_1[0x16] + (uint)param_1[0x17] +
                             (uint)param_1[0x18]) - (uint)param_1[0x19]) + (uint)param_1[0x1a] +
                            (uint)param_1[0x1b] + (uint)param_1[0x1c]) - (uint)param_1[0x1d]) -
                         (uint)param_1[0x1e]) - (uint)param_1[0x1f]) + (uint)param_1[0x20] +
                        (uint)param_1[0x21] + (uint)param_1[0x22] + (uint)param_1[0x23] +
                        (uint)param_1[0x24] + (uint)param_1[0x25] + (uint)param_1[0x26]) -
                      (uint)param_1[0x27]) - (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0xf] = (((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2] +
                                              (uint)param_1[3] + (uint)param_1[4] + (uint)param_1[5]) -
                                            (uint)param_1[6]) + (uint)param_1[7]) - (uint)param_1[8]) -
                                         (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb] +
                                        (uint)param_1[0xc] + (uint)param_1[0xd]) - (uint)param_1[0xe]) -
                                     (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11]) -
                                  (uint)param_1[0x12]) - (uint)param_1[0x13]) - (uint)param_1[0x14]) -
                               (uint)param_1[0x15]) + (uint)param_1[0x16] + (uint)param_1[0x17] +
                               (uint)param_1[0x18] + (uint)param_1[0x19] + (uint)param_1[0x1a] +
                              (uint)param_1[0x1b]) - (uint)param_1[0x1c]) - (uint)param_1[0x1d]) -
                           (uint)param_1[0x1e]) - (uint)param_1[0x1f]) + (uint)param_1[0x20]) -
                        (uint)param_1[0x21]) + (uint)param_1[0x22] + (uint)param_1[0x23] +
                        (uint)param_1[0x24] + (uint)param_1[0x25]) - (uint)param_1[0x26]) +
                      (uint)param_1[0x27] + (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x10] =
           (((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2] +
                                       (uint)param_1[3]) - (uint)param_1[4]) - (uint)param_1[5]) +
                                     (uint)param_1[6] + (uint)param_1[7] + (uint)param_1[8] +
                                     (uint)param_1[9] + (uint)param_1[10]) - (uint)param_1[0xb]) +
                                  (uint)param_1[0xc]) - (uint)param_1[0xd]) + (uint)param_1[0xe] +
                                 (uint)param_1[0xf] + (uint)param_1[0x10]) - (uint)param_1[0x11]) +
                              (uint)param_1[0x12]) - (uint)param_1[0x13]) + (uint)param_1[0x14]) -
                           (uint)param_1[0x15]) - (uint)param_1[0x16]) - (uint)param_1[0x17]) -
                        (uint)param_1[0x18]) - (uint)param_1[0x19]) + (uint)param_1[0x1a] +
                       (uint)param_1[0x1b] + (uint)param_1[0x1c] + (uint)param_1[0x1d]) -
                     (uint)param_1[0x1e]) - (uint)param_1[0x1f]) + (uint)param_1[0x20]) -
                  (uint)param_1[0x21]) - (uint)param_1[0x22]) + (uint)param_1[0x23]) -
               (uint)param_1[0x24]) + (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27])
           - (uint)param_1[0x28]) + (uint)param_1[0x29];
      param_2[0x11] =
           (((((((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2] +
                                           (uint)param_1[3] + (uint)param_1[4]) - (uint)param_1[5]) +
                                         (uint)param_1[6] + (uint)param_1[7] + (uint)param_1[8]) -
                                       (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb]) -
                                    (uint)param_1[0xc]) + (uint)param_1[0xd] + (uint)param_1[0xe] +
                                   (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11]) -
                                (uint)param_1[0x12]) - (uint)param_1[0x13]) + (uint)param_1[0x14]) -
                             (uint)param_1[0x15]) + (uint)param_1[0x16]) - (uint)param_1[0x17]) -
                          (uint)param_1[0x18]) + (uint)param_1[0x19]) - (uint)param_1[0x1a]) +
                       (uint)param_1[0x1b]) - (uint)param_1[0x1c]) + (uint)param_1[0x1d]) -
                    (uint)param_1[0x1e]) - (uint)param_1[0x1f]) + (uint)param_1[0x20]) -
                 (uint)param_1[0x21]) - (uint)param_1[0x22]) + (uint)param_1[0x23]) -
              (uint)param_1[0x24]) + (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27] +
           (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x12] =
           (((((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) - (uint)param_1[2]) -
                                          (uint)param_1[3]) + (uint)param_1[4] + (uint)param_1[5]) -
                                        (uint)param_1[6]) + (uint)param_1[7]) - (uint)param_1[8]) +
                                      (uint)param_1[9] + (uint)param_1[10]) - (uint)param_1[0xb]) -
                                   (uint)param_1[0xc]) - (uint)param_1[0xd]) + (uint)param_1[0xe]) -
                                (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11] +
                               (uint)param_1[0x12] + (uint)param_1[0x13]) - (uint)param_1[0x14]) -
                            (uint)param_1[0x15]) - (uint)param_1[0x16]) - (uint)param_1[0x17]) -
                         (uint)param_1[0x18]) - (uint)param_1[0x19]) - (uint)param_1[0x1a]) -
                      (uint)param_1[0x1b]) + (uint)param_1[0x1c] + (uint)param_1[0x1d] +
                     (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
                  (uint)param_1[0x21]) + (uint)param_1[0x22]) - (uint)param_1[0x23]) -
               (uint)param_1[0x24]) - (uint)param_1[0x25]) - (uint)param_1[0x26]) - (uint)param_1[0x27])
           - (uint)param_1[0x28]) + (uint)param_1[0x29];
      param_2[0x13] =
           (((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2] +
                                    (uint)param_1[3]) - (uint)param_1[4]) - (uint)param_1[5]) +
                                 (uint)param_1[6]) - (uint)param_1[7]) - (uint)param_1[8]) -
                              (uint)param_1[9]) - (uint)param_1[10]) - (uint)param_1[0xb]) -
                           (uint)param_1[0xc]) - (uint)param_1[0xd]) + (uint)param_1[0xe] +
                          (uint)param_1[0xf] + (uint)param_1[0x10]) - (uint)param_1[0x11]) +
                        (uint)param_1[0x12] + (uint)param_1[0x13] + (uint)param_1[0x14] +
                       (uint)param_1[0x15]) - (uint)param_1[0x16]) + (uint)param_1[0x17] +
                     (uint)param_1[0x18]) - (uint)param_1[0x19]) + (uint)param_1[0x1a] +
                   (uint)param_1[0x1b]) - (uint)param_1[0x1c]) + (uint)param_1[0x1d] +
                  (uint)param_1[0x1e] + (uint)param_1[0x1f] + (uint)param_1[0x20] + (uint)param_1[0x21])
                - (uint)param_1[0x22]) + (uint)param_1[0x23]) - (uint)param_1[0x24]) -
             (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27] + (uint)param_1[0x28]) -
           (uint)param_1[0x29];
      param_2[0x14] =
           (((((((((((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1]) - (uint)param_1[2]) -
                                            (uint)param_1[3]) - (uint)param_1[4]) + (uint)param_1[5]) -
                                         (uint)param_1[6]) + (uint)param_1[7]) - (uint)param_1[8]) -
                                      (uint)param_1[9]) + (uint)param_1[10] + (uint)param_1[0xb]) -
                                    (uint)param_1[0xc]) - (uint)param_1[0xd]) + (uint)param_1[0xe]) -
                                 (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11]) -
                              (uint)param_1[0x12]) - (uint)param_1[0x13]) + (uint)param_1[0x14] +
                            (uint)param_1[0x15]) - (uint)param_1[0x16]) + (uint)param_1[0x17] +
                          (uint)param_1[0x18]) - (uint)param_1[0x19]) - (uint)param_1[0x1a]) -
                       (uint)param_1[0x1b]) - (uint)param_1[0x1c]) - (uint)param_1[0x1d]) -
                    (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) +
                 (uint)param_1[0x21]) - (uint)param_1[0x22]) + (uint)param_1[0x23] + (uint)param_1[0x24]
               ) - (uint)param_1[0x25]) + (uint)param_1[0x26]) - (uint)param_1[0x27]) +
           (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x15] =
           ((((((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) - (uint)param_1[2]) -
                                           (uint)param_1[3]) + (uint)param_1[4] + (uint)param_1[5] +
                                           (uint)param_1[6] + (uint)param_1[7]) - (uint)param_1[8]) -
                                        (uint)param_1[9]) - (uint)param_1[10]) - (uint)param_1[0xb]) -
                                     (uint)param_1[0xc]) - (uint)param_1[0xd]) - (uint)param_1[0xe]) -
                                  (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11]) -
                               (uint)param_1[0x12]) - (uint)param_1[0x13]) + (uint)param_1[0x14]) -
                            (uint)param_1[0x15]) + (uint)param_1[0x16] + (uint)param_1[0x17] +
                           (uint)param_1[0x18]) - (uint)param_1[0x19]) - (uint)param_1[0x1a]) +
                        (uint)param_1[0x1b]) - (uint)param_1[0x1c]) - (uint)param_1[0x1d]) -
                     (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
                  (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) -
               (uint)param_1[0x24]) + (uint)param_1[0x25]) - (uint)param_1[0x26]) - (uint)param_1[0x27])
           - (uint)param_1[0x28]) + (uint)param_1[0x29];
      param_2[0x16] =
           ((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2] +
                                      (uint)param_1[3] + (uint)param_1[4] + (uint)param_1[5] +
                                      (uint)param_1[6] + (uint)param_1[7]) - (uint)param_1[8]) +
                                   (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb]) -
                                (uint)param_1[0xc]) + (uint)param_1[0xd] + (uint)param_1[0xe] +
                               (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11] +
                             (uint)param_1[0x12]) - (uint)param_1[0x13]) - (uint)param_1[0x14]) +
                           (uint)param_1[0x15] + (uint)param_1[0x16]) - (uint)param_1[0x17]) +
                        (uint)param_1[0x18]) - (uint)param_1[0x19]) - (uint)param_1[0x1a]) +
                     (uint)param_1[0x1b]) - (uint)param_1[0x1c]) + (uint)param_1[0x1d] +
                    (uint)param_1[0x1e] + (uint)param_1[0x1f]) - (uint)param_1[0x20]) +
                 (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) -
              (uint)param_1[0x24]) - (uint)param_1[0x25]) + (uint)param_1[0x26]) - (uint)param_1[0x27])
           + (uint)param_1[0x28] + (uint)param_1[0x29];
      param_2[0x17] =
           ((((((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2] +
                                            (uint)param_1[3]) - (uint)param_1[4]) - (uint)param_1[5]) -
                                         (uint)param_1[6]) - (uint)param_1[7]) + (uint)param_1[8]) -
                                      (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb] +
                                    (uint)param_1[0xc]) - (uint)param_1[0xd]) - (uint)param_1[0xe]) +
                                 (uint)param_1[0xf]) - (uint)param_1[0x10]) - (uint)param_1[0x11]) +
                               (uint)param_1[0x12] + (uint)param_1[0x13]) - (uint)param_1[0x14]) -
                            (uint)param_1[0x15]) + (uint)param_1[0x16]) - (uint)param_1[0x17]) +
                          (uint)param_1[0x18] + (uint)param_1[0x19]) - (uint)param_1[0x1a]) +
                       (uint)param_1[0x1b]) - (uint)param_1[0x1c]) + (uint)param_1[0x1d] +
                     (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
                  (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) -
               (uint)param_1[0x24]) - (uint)param_1[0x25]) + (uint)param_1[0x26]) - (uint)param_1[0x27])
           - (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x18] =
           ((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1]) - (uint)param_1[2]) +
                                  (uint)param_1[3] + (uint)param_1[4]) - (uint)param_1[5]) +
                                (uint)param_1[6] + (uint)param_1[7]) - (uint)param_1[8]) +
                              (uint)param_1[9] + (uint)param_1[10]) - (uint)param_1[0xb]) -
                           (uint)param_1[0xc]) - (uint)param_1[0xd]) - (uint)param_1[0xe]) +
                         (uint)param_1[0xf] + (uint)param_1[0x10] + (uint)param_1[0x11]) -
                       (uint)param_1[0x12]) + (uint)param_1[0x13] + (uint)param_1[0x14] +
                       (uint)param_1[0x15] + (uint)param_1[0x16] + (uint)param_1[0x17] +
                       (uint)param_1[0x18] + (uint)param_1[0x19]) - (uint)param_1[0x1a]) -
                    (uint)param_1[0x1b]) - (uint)param_1[0x1c]) + (uint)param_1[0x1d] +
                  (uint)param_1[0x1e]) - (uint)param_1[0x1f]) + (uint)param_1[0x20] +
                 (uint)param_1[0x21] + (uint)param_1[0x22]) - (uint)param_1[0x23]) - (uint)param_1[0x24]
              ) - (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27] +
           (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x19] =
           (((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2] +
                                         (uint)param_1[3]) - (uint)param_1[4]) + (uint)param_1[5] +
                                       (uint)param_1[6]) - (uint)param_1[7]) + (uint)param_1[8] +
                                      (uint)param_1[9] + (uint)param_1[10]) - (uint)param_1[0xb]) -
                                   (uint)param_1[0xc]) + (uint)param_1[0xd]) - (uint)param_1[0xe]) +
                                (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11] +
                               (uint)param_1[0x12] + (uint)param_1[0x13]) - (uint)param_1[0x14]) -
                            (uint)param_1[0x15]) + (uint)param_1[0x16] + (uint)param_1[0x17]) -
                          (uint)param_1[0x18]) - (uint)param_1[0x19]) + (uint)param_1[0x1a]) -
                       (uint)param_1[0x1b]) + (uint)param_1[0x1c]) - (uint)param_1[0x1d]) +
                    (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) +
                 (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) -
              (uint)param_1[0x24]) - (uint)param_1[0x25]) + (uint)param_1[0x26]) - (uint)param_1[0x27])
           + (uint)param_1[0x28] + (uint)param_1[0x29];
      param_2[0x1a] =
           ((((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2] +
                                        (uint)param_1[3] + (uint)param_1[4]) - (uint)param_1[5]) -
                                     (uint)param_1[6]) + (uint)param_1[7]) - (uint)param_1[8]) -
                                  (uint)param_1[9]) - (uint)param_1[10]) - (uint)param_1[0xb]) +
                               (uint)param_1[0xc]) - (uint)param_1[0xd]) + (uint)param_1[0xe]) -
                            (uint)param_1[0xf]) + (uint)param_1[0x10]) - (uint)param_1[0x11]) +
                         (uint)param_1[0x12]) - (uint)param_1[0x13]) - (uint)param_1[0x14]) +
                       (uint)param_1[0x15] + (uint)param_1[0x16] + (uint)param_1[0x17] +
                       (uint)param_1[0x18] + (uint)param_1[0x19]) - (uint)param_1[0x1a]) -
                    (uint)param_1[0x1b]) - (uint)param_1[0x1c]) - (uint)param_1[0x1d]) +
                  (uint)param_1[0x1e] + (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
               (uint)param_1[0x21]) - (uint)param_1[0x22]) + (uint)param_1[0x23] + (uint)param_1[0x24])
            - (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27] + (uint)param_1[0x28] +
           (uint)param_1[0x29];
      param_2[0x1b] =
           ((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2]) -
                                       (uint)param_1[3]) + (uint)param_1[4]) - (uint)param_1[5]) -
                                    (uint)param_1[6]) - (uint)param_1[7]) - (uint)param_1[8]) -
                                 (uint)param_1[9]) - (uint)param_1[10]) - (uint)param_1[0xb]) +
                               (uint)param_1[0xc] + (uint)param_1[0xd]) - (uint)param_1[0xe]) +
                             (uint)param_1[0xf] + (uint)param_1[0x10] + (uint)param_1[0x11] +
                             (uint)param_1[0x12] + (uint)param_1[0x13]) - (uint)param_1[0x14]) -
                          (uint)param_1[0x15]) - (uint)param_1[0x16]) - (uint)param_1[0x17]) +
                        (uint)param_1[0x18] + (uint)param_1[0x19] + (uint)param_1[0x1a]) -
                      (uint)param_1[0x1b]) + (uint)param_1[0x1c] + (uint)param_1[0x1d] +
                     (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
                  (uint)param_1[0x21]) - (uint)param_1[0x22]) + (uint)param_1[0x23]) -
               (uint)param_1[0x24]) - (uint)param_1[0x25]) - (uint)param_1[0x26]) - (uint)param_1[0x27])
           - (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x1c] =
           (((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2] +
                                        (uint)param_1[3] + (uint)param_1[4]) - (uint)param_1[5]) +
                                      (uint)param_1[6] + (uint)param_1[7]) - (uint)param_1[8]) -
                                   (uint)param_1[9]) + (uint)param_1[10] + (uint)param_1[0xb]) -
                                 (uint)param_1[0xc]) + (uint)param_1[0xd]) - (uint)param_1[0xe]) +
                              (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11] +
                             (uint)param_1[0x12] + (uint)param_1[0x13]) - (uint)param_1[0x14]) -
                          (uint)param_1[0x15]) + (uint)param_1[0x16]) - (uint)param_1[0x17]) -
                       (uint)param_1[0x18]) - (uint)param_1[0x19]) - (uint)param_1[0x1a]) +
                    (uint)param_1[0x1b]) - (uint)param_1[0x1c]) - (uint)param_1[0x1d]) -
                 (uint)param_1[0x1e]) + (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
              (uint)param_1[0x21]) + (uint)param_1[0x22] + (uint)param_1[0x23] + (uint)param_1[0x24]) -
            (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27] + (uint)param_1[0x28] +
           (uint)param_1[0x29];
      param_2[0x1d] =
           (((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1]) - (uint)param_1[2]) -
                                  (uint)param_1[3]) - (uint)param_1[4]) + (uint)param_1[5] +
                                 (uint)param_1[6] + (uint)param_1[7]) - (uint)param_1[8]) +
                              (uint)param_1[9]) - (uint)param_1[10]) - (uint)param_1[0xb]) +
                           (uint)param_1[0xc]) - (uint)param_1[0xd]) + (uint)param_1[0xe] +
                         (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11] +
                       (uint)param_1[0x12]) - (uint)param_1[0x13]) + (uint)param_1[0x14] +
                      (uint)param_1[0x15] + (uint)param_1[0x16] + (uint)param_1[0x17]) -
                    (uint)param_1[0x18]) + (uint)param_1[0x19] + (uint)param_1[0x1a]) -
                  (uint)param_1[0x1b]) + (uint)param_1[0x1c] + (uint)param_1[0x1d] + (uint)param_1[0x1e]
                  + (uint)param_1[0x1f] + (uint)param_1[0x20]) - (uint)param_1[0x21]) -
               (uint)param_1[0x22]) + (uint)param_1[0x23] + (uint)param_1[0x24]) - (uint)param_1[0x25])
             + (uint)param_1[0x26] + (uint)param_1[0x27]) - (uint)param_1[0x28]) + (uint)param_1[0x29];
      param_2[0x1e] =
           (((((((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2] +
                                          (uint)param_1[3]) - (uint)param_1[4]) - (uint)param_1[5]) -
                                       (uint)param_1[6]) - (uint)param_1[7]) + (uint)param_1[8] +
                                     (uint)param_1[9]) - (uint)param_1[10]) - (uint)param_1[0xb]) -
                                  (uint)param_1[0xc]) + (uint)param_1[0xd]) - (uint)param_1[0xe]) -
                               (uint)param_1[0xf]) + (uint)param_1[0x10]) - (uint)param_1[0x11]) -
                            (uint)param_1[0x12]) - (uint)param_1[0x13]) + (uint)param_1[0x14]) -
                         (uint)param_1[0x15]) - (uint)param_1[0x16]) + (uint)param_1[0x17] +
                       (uint)param_1[0x18]) - (uint)param_1[0x19]) - (uint)param_1[0x1a]) +
                    (uint)param_1[0x1b]) - (uint)param_1[0x1c]) - (uint)param_1[0x1d]) -
                 (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
              (uint)param_1[0x21]) - (uint)param_1[0x22]) + (uint)param_1[0x23] + (uint)param_1[0x24] +
            (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27] + (uint)param_1[0x28] +
           (uint)param_1[0x29];
      param_2[0x1f] =
           (((((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1]) - (uint)param_1[2]) +
                                       (uint)param_1[3] + (uint)param_1[4]) - (uint)param_1[5]) -
                                    (uint)param_1[6]) + (uint)param_1[7] + (uint)param_1[8] +
                                    (uint)param_1[9] + (uint)param_1[10] + (uint)param_1[0xb] +
                                   (uint)param_1[0xc]) - (uint)param_1[0xd]) - (uint)param_1[0xe]) -
                                (uint)param_1[0xf]) + (uint)param_1[0x10] + (uint)param_1[0x11] +
                                (uint)param_1[0x12] + (uint)param_1[0x13]) - (uint)param_1[0x14]) +
                             (uint)param_1[0x15]) - (uint)param_1[0x16]) + (uint)param_1[0x17]) -
                          (uint)param_1[0x18]) - (uint)param_1[0x19]) + (uint)param_1[0x1a] +
                        (uint)param_1[0x1b]) - (uint)param_1[0x1c]) + (uint)param_1[0x1d]) -
                     (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) +
                  (uint)param_1[0x21]) - (uint)param_1[0x22]) + (uint)param_1[0x23]) -
               (uint)param_1[0x24]) + (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27])
           - (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x20] =
           ((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2] +
                                    (uint)param_1[3]) - (uint)param_1[4]) + (uint)param_1[5] +
                                   (uint)param_1[6] + (uint)param_1[7] + (uint)param_1[8]) -
                                 (uint)param_1[9]) + (uint)param_1[10] + (uint)param_1[0xb]) -
                               (uint)param_1[0xc]) + (uint)param_1[0xd] + (uint)param_1[0xe]) -
                             (uint)param_1[0xf]) + (uint)param_1[0x10]) - (uint)param_1[0x11]) +
                           (uint)param_1[0x12] + (uint)param_1[0x13] + (uint)param_1[0x14]) -
                         (uint)param_1[0x15]) - (uint)param_1[0x16]) + (uint)param_1[0x17]) -
                      (uint)param_1[0x18]) + (uint)param_1[0x19] + (uint)param_1[0x1a] +
                     (uint)param_1[0x1b]) - (uint)param_1[0x1c]) - (uint)param_1[0x1d]) -
                  (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
               (uint)param_1[0x21]) + (uint)param_1[0x22] + (uint)param_1[0x23] + (uint)param_1[0x24] +
              (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27]) - (uint)param_1[0x28])
           + (uint)param_1[0x29];
      param_2[0x21] =
           ((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) - (uint)param_1[2]) +
                                        (uint)param_1[3] + (uint)param_1[4] + (uint)param_1[5] +
                                       (uint)param_1[6]) - (uint)param_1[7]) - (uint)param_1[8]) +
                                     (uint)param_1[9] + (uint)param_1[10] + (uint)param_1[0xb]) -
                                   (uint)param_1[0xc]) - (uint)param_1[0xd]) + (uint)param_1[0xe] +
                                 (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11]) -
                              (uint)param_1[0x12]) + (uint)param_1[0x13]) - (uint)param_1[0x14]) +
                            (uint)param_1[0x15] + (uint)param_1[0x16] + (uint)param_1[0x17]) -
                          (uint)param_1[0x18]) - (uint)param_1[0x19]) + (uint)param_1[0x1a] +
                        (uint)param_1[0x1b]) - (uint)param_1[0x1c]) + (uint)param_1[0x1d]) -
                     (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
                  (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) +
               (uint)param_1[0x24]) - (uint)param_1[0x25]) + (uint)param_1[0x26]) - (uint)param_1[0x27])
           - (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x22] =
           (((((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1]) - (uint)param_1[2]) +
                                      (uint)param_1[3]) - (uint)param_1[4]) - (uint)param_1[5]) -
                                   (uint)param_1[6]) + (uint)param_1[7] + (uint)param_1[8] +
                                   (uint)param_1[9] + (uint)param_1[10] + (uint)param_1[0xb]) -
                                 (uint)param_1[0xc]) - (uint)param_1[0xd]) - (uint)param_1[0xe]) +
                              (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11]) -
                           (uint)param_1[0x12]) + (uint)param_1[0x13]) - (uint)param_1[0x14]) -
                        (uint)param_1[0x15]) + (uint)param_1[0x16] + (uint)param_1[0x17]) -
                      (uint)param_1[0x18]) - (uint)param_1[0x19]) + (uint)param_1[0x1a] +
                     (uint)param_1[0x1b] + (uint)param_1[0x1c] + (uint)param_1[0x1d]) -
                   (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
                (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) - (uint)param_1[0x24]
             ) + (uint)param_1[0x25] + (uint)param_1[0x26] + (uint)param_1[0x27]) - (uint)param_1[0x28])
           - (uint)param_1[0x29];
      param_2[0x23] =
           (((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) + (uint)param_1[2] +
                                    (uint)param_1[3] + (uint)param_1[4]) - (uint)param_1[5]) -
                                 (uint)param_1[6]) + (uint)param_1[7] + (uint)param_1[8]) -
                               (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb] +
                              (uint)param_1[0xc] + (uint)param_1[0xd]) - (uint)param_1[0xe]) -
                           (uint)param_1[0xf]) + (uint)param_1[0x10]) - (uint)param_1[0x11]) +
                         (uint)param_1[0x12] + (uint)param_1[0x13]) - (uint)param_1[0x14]) -
                      (uint)param_1[0x15]) - (uint)param_1[0x16]) + (uint)param_1[0x17] +
                    (uint)param_1[0x18]) - (uint)param_1[0x19]) - (uint)param_1[0x1a]) +
                  (uint)param_1[0x1b] + (uint)param_1[0x1c]) - (uint)param_1[0x1d]) -
               (uint)param_1[0x1e]) + (uint)param_1[0x1f] + (uint)param_1[0x20]) - (uint)param_1[0x21])
             + (uint)param_1[0x22] + (uint)param_1[0x23] + (uint)param_1[0x24] + (uint)param_1[0x25] +
             (uint)param_1[0x26] + (uint)param_1[0x27]) - (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x24] =
           ((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2]) -
                                  (uint)param_1[3]) - (uint)param_1[4]) - (uint)param_1[5]) -
                               (uint)param_1[6]) + (uint)param_1[7] + (uint)param_1[8] +
                              (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb] +
                            (uint)param_1[0xc]) - (uint)param_1[0xd]) + (uint)param_1[0xe] +
                           (uint)param_1[0xf] + (uint)param_1[0x10] + (uint)param_1[0x11] +
                           (uint)param_1[0x12] + (uint)param_1[0x13] + (uint)param_1[0x14] +
                          (uint)param_1[0x15]) - (uint)param_1[0x16]) - (uint)param_1[0x17]) +
                       (uint)param_1[0x18]) - (uint)param_1[0x19]) - (uint)param_1[0x1a]) -
                    (uint)param_1[0x1b]) - (uint)param_1[0x1c]) + (uint)param_1[0x1d] +
                   (uint)param_1[0x1e] + (uint)param_1[0x1f] + (uint)param_1[0x20]) -
                 (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) -
              (uint)param_1[0x24]) + (uint)param_1[0x25]) - (uint)param_1[0x26]) + (uint)param_1[0x27] +
           (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x25] =
           (((((((((((((((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) - (uint)param_1[2])
                                              + (uint)param_1[3]) - (uint)param_1[4]) + (uint)param_1[5]
                                            ) - (uint)param_1[6]) - (uint)param_1[7]) - (uint)param_1[8]
                                         ) - (uint)param_1[9]) + (uint)param_1[10]) - (uint)param_1[0xb]
                                      ) - (uint)param_1[0xc]) - (uint)param_1[0xd]) - (uint)param_1[0xe]
                                   ) - (uint)param_1[0xf]) - (uint)param_1[0x10]) + (uint)param_1[0x11]
                                + (uint)param_1[0x12]) - (uint)param_1[0x13]) - (uint)param_1[0x14]) -
                             (uint)param_1[0x15]) + (uint)param_1[0x16]) - (uint)param_1[0x17]) +
                          (uint)param_1[0x18]) - (uint)param_1[0x19]) - (uint)param_1[0x1a]) +
                       (uint)param_1[0x1b]) - (uint)param_1[0x1c]) - (uint)param_1[0x1d]) +
                     (uint)param_1[0x1e] + (uint)param_1[0x1f]) - (uint)param_1[0x20]) +
                  (uint)param_1[0x21]) - (uint)param_1[0x22]) + (uint)param_1[0x23]) -
               (uint)param_1[0x24]) - (uint)param_1[0x25]) + (uint)param_1[0x26]) - (uint)param_1[0x27])
           - (uint)param_1[0x28]) - (uint)param_1[0x29];
      param_2[0x26] =
           (((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2] +
                                    (uint)param_1[3]) - (uint)param_1[4]) + (uint)param_1[5] +
                                   (uint)param_1[6] + (uint)param_1[7]) - (uint)param_1[8]) -
                                (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb] +
                               (uint)param_1[0xc] + (uint)param_1[0xd]) - (uint)param_1[0xe]) -
                            (uint)param_1[0xf]) - (uint)param_1[0x10]) - (uint)param_1[0x11]) -
                         (uint)param_1[0x12]) - (uint)param_1[0x13]) + (uint)param_1[0x14] +
                       (uint)param_1[0x15]) - (uint)param_1[0x16]) + (uint)param_1[0x17] +
                      (uint)param_1[0x18] + (uint)param_1[0x19] + (uint)param_1[0x1a] +
                     (uint)param_1[0x1b]) - (uint)param_1[0x1c]) - (uint)param_1[0x1d]) +
                   (uint)param_1[0x1e] + (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
                (uint)param_1[0x21]) + (uint)param_1[0x22]) - (uint)param_1[0x23]) - (uint)param_1[0x24]
             ) - (uint)param_1[0x25]) + (uint)param_1[0x26] + (uint)param_1[0x27] + (uint)param_1[0x28])
           - (uint)param_1[0x29];
      param_2[0x27] =
           ((((((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) - (uint)param_1[2]) -
                                 (uint)param_1[3]) - (uint)param_1[4]) + (uint)param_1[5]) -
                              (uint)param_1[6]) - (uint)param_1[7]) - (uint)param_1[8]) +
                           (uint)param_1[9]) - (uint)param_1[10]) + (uint)param_1[0xb]) -
                        (uint)param_1[0xc]) + (uint)param_1[0xd] + (uint)param_1[0xe]) -
                      (uint)param_1[0xf]) - (uint)param_1[0x10]) - (uint)param_1[0x11]) +
                    (uint)param_1[0x12] + (uint)param_1[0x13] + (uint)param_1[0x14] +
                    (uint)param_1[0x15] + (uint)param_1[0x16]) - (uint)param_1[0x17]) +
                  (uint)param_1[0x18] + (uint)param_1[0x19] + (uint)param_1[0x1a] + (uint)param_1[0x1b]
                 + (uint)param_1[0x1c]) - (uint)param_1[0x1d]) + (uint)param_1[0x1e] +
                (uint)param_1[0x1f] + (uint)param_1[0x20] + (uint)param_1[0x21] + (uint)param_1[0x22]) -
              (uint)param_1[0x23]) - (uint)param_1[0x24]) + (uint)param_1[0x25] + (uint)param_1[0x26] +
            (uint)param_1[0x27]) - (uint)param_1[0x28]) + (uint)param_1[0x29];
      param_2[0x28] =
           (((((((((((((((((((((((uint)*param_1 - (uint)param_1[1]) - (uint)param_1[2]) -
                              (uint)param_1[3]) + (uint)param_1[4] + (uint)param_1[5] + (uint)param_1[6]
                             ) - (uint)param_1[7]) + (uint)param_1[8] + (uint)param_1[9]) -
                          (uint)param_1[10]) + (uint)param_1[0xb]) - (uint)param_1[0xc]) -
                       (uint)param_1[0xd]) - (uint)param_1[0xe]) + (uint)param_1[0xf] +
                      (uint)param_1[0x10] + (uint)param_1[0x11] + (uint)param_1[0x12] +
                      (uint)param_1[0x13] + (uint)param_1[0x14] + (uint)param_1[0x15] +
                     (uint)param_1[0x16]) - (uint)param_1[0x17]) + (uint)param_1[0x18] +
                   (uint)param_1[0x19]) - (uint)param_1[0x1a]) + (uint)param_1[0x1b] +
                 (uint)param_1[0x1c]) - (uint)param_1[0x1d]) + (uint)param_1[0x1e] + (uint)param_1[0x1f]
               + (uint)param_1[0x20]) - (uint)param_1[0x21]) - (uint)param_1[0x22]) +
             (uint)param_1[0x23] + (uint)param_1[0x24]) - (uint)param_1[0x25]) + (uint)param_1[0x26] +
           (uint)param_1[0x27] + (uint)param_1[0x28] + (uint)param_1[0x29];
      param_2[0x29] =
           ((((((((((((((((((((((((((((((((uint)*param_1 + (uint)param_1[1] + (uint)param_1[2] +
                                          (uint)param_1[3] + (uint)param_1[4] + (uint)param_1[5] +
                                         (uint)param_1[6]) - (uint)param_1[7]) - (uint)param_1[8]) -
                                      (uint)param_1[9]) + (uint)param_1[10] + (uint)param_1[0xb]) -
                                    (uint)param_1[0xc]) + (uint)param_1[0xd]) - (uint)param_1[0xe]) -
                                 (uint)param_1[0xf]) - (uint)param_1[0x10]) - (uint)param_1[0x11]) -
                              (uint)param_1[0x12]) - (uint)param_1[0x13]) + (uint)param_1[0x14]) -
                           (uint)param_1[0x15]) + (uint)param_1[0x16]) - (uint)param_1[0x17]) -
                        (uint)param_1[0x18]) + (uint)param_1[0x19] + (uint)param_1[0x1a] +
                        (uint)param_1[0x1b] + (uint)param_1[0x1c]) - (uint)param_1[0x1d]) -
                     (uint)param_1[0x1e]) - (uint)param_1[0x1f]) - (uint)param_1[0x20]) -
                  (uint)param_1[0x21]) - (uint)param_1[0x22]) - (uint)param_1[0x23]) -
               (uint)param_1[0x24]) - (uint)param_1[0x25]) - (uint)param_1[0x26]) - (uint)param_1[0x27])
           - (uint)param_1[0x28]) + (uint)param_1[0x29];
      return;
    }
    
  • 一个简单异或,再用z3解

  • 注意原始密文应该改成大端序排列

  • from z3 import *
    import ctypes
    from pwn import *
    import struct
    data=[0xFF, 0xFF, 0xFF, 0x94, 0xFF, 0xFF, 0xFF, 0x38, 0x00, 0x00, 0x01, 0x26, 0xFF, 0xFF, 0xFF, 0x28, 0xFF, 0xFF, 0xFC, 0x10, 0x00, 0x00, 0x02, 0x94, 0xFF, 0xFF, 0xFC, 0x9E, 0x00, 0x00, 0x06, 0xEA, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0xFD, 0xF6, 0xFF, 0xFF, 0xFA, 0x82, 0xFF, 0xFF, 0xFC, 0xD0, 0x00, 0x00, 0x01, 0x82, 0x00, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0x4E, 0x00, 0x00, 0x02, 0xB2, 0xFF, 0xFF, 0xF8, 0xD8, 0x00, 0x00, 0x01, 0x74, 0xFF, 0xFF, 0xFA, 0xA6, 0xFF, 0xFF, 0xF9, 0xD4, 0x00, 0x00, 0x01, 0xC2, 0xFF, 0xFF, 0xF9, 0x7C, 0x00, 0x00, 0x03, 0x5A, 0x00, 0x00, 0x01, 0x46, 0xFF, 0xFF, 0xFF, 0x3C, 0xFF, 0xFF, 0xFA, 0x14, 0x00, 0x00, 0x01, 0xCE, 0x00, 0x00, 0x07, 0xDC, 0xFF, 0xFF, 0xFD, 0x48, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x08, 0x5E, 0xFF, 0xFF, 0xFD, 0xB0, 0xFF, 0xFF, 0xFF, 0xBC, 0x00, 0x00, 0x03, 0x6E, 0xFF, 0xFF, 0xFF, 0x4E, 0xFF, 0xFF, 0xF8, 0x36, 0x00, 0x00, 0x05, 0xC0, 0x00, 0x00, 0x06, 0xAE, 0x00, 0x00, 0x06, 0x94, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00]
    ee=[]
    e=[]
    # 将列表转换为字节流
    byte_data = bytes(data)
    # 按照大端序解析字节流为32位整数
    for i in range(0, len(byte_data), 4):
        value = struct.unpack('>I', byte_data[i:i+4])[0]
        ee.append(hex(value))
    print(ee)
    for i in range(len(ee)):
        e.append(int(ee[i],16))
    print(e)
    #e = [0xFFFFFF94,0xFFFFFF38,0x00000126,0xFFFFFF28,0xFFFFFC10,0x00000294,0xFFFFFC9E,0x000006EA,0x000000DC,0x00000006,0xFFFFFF0C,0xFFFFFDF6,0xFFFFFA82,0xFFFFFCD0,0x00000182,0x000003DE,0x0000014E,0x000002B2,0xFFFFF8D8,0x00000174,0xFFFFFAA6,0xFFFFF9D4,0x000001C2,0xFFFFF97C,0x0000035A,0x00000146,0xFFFFFF3C,0xFFFFFA14,0x000001CE,0x000007DC,0xFFFFFD48,0x00000098,0x0000085E,0xFFFFFDB0,0xFFFFFFBC,0x0000036E,0xFFFFFF4E,0xFFFFF836,0x000005C0,0x000006AE,0x00000694,0x00000022]
    en = map(lambda x: ctypes.c_int32(x).value,e)
    enc = [IntVal(i) for i in en]
    c = [Int('c%d' % i) for i in range(42)]
    flag = []
    s = Solver()
    for v in c :
        s.add(v >= 0x0)
        s.add(v <= 0xff)
    
    s.add(enc[0]==(((((((((((((((((((((((((((((((c[0]+c[1]+c[2])-c[3])+c[4])-c[5])-c[6])-c[7])-c[8])+c[9]+c[10])-c[0xb])+c[0xc])-c[0xd])-c[0xe])+c[0xf])-c[0x10])-c[0x11])+c[0x12]+c[0x13])-c[0x14])+c[0x15]+c[0x16]+c[0x17]+c[0x18])-c[0x19])+c[0x1a])-c[0x1b])+c[0x1c]+c[0x1d])-c[0x1e])-c[0x1f])+c[0x20])-c[0x21])+c[0x22]+c[0x23])-c[0x24])-c[0x25])+c[0x26])-c[0x27])+c[0x28]+c[0x29])
    
    s.add(enc[1]==((((((((((((((((((((((((((((((((((c[0]-c[1])+c[2])-c[3])-c[4])+c[5])-c[6])-c[7])-c[8])-c[9])+c[10])-c[0xb])+c[0xc])-c[0xd])-c[0xe])+c[0xf])-c[0x10])-c[0x11])+c[0x12])-c[0x13])+c[0x14]+c[0x15])-c[0x16])-c[0x17])-c[0x18])+c[0x19])-c[0x1a])+c[0x1b])-c[0x1c])-c[0x1d])+c[0x1e]+c[0x1f]+c[0x20]+c[0x21]+c[0x22]+c[0x23])-c[0x24])-c[0x25])-c[0x26])-c[0x27])-c[0x28])+c[0x29])
    
    s.add(enc[2]==(((((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3])-c[4])+c[5])-c[6])-c[7])+c[8])-c[9])-c[10])-c[0xb])-c[0xc])-c[0xd])+c[0xe])-c[0xf])-c[0x10])+c[0x11]+c[0x12]+c[0x13]+c[0x14]+c[0x15])-c[0x16])+c[0x17]+c[0x18]+c[0x19]+c[0x1a])-c[0x1b])+c[0x1c])-c[0x1d])+c[0x1e])-c[0x1f])+c[0x20]+c[0x21])-c[0x22])-c[0x23])+c[0x24]+c[0x25]+c[0x26])-c[0x27])+c[0x28])-c[0x29])
    
    s.add(enc[3]==(((((((((((((((((((((((((((((((c[0]-c[1])-c[2])-c[3])-c[4])-c[5])+c[6]+c[7])-c[8])-c[9])-c[10])-c[0xb])+c[0xc])-c[0xd])+c[0xe])-c[0xf])+c[0x10])-c[0x11])+c[0x12]+c[0x13]+c[0x14])-c[0x15])+c[0x16]+c[0x17]+c[0x18])-c[0x19])-c[0x1a])+c[0x1b])-c[0x1c])+c[0x1d]+c[0x1e])-c[0x1f])-c[0x20])-c[0x21])+c[0x22])-c[0x23])+c[0x24]+c[0x25]+c[0x26])-c[0x27])+c[0x28]+c[0x29])
    
    s.add(enc[4]==(((((((((((((((((((((((((((((((((c[0]-c[1])-c[2])+c[3])-c[4])-c[5])+c[6]+c[7]+c[8]+c[9])-c[10])+c[0xb]+c[0xc])-c[0xd])+c[0xe])-c[0xf])+c[0x10]+c[0x11])-c[0x12])+c[0x13])-c[0x14])+c[0x15])-c[0x16])-c[0x17])-c[0x18])+c[0x19])-c[0x1a])-c[0x1b])-c[0x1c])+c[0x1d]+c[0x1e]+c[0x1f])-c[0x20])+c[0x21])-c[0x22])-c[0x23])+c[0x24])-c[0x25])+c[0x26])-c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[5]==((((((((((((((((((((((((((((c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8])-c[9])-c[10])-c[0xb])-c[0xc])-c[0xd])-c[0xe])+c[0xf])-c[0x10])+c[0x11])-c[0x12])+c[0x13]+c[0x14])-c[0x15])+c[0x16])-c[0x17])+c[0x18])-c[0x19])+c[0x1a]+c[0x1b])-c[0x1c])+c[0x1d])-c[0x1e])+c[0x1f]+c[0x20]+c[0x21])-c[0x22])-c[0x23])-c[0x24])+c[0x25])-c[0x26])-c[0x27])+c[0x28]+c[0x29])
    
    s.add(enc[6]==(((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3]+c[4])-c[5])+c[6]+c[7]+c[8]+c[9])-c[10])+c[0xb]+c[0xc])-c[0xd])+c[0xe]+c[0xf]+c[0x10]+c[0x11])-c[0x12])-c[0x13])-c[0x14])-c[0x15])-c[0x16])-c[0x17])+c[0x18]+c[0x19])-c[0x1a])+c[0x1b]+c[0x1c]+c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])-c[0x21])-c[0x22])-c[0x23])+c[0x24]+c[0x25])-c[0x26])-c[0x27])+c[0x28])-c[0x29])
    
    s.add(enc[7]==((((((((((((((((((((((((((((((c[0]+c[1])-c[2])-c[3])-c[4])+c[5]+c[6])-c[7])+c[8]+c[9])-c[10])+c[0xb])-c[0xc])+c[0xd])-c[0xe])+c[0xf])-c[0x10])+c[0x11])-c[0x12])-c[0x13])+c[0x14])-c[0x15])+c[0x16])-c[0x17])-c[0x18])+c[0x19])-c[0x1a])+c[0x1b]+c[0x1c]+c[0x1d]+c[0x1e]+c[0x1f]+c[0x20])-c[0x21])+c[0x22])-c[0x23])+c[0x24]+c[0x25]+c[0x26]+c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[8]==(((((((((((((((((((((((((((((c[0]-c[1])-c[2])+c[3]+c[4])-c[5])+c[6]+c[7]+c[8]+c[9]+c[10])-c[0xb])-c[0xc])+c[0xd])-c[0xe])+c[0xf]+c[0x10]+c[0x11]+c[0x12])-c[0x13])+c[0x14]+c[0x15])-c[0x16])-c[0x17])+c[0x18]+c[0x19]+c[0x1a])-c[0x1b])+c[0x1c])-c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])-c[0x21])+c[0x22])-c[0x23])-c[0x24])+c[0x25])-c[0x26])-c[0x27])+c[0x28])-c[0x29])
    
    s.add(enc[9]==(((((((((((((((((((((((((((((c[0]+c[1]+c[2])-c[3])+c[4]+c[5]+c[6])-c[7])-c[8])-c[9])-c[10])+c[0xb]+c[0xc]+c[0xd])-c[0xe])+c[0xf]+c[0x10])-c[0x11])-c[0x12])+c[0x13]+c[0x14])-c[0x15])-c[0x16])-c[0x17])+c[0x18])-c[0x19])-c[0x1a])-c[0x1b])+c[0x1c]+c[0x1d]+c[0x1e])-c[0x1f])+c[0x20]+c[0x21])-c[0x22])-c[0x23])-c[0x24])-c[0x25])+c[0x26])-c[0x27])+c[0x28]+c[0x29])
    
    s.add(enc[10]==((((((((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3])-c[4])-c[5])+c[6]+c[7])-c[8])-c[9])-c[10])-c[0xb])+c[0xc]+c[0xd]+c[0xe])-c[0xf])+c[0x10])-c[0x11])+c[0x12]+c[0x13]+c[0x14])-c[0x15])+c[0x16])-c[0x17])-c[0x18])-c[0x19])+c[0x1a])-c[0x1b])-c[0x1c])+c[0x1d])-c[0x1e])+c[0x1f]+c[0x20])-c[0x21])-c[0x22])+c[0x23])-c[0x24])-c[0x25])+c[0x26])-c[0x27])+c[0x28]+c[0x29])
    
    s.add(enc[0xb]==((((((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3]+c[4])-c[5])+c[6]+c[7])-c[8])+c[9]+c[10])-c[0xb])-c[0xc])-c[0xd])-c[0xe])+c[0xf])-c[0x10])-c[0x11])-c[0x12])+c[0x13]+c[0x14])-c[0x15])+c[0x16])-c[0x17])+c[0x18]+c[0x19]+c[0x1a]+c[0x1b])-c[0x1c])+c[0x1d]+c[0x1e])-c[0x1f])-c[0x20])-c[0x21])-c[0x22])-c[0x23])+c[0x24]+c[0x25])-c[0x26])-c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[0xc]==(((((((((((((((((((((((((((((((((((((c[0]-c[1])-c[2])-c[3])+c[4])-c[5])-c[6])+c[7]+c[8])-c[9])+c[10])-c[0xb])-c[0xc])-c[0xd])+c[0xe])-c[0xf])+c[0x10])-c[0x11])+c[0x12])-c[0x13])-c[0x14])-c[0x15])-c[0x16])+c[0x17])-c[0x18])+c[0x19])-c[0x1a])+c[0x1b])-c[0x1c])+c[0x1d])-c[0x1e])-c[0x1f])+c[0x20]+c[0x21]+c[0x22])-c[0x23])-c[0x24])-c[0x25])-c[0x26])+c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[0xd]==(((((((((((((((((((((((((((((((((c[0]-c[1])+c[2])-c[3])+c[4])-c[5])+c[6])-c[7])+c[8])-c[9])+c[10])-c[0xb])+c[0xc]+c[0xd]+c[0xe]+c[0xf])-c[0x10])-c[0x11])-c[0x12])+c[0x13]+c[0x14]+c[0x15])-c[0x16])-c[0x17])+c[0x18]+c[0x19])-c[0x1a])-c[0x1b])+c[0x1c]+c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])+c[0x21])-c[0x22])-c[0x23])+c[0x24])-c[0x25])-c[0x26])-c[0x27])+c[0x28])-c[0x29])
    
    s.add(enc[0xe]==(((((((((((((((((((((((((c[0]+c[1]+c[2])-c[3])-c[4])-c[5])+c[6])-c[7])+c[8]+c[9]+c[10])-c[0xb])+c[0xc])-c[0xd])-c[0xe])+c[0xf]+c[0x10]+c[0x11])-c[0x12])-c[0x13])-c[0x14])-c[0x15])+c[0x16]+c[0x17]+c[0x18])-c[0x19])+c[0x1a]+c[0x1b]+c[0x1c])-c[0x1d])-c[0x1e])-c[0x1f])+c[0x20]+c[0x21]+c[0x22]+c[0x23]+c[0x24]+c[0x25]+c[0x26])-c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[0xf]==((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3]+c[4]+c[5])-c[6])+c[7])-c[8])-c[9])-c[10])+c[0xb]+c[0xc]+c[0xd])-c[0xe])-c[0xf])-c[0x10])+c[0x11])-c[0x12])-c[0x13])-c[0x14])-c[0x15])+c[0x16]+c[0x17]+c[0x18]+c[0x19]+c[0x1a]+c[0x1b])-c[0x1c])-c[0x1d])-c[0x1e])-c[0x1f])+c[0x20])-c[0x21])+c[0x22]+c[0x23]+c[0x24]+c[0x25])-c[0x26])+c[0x27]+c[0x28])-c[0x29])
    
    s.add(enc[0x10]==((((((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3])-c[4])-c[5])+c[6]+c[7]+c[8]+c[9]+c[10])-c[0xb])+c[0xc])-c[0xd])+c[0xe]+c[0xf]+c[0x10])-c[0x11])+c[0x12])-c[0x13])+c[0x14])-c[0x15])-c[0x16])-c[0x17])-c[0x18])-c[0x19])+c[0x1a]+c[0x1b]+c[0x1c]+c[0x1d])-c[0x1e])-c[0x1f])+c[0x20])-c[0x21])-c[0x22])+c[0x23])-c[0x24])+c[0x25])-c[0x26])+c[0x27])-c[0x28])+c[0x29])
    
    s.add(enc[0x11]==((((((((((((((((((((((((((((((((c[0]+c[1]+c[2]+c[3]+c[4])-c[5])+c[6]+c[7]+c[8])-c[9])-c[10])+c[0xb])-c[0xc])+c[0xd]+c[0xe]+c[0xf])-c[0x10])+c[0x11])-c[0x12])-c[0x13])+c[0x14])-c[0x15])+c[0x16])-c[0x17])-c[0x18])+c[0x19])-c[0x1a])+c[0x1b])-c[0x1c])+c[0x1d])-c[0x1e])-c[0x1f])+c[0x20])-c[0x21])-c[0x22])+c[0x23])-c[0x24])+c[0x25])-c[0x26])+c[0x27]+c[0x28])-c[0x29])
    
    s.add(enc[0x12]==((((((((((((((((((((((((((((((((((c[0]-c[1])-c[2])-c[3])+c[4]+c[5])-c[6])+c[7])-c[8])+c[9]+c[10])-c[0xb])-c[0xc])-c[0xd])+c[0xe])-c[0xf])-c[0x10])+c[0x11]+c[0x12]+c[0x13])-c[0x14])-c[0x15])-c[0x16])-c[0x17])-c[0x18])-c[0x19])-c[0x1a])-c[0x1b])+c[0x1c]+c[0x1d]+c[0x1e])-c[0x1f])-c[0x20])-c[0x21])+c[0x22])-c[0x23])-c[0x24])-c[0x25])-c[0x26])-c[0x27])-c[0x28])+c[0x29])
    
    s.add(enc[0x13]==((((((((((((((((((((((((((c[0]+c[1]+c[2]+c[3])-c[4])-c[5])+c[6])-c[7])-c[8])-c[9])-c[10])-c[0xb])-c[0xc])-c[0xd])+c[0xe]+c[0xf]+c[0x10])-c[0x11])+c[0x12]+c[0x13]+c[0x14]+c[0x15])-c[0x16])+c[0x17]+c[0x18])-c[0x19])+c[0x1a]+c[0x1b])-c[0x1c])+c[0x1d]+c[0x1e]+c[0x1f]+c[0x20]+c[0x21])-c[0x22])+c[0x23])-c[0x24])-c[0x25])-c[0x26])+c[0x27]+c[0x28])-c[0x29])
    
    s.add(enc[0x14]==((((((((((((((((((((((((((((((((((((c[0]+c[1])-c[2])-c[3])-c[4])+c[5])-c[6])+c[7])-c[8])-c[9])+c[10]+c[0xb])-c[0xc])-c[0xd])+c[0xe])-c[0xf])-c[0x10])+c[0x11])-c[0x12])-c[0x13])+c[0x14]+c[0x15])-c[0x16])+c[0x17]+c[0x18])-c[0x19])-c[0x1a])-c[0x1b])-c[0x1c])-c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])+c[0x21])-c[0x22])+c[0x23]+c[0x24])-c[0x25])+c[0x26])-c[0x27])+c[0x28])-c[0x29])
    
    s.add(enc[0x15]==(((((((((((((((((((((((((((((((((((c[0]-c[1])-c[2])-c[3])+c[4]+c[5]+c[6]+c[7])-c[8])-c[9])-c[10])-c[0xb])-c[0xc])-c[0xd])-c[0xe])-c[0xf])-c[0x10])+c[0x11])-c[0x12])-c[0x13])+c[0x14])-c[0x15])+c[0x16]+c[0x17]+c[0x18])-c[0x19])-c[0x1a])+c[0x1b])-c[0x1c])-c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])-c[0x21])-c[0x22])-c[0x23])-c[0x24])+c[0x25])-c[0x26])-c[0x27])-c[0x28])+c[0x29])
    
    s.add(enc[0x16]==(((((((((((((((((((((((((((c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7])-c[8])+c[9])-c[10])+c[0xb])-c[0xc])+c[0xd]+c[0xe]+c[0xf])-c[0x10])+c[0x11]+c[0x12])-c[0x13])-c[0x14])+c[0x15]+c[0x16])-c[0x17])+c[0x18])-c[0x19])-c[0x1a])+c[0x1b])-c[0x1c])+c[0x1d]+c[0x1e]+c[0x1f])-c[0x20])+c[0x21])-c[0x22])-c[0x23])-c[0x24])-c[0x25])+c[0x26])-c[0x27])+c[0x28]+c[0x29])
    
    s.add(enc[0x17]==(((((((((((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3])-c[4])-c[5])-c[6])-c[7])+c[8])-c[9])-c[10])+c[0xb]+c[0xc])-c[0xd])-c[0xe])+c[0xf])-c[0x10])-c[0x11])+c[0x12]+c[0x13])-c[0x14])-c[0x15])+c[0x16])-c[0x17])+c[0x18]+c[0x19])-c[0x1a])+c[0x1b])-c[0x1c])+c[0x1d]+c[0x1e])-c[0x1f])-c[0x20])-c[0x21])-c[0x22])-c[0x23])-c[0x24])-c[0x25])+c[0x26])-c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[0x18]==(((((((((((((((((((((((((c[0]+c[1])-c[2])+c[3]+c[4])-c[5])+c[6]+c[7])-c[8])+c[9]+c[10])-c[0xb])-c[0xc])-c[0xd])-c[0xe])+c[0xf]+c[0x10]+c[0x11])-c[0x12])+c[0x13]+c[0x14]+c[0x15]+c[0x16]+c[0x17]+c[0x18]+c[0x19])-c[0x1a])-c[0x1b])-c[0x1c])+c[0x1d]+c[0x1e])-c[0x1f])+c[0x20]+c[0x21]+c[0x22])-c[0x23])-c[0x24])-c[0x25])-c[0x26])+c[0x27]+c[0x28])-c[0x29])
    
    s.add(enc[0x19]==((((((((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3])-c[4])+c[5]+c[6])-c[7])+c[8]+c[9]+c[10])-c[0xb])-c[0xc])+c[0xd])-c[0xe])+c[0xf])-c[0x10])+c[0x11]+c[0x12]+c[0x13])-c[0x14])-c[0x15])+c[0x16]+c[0x17])-c[0x18])-c[0x19])+c[0x1a])-c[0x1b])+c[0x1c])-c[0x1d])+c[0x1e])-c[0x1f])-c[0x20])+c[0x21])-c[0x22])-c[0x23])-c[0x24])-c[0x25])+c[0x26])-c[0x27])+c[0x28]+c[0x29])
    
    s.add(enc[0x1a]==(((((((((((((((((((((((((((((c[0]+c[1]+c[2]+c[3]+c[4])-c[5])-c[6])+c[7])-c[8])-c[9])-c[10])-c[0xb])+c[0xc])-c[0xd])+c[0xe])-c[0xf])+c[0x10])-c[0x11])+c[0x12])-c[0x13])-c[0x14])+c[0x15]+c[0x16]+c[0x17]+c[0x18]+c[0x19])-c[0x1a])-c[0x1b])-c[0x1c])-c[0x1d])+c[0x1e]+c[0x1f])-c[0x20])-c[0x21])-c[0x22])+c[0x23]+c[0x24])-c[0x25])-c[0x26])+c[0x27]+c[0x28]+c[0x29])
    
    s.add(enc[0x1b]==(((((((((((((((((((((((((((((((c[0]-c[1])+c[2])-c[3])+c[4])-c[5])-c[6])-c[7])-c[8])-c[9])-c[10])-c[0xb])+c[0xc]+c[0xd])-c[0xe])+c[0xf]+c[0x10]+c[0x11]+c[0x12]+c[0x13])-c[0x14])-c[0x15])-c[0x16])-c[0x17])+c[0x18]+c[0x19]+c[0x1a])-c[0x1b])+c[0x1c]+c[0x1d]+c[0x1e])-c[0x1f])-c[0x20])-c[0x21])-c[0x22])+c[0x23])-c[0x24])-c[0x25])-c[0x26])-c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[0x1c]==((((((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3]+c[4])-c[5])+c[6]+c[7])-c[8])-c[9])+c[10]+c[0xb])-c[0xc])+c[0xd])-c[0xe])+c[0xf])-c[0x10])+c[0x11]+c[0x12]+c[0x13])-c[0x14])-c[0x15])+c[0x16])-c[0x17])-c[0x18])-c[0x19])-c[0x1a])+c[0x1b])-c[0x1c])-c[0x1d])-c[0x1e])+c[0x1f])-c[0x20])-c[0x21])+c[0x22]+c[0x23]+c[0x24])-c[0x25])-c[0x26])+c[0x27]+c[0x28]+c[0x29])
    
    s.add(enc[0x1d]==((((((((((((((((((((((((((c[0]+c[1])-c[2])-c[3])-c[4])+c[5]+c[6]+c[7])-c[8])+c[9])-c[10])-c[0xb])+c[0xc])-c[0xd])+c[0xe]+c[0xf])-c[0x10])+c[0x11]+c[0x12])-c[0x13])+c[0x14]+c[0x15]+c[0x16]+c[0x17])-c[0x18])+c[0x19]+c[0x1a])-c[0x1b])+c[0x1c]+c[0x1d]+c[0x1e]+c[0x1f]+c[0x20])-c[0x21])-c[0x22])+c[0x23]+c[0x24])-c[0x25])+c[0x26]+c[0x27])-c[0x28])+c[0x29])
    
    s.add(enc[0x1e]==((((((((((((((((((((((((((((((((c[0]+c[1]+c[2]+c[3])-c[4])-c[5])-c[6])-c[7])+c[8]+c[9])-c[10])-c[0xb])-c[0xc])+c[0xd])-c[0xe])-c[0xf])+c[0x10])-c[0x11])-c[0x12])-c[0x13])+c[0x14])-c[0x15])-c[0x16])+c[0x17]+c[0x18])-c[0x19])-c[0x1a])+c[0x1b])-c[0x1c])-c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])-c[0x21])-c[0x22])+c[0x23]+c[0x24]+c[0x25])-c[0x26])+c[0x27]+c[0x28]+c[0x29])
    
    s.add(enc[0x1f]==((((((((((((((((((((((((((((((c[0]+c[1])-c[2])+c[3]+c[4])-c[5])-c[6])+c[7]+c[8]+c[9]+c[10]+c[0xb]+c[0xc])-c[0xd])-c[0xe])-c[0xf])+c[0x10]+c[0x11]+c[0x12]+c[0x13])-c[0x14])+c[0x15])-c[0x16])+c[0x17])-c[0x18])-c[0x19])+c[0x1a]+c[0x1b])-c[0x1c])+c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])+c[0x21])-c[0x22])+c[0x23])-c[0x24])+c[0x25])-c[0x26])+c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[0x20]==(((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3])-c[4])+c[5]+c[6]+c[7]+c[8])-c[9])+c[10]+c[0xb])-c[0xc])+c[0xd]+c[0xe])-c[0xf])+c[0x10])-c[0x11])+c[0x12]+c[0x13]+c[0x14])-c[0x15])-c[0x16])+c[0x17])-c[0x18])+c[0x19]+c[0x1a]+c[0x1b])-c[0x1c])-c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])-c[0x21])+c[0x22]+c[0x23]+c[0x24]+c[0x25])-c[0x26])+c[0x27])-c[0x28])+c[0x29])
    
    s.add(enc[0x21]==(((((((((((((((((((((((((((((((c[0]-c[1])-c[2])+c[3]+c[4]+c[5]+c[6])-c[7])-c[8])+c[9]+c[10]+c[0xb])-c[0xc])-c[0xd])+c[0xe]+c[0xf])-c[0x10])+c[0x11])-c[0x12])+c[0x13])-c[0x14])+c[0x15]+c[0x16]+c[0x17])-c[0x18])-c[0x19])+c[0x1a]+c[0x1b])-c[0x1c])+c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])-c[0x21])-c[0x22])-c[0x23])+c[0x24])-c[0x25])+c[0x26])-c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[0x22]==((((((((((((((((((((((((((((((c[0]+c[1])-c[2])+c[3])-c[4])-c[5])-c[6])+c[7]+c[8]+c[9]+c[10]+c[0xb])-c[0xc])-c[0xd])-c[0xe])+c[0xf])-c[0x10])+c[0x11])-c[0x12])+c[0x13])-c[0x14])-c[0x15])+c[0x16]+c[0x17])-c[0x18])-c[0x19])+c[0x1a]+c[0x1b]+c[0x1c]+c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])-c[0x21])-c[0x22])-c[0x23])-c[0x24])+c[0x25]+c[0x26]+c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[0x23]==((((((((((((((((((((((((((c[0]-c[1])+c[2]+c[3]+c[4])-c[5])-c[6])+c[7]+c[8])-c[9])-c[10])+c[0xb]+c[0xc]+c[0xd])-c[0xe])-c[0xf])+c[0x10])-c[0x11])+c[0x12]+c[0x13])-c[0x14])-c[0x15])-c[0x16])+c[0x17]+c[0x18])-c[0x19])-c[0x1a])+c[0x1b]+c[0x1c])-c[0x1d])-c[0x1e])+c[0x1f]+c[0x20])-c[0x21])+c[0x22]+c[0x23]+c[0x24]+c[0x25]+c[0x26]+c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[0x24]==(((((((((((((((((((((((((c[0]+c[1]+c[2])-c[3])-c[4])-c[5])-c[6])+c[7]+c[8]+c[9])-c[10])+c[0xb]+c[0xc])-c[0xd])+c[0xe]+c[0xf]+c[0x10]+c[0x11]+c[0x12]+c[0x13]+c[0x14]+c[0x15])-c[0x16])-c[0x17])+c[0x18])-c[0x19])-c[0x1a])-c[0x1b])-c[0x1c])+c[0x1d]+c[0x1e]+c[0x1f]+c[0x20])-c[0x21])-c[0x22])-c[0x23])-c[0x24])+c[0x25])-c[0x26])+c[0x27]+c[0x28])-c[0x29])
    
    s.add(enc[0x25]==((((((((((((((((((((((((((((((((((((((c[0]-c[1])-c[2])+c[3])-c[4])+c[5])-c[6])-c[7])-c[8])-c[9])+c[10])-c[0xb])-c[0xc])-c[0xd])-c[0xe])-c[0xf])-c[0x10])+c[0x11]+c[0x12])-c[0x13])-c[0x14])-c[0x15])+c[0x16])-c[0x17])+c[0x18])-c[0x19])-c[0x1a])+c[0x1b])-c[0x1c])-c[0x1d])+c[0x1e]+c[0x1f])-c[0x20])+c[0x21])-c[0x22])+c[0x23])-c[0x24])-c[0x25])+c[0x26])-c[0x27])-c[0x28])-c[0x29])
    
    s.add(enc[0x26]==((((((((((((((((((((((((((c[0]+c[1]+c[2]+c[3])-c[4])+c[5]+c[6]+c[7])-c[8])-c[9])-c[10])+c[0xb]+c[0xc]+c[0xd])-c[0xe])-c[0xf])-c[0x10])-c[0x11])-c[0x12])-c[0x13])+c[0x14]+c[0x15])-c[0x16])+c[0x17]+c[0x18]+c[0x19]+c[0x1a]+c[0x1b])-c[0x1c])-c[0x1d])+c[0x1e]+c[0x1f])-c[0x20])-c[0x21])+c[0x22])-c[0x23])-c[0x24])-c[0x25])+c[0x26]+c[0x27]+c[0x28])-c[0x29])
    
    s.add(enc[0x27]==(((((((((((((((((((((((((c[0]-c[1])-c[2])-c[3])-c[4])+c[5])-c[6])-c[7])-c[8])+c[9])-c[10])+c[0xb])-c[0xc])+c[0xd]+c[0xe])-c[0xf])-c[0x10])-c[0x11])+c[0x12]+c[0x13]+c[0x14]+c[0x15]+c[0x16])-c[0x17])+c[0x18]+c[0x19]+c[0x1a]+c[0x1b]+c[0x1c])-c[0x1d])+c[0x1e]+c[0x1f]+c[0x20]+c[0x21]+c[0x22])-c[0x23])-c[0x24])+c[0x25]+c[0x26]+c[0x27])-c[0x28])+c[0x29])
    
    s.add(enc[0x28]==((((((((((((((((((((((c[0]-c[1])-c[2])-c[3])+c[4]+c[5]+c[6])-c[7])+c[8]+c[9])-c[10])+c[0xb])-c[0xc])-c[0xd])-c[0xe])+c[0xf]+c[0x10]+c[0x11]+c[0x12]+c[0x13]+c[0x14]+c[0x15]+c[0x16])-c[0x17])+c[0x18]+c[0x19])-c[0x1a])+c[0x1b]+c[0x1c])-c[0x1d])+c[0x1e]+c[0x1f]+c[0x20])-c[0x21])-c[0x22])+c[0x23]+c[0x24])-c[0x25])+c[0x26]+c[0x27]+c[0x28]+c[0x29])
    
    s.add(enc[0x29]==(((((((((((((((((((((((((((((((c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6])-c[7])-c[8])-c[9])+c[10]+c[0xb])-c[0xc])+c[0xd])-c[0xe])-c[0xf])-c[0x10])-c[0x11])-c[0x12])-c[0x13])+c[0x14])-c[0x15])+c[0x16])-c[0x17])-c[0x18])+c[0x19]+c[0x1a]+c[0x1b]+c[0x1c])-c[0x1d])-c[0x1e])-c[0x1f])-c[0x20])-c[0x21])-c[0x22])-c[0x23])-c[0x24])-c[0x25])-c[0x26])-c[0x27])-c[0x28])+c[0x29])
    
    if s.check() == sat :
        r = s.model()
        for i in range(42) :
            flag.append(r[c[i]].as_long()^i)
    
        flag = ''.join(map(lambda x : chr(((x >> 3) | (x << 5)) & 0xff),flag))
        print(flag)
    
    
  • SUCTF{Un1c0rn_Engin3_Is@P0wer7ul_TO0ls!}