Function at 0x863ec0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xc8
mov dword [ebp - 0x28], ecx
nop
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x866b40
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
call fcn.00866ae0
mov dword [0xa6b414], 0x79dd2a1d
mov edx, dword [0xa6b3d4]
mov ecx, dword [0xa6b3cc]
mov esi, 0xffffb7da
sub esi, eax
mov dword [ebp - 0x40], esi
sub ecx, esi
add ecx, edx
call dword [0xa37360]
call ecx
mov ebx, eax
mov eax, dword [0xa6b3fc]
xor eax, ebx
cmp eax, 0x19ecfd76
mov esi, dword [0x9ea080]
jne 0x86408e
mov eax, esi
mov ecx, 0x9ea080
shl eax, cl
xor edx, edx
mov ecx, 0x9ea080
test cl, 0x20
cmovne eax, edx
mov ecx, 0x9ea080
shl eax, cl
mov ecx, 0x9ea080
test cl, 0x20
cmovne eax, edx
mov ecx, ebx
shl ecx, 0x1b
xor ecx, ebx
mov edi, ecx
xor edi, 0xde9680d4
mov edx, ebx
shl edx, 0x1f
xor edx, ebx
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x24]
xor edx, 0x49697f2b
add edx, edi
mov edi, 0x9ea080
sub edx, edi
add edx, esi
inc edx
not edi
mov esi, 0x9ea080
imul edx, esi
xor eax, edi
xor edi, esi
and edi, edx
mov edx, ebx
xor edx, 3
xor ecx, 0xfc
add ecx, edx
mov edx, 0x9ea080
and eax, edx
sub ecx, eax
add ecx, 3
imul ecx, eax
mov eax, 2
shl eax, cl
xor edi, edx
test cl, 0x20
mov edx, 0
cmovne eax, edx
lea ecx, [ebx*4]
movd xmm1, ecx
mov ecx, ebx
shl ecx, 4
movd xmm2, ecx
lea ecx, [ebx + ebx]
movd xmm3, ebx
movdqa xmm0, xmm3
punpckldq xmm0, xmm1
movdqa xmm1, xmm3
punpckldq xmm1, xmm2
punpcklqdq xmm0, xmm1
movd xmm2, ecx
punpckldq xmm3, xmm2
punpcklqdq xmm1, xmm3
pxor xmm1, xmmword [0x9e9f00]
pxor xmm0, xmmword [0x9e9f10]
paddq xmm0, xmm1
pshufd xmm1, xmm0, 0xee
paddq xmm1, xmm0
movd ecx, xmm1
sub ecx, eax
add ecx, 4
imul eax, eax
imul eax, ecx
mov ecx, eax
shl edi, cl
test al, 0x20
cmovne edi, edx
mov ecx, eax
sub ecx, edi
imul ecx, eax
mov eax, ebx
shl eax, 0x1d
xor eax, ebx
xor eax, 0xcf071bb0
mov edx, dword [ebp - 0x24]
xor edx, 0x10f8e44f
add edx, eax
mov eax, ebx
shl eax, 0x1c
xor eax, ebx
xor eax, 0x88f98f7
add edx, eax
mov eax, ebx
xor eax, 0x27706708
add eax, ecx
neg edi
add eax, edx
add eax, 2
mov ecx, eax
xor ecx, edi
and edi, eax
lea eax, [ecx + edi*2]
neg eax
jmp 0x8640a4
mov eax, 0x9ea080
mov ecx, esi
xor ecx, eax
not esi
not eax
and eax, esi
or eax, ecx
not eax
lea eax, [ecx + eax*2]
mov dword [ebp - 0x74], eax
nop
mov eax, dword [0x9ea058]
mov dword [ebp - 0x64], eax
mov eax, 0x9ea04c
add eax, dword [0x9ea04c]
mov dword [ebp - 0x70], eax
mov eax, ebx
xor eax, 0x79dd2a7d
mov edx, dword [ebp - 0x28]
lea ecx, [edx + eax]
mov dword [ebp - 0x38], ecx
mov esi, dword [edx + eax]
mov eax, ebx
xor eax, 0x79dd2a79
mov dword [ebp - 0x24], eax
cmp esi, dword [edx + eax]
nop
mov dword [ebp - 0x30], ebx
je 0x864155
mov eax, ebx
xor eax, 0x79dd2a19
mov dword [ebp - 0x20], eax
mov eax, ebx
xor eax, 0x79dd2a05
mov dword [ebp - 0x2c], eax
mov eax, ebx
xor eax, 0x79dd2a12
mov dword [ebp - 0x34], eax
mov edi, ebx
xor edi, 0x79dd2a01
xor ebx, ebx
nop dword [eax]
nop
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x34]
cmp dword [esi + eax], ecx
jbe 0x864130
mov eax, dword [ebp - 0x20]
mov eax, dword [esi + eax]
jmp 0x864135
mov eax, dword [ebp - 0x20]
add eax, esi
push eax
push dword [ebp + 0xc]
call fcn.00873690
add esp, 8
test eax, eax
je 0x864159
inc ebx
add esi, edi
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
cmp esi, dword [edx + eax]
jne 0x864110
jmp 0x86415c
xor ebx, ebx
jmp 0x86415c
mov edx, dword [ebp - 0x28]
nop
mov eax, dword [ebp - 0x24]
mov eax, dword [edx + eax]
mov ecx, dword [ebp - 0x38]
sub eax, dword [ecx]
mov edi, dword [ebp - 0x30]
xor edi, 0x79dd2a01
mov esi, edx
cdq
mov dword [ebp - 0x24], edi
idiv edi
cmp ebx, eax
je 0x86424c
nop
mov ebx, dword [ebp - 0x30]
mov eax, ebx
xor eax, 0x79dd2a71
lea ecx, [esi + eax]
mov dword [ebp - 0x38], ecx
mov edi, dword [esi + eax]
mov eax, ebx
xor eax, 0x79dd2a6d
mov dword [ebp - 0x20], eax
cmp edi, dword [esi + eax]
je 0x864229
mov eax, ebx
xor eax, 0xc5f822ac
mov ecx, ebx
xor ecx, 0x3a07dd53
add eax, ecx
add eax, 2
mov dword [ebp - 0x3c], eax
mov eax, ebx
xor eax, 0x79dd2a19
mov dword [ebp - 0x2c], eax
mov eax, ebx
xor eax, 0x79dd2a05
mov dword [ebp - 0x34], eax
xor ebx, 0x79dd2a12
xor esi, esi
nop dword [eax + eax]
nop
mov eax, dword [ebp - 0x34]
cmp dword [edi + eax], ebx
jbe 0x864200
mov eax, dword [ebp - 0x2c]
mov eax, dword [edi + eax]
jmp 0x864205
mov eax, dword [ebp - 0x2c]
add eax, edi
push eax
push dword [ebp + 0xc]
call fcn.00873690
add esp, 8
test eax, eax
je 0x86422f
nop
add edi, dword [ebp - 0x24]
add esi, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
cmp edi, dword [edx + eax]
jne 0x8641e0
jmp 0x864232
mov edx, esi
xor esi, esi
jmp 0x864232
mov edx, dword [ebp - 0x28]
nop
mov eax, dword [ebp - 0x20]
mov eax, dword [edx + eax]
mov ecx, dword [ebp - 0x38]
sub eax, dword [ecx]
mov ebx, edx
cdq
idiv dword [ebp - 0x24]
cmp esi, eax
jne 0x8643b9
nop
mov edi, dword [ebp + 8]
cmp dword [0xa8d65c], 0
jne 0x8642b0
nop
mov esi, dword [ebp - 0x30]
mov eax, esi
xor eax, 0x79dd2a3d
push eax
call fcn.0091d7fd
add esp, 4
mov ecx, esi
xor ecx, 0x79dd2a12
mov edx, dword [ebp - 0x24]
mov dword [eax + edx], ecx
mov ecx, esi
xor ecx, 0x79dd2a19
mov dword [eax + ecx], 0x954b60
mov dword [eax], 0
mov ecx, esi
xor ecx, 0x79dd2a05
mov dword [eax + ecx], 0
mov ecx, esi
xor ecx, 0x79dd2a15
mov byte [eax + ecx], 0
mov dword [0xa8d65c], eax
nop
mov ecx, dword [0xa8d65c]
mov eax, dword [ebp - 0x30]
mov esi, eax
xor esi, 0x79dd2a09
mov dword [ebp - 0x58], ecx
mov dword [ecx], esi
mov edx, eax
xor edx, 0x79dd2a19
mov dword [ebp + esi - 0xd4], 0
mov ecx, eax
xor ecx, 0x79dd2a05
mov dword [ebp + ecx - 0xd4], 0
xor eax, 0x79dd2a12
mov dword [ebp - 0x28], esi
mov esi, dword [edi + esi]
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x34], eax
cmp dword [edi + ecx], eax
jbe 0x86430b
mov edi, dword [edi + edx]
jmp 0x86430d
add edi, edx
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x44], edx
lea eax, [edx + ebp]
add eax, 0xffffff2c
mov edi, dword [ebp - 0x30]
mov ebx, edi
xor ebx, 0x79dd2a0d
mov esi, dword [ebp - 0x2c]
cmp esi, ebx
nop
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x4c], eax
jae 0x864360
mov edi, eax
mov eax, dword [0xa6b3d8]
mov ecx, dword [0xa6b3c4]
sub ecx, dword [ebp - 0x40]
add ecx, eax
call dword [0xa37360]
push ebx
push dword [ebp - 0x24]
push edi
call ecx
add esp, 0xc
mov ebx, 0xf
jmp 0x8644a0
mov eax, esi
or eax, dword [ebp - 0x34]
mov ebx, edi
xor ebx, 0x622d5e2
test esi, esi
cmovns ebx, eax
mov eax, edi
xor eax, 0x79dd25e3
cmp ebx, eax
jbe 0x864457
mov eax, edi
xor eax, 0x79dd2a39
add eax, ebx
push eax
call fcn.0091d7fd
add esp, 4
mov ecx, edi
xor ecx, 0x79dd2a3e
add ecx, eax
mov edx, edi
xor edx, 0x8622d5fd
and edx, ecx
mov ecx, edi
mov edi, edx
xor ecx, 0x8622d5e1
mov dword [edx + ecx], eax
jmp 0x864465
nop
mov edi, dword [ebp - 0x30]
mov eax, edi
xor eax, 0x79dd2a65
lea ecx, [ebx + eax]
mov dword [ebp - 0x38], ecx
mov esi, dword [ebx + eax]
mov eax, edi
xor eax, 0x79dd2a61
mov dword [ebp - 0x20], eax
cmp esi, dword [ebx + eax]
je 0x864f4e
mov eax, edi
xor eax, 0x79dd2a19
mov dword [ebp - 0x2c], eax
mov eax, edi
xor eax, 0x79dd2a05
mov dword [ebp - 0x34], eax
xor edi, 0x79dd2a12
xor ebx, ebx
nop dword [eax]
nop
mov eax, dword [ebp - 0x34]
cmp dword [esi + eax], edi
jbe 0x864420
mov eax, dword [ebp - 0x2c]
mov eax, dword [esi + eax]
jmp 0x864425
mov eax, dword [ebp - 0x2c]
add eax, esi
push eax
push dword [ebp + 0xc]
call fcn.00873690
add esp, 8
test eax, eax
je 0x864f54
mov eax, ebx
xor eax, 1
and ebx, 1
lea ebx, [eax + ebx*2]
add esi, dword [ebp - 0x24]
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x20]
cmp esi, dword [eax + ecx]
jne 0x864400
jmp 0x864f57
lea eax, [ebx + 1]
push eax
call fcn.0091d7fd
add esp, 4
mov edi, eax
nop
mov eax, dword [ebp - 0x4c]
mov dword [eax], edi
mov esi, dword [ebp - 0x2c]
mov eax, esi
xor eax, 1
mov ecx, esi
and ecx, 1
lea eax, [eax + ecx*2]
mov dword [ebp - 0x20], eax
mov eax, dword [0xa6b3d8]
mov ecx, dword [0xa6b3c4]
sub ecx, dword [ebp - 0x40]
add ecx, eax
call dword [0xa37360]
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push edi
call ecx
add esp, 0xc
mov eax, ebx
sub eax, esi
mov ecx, dword [ebp - 0x30]
mov edi, ecx
xor edi, 0x79dd2a1e
cmp eax, edi
mov edx, dword [ebp - 0x28]
mov dword [ebp + edx - 0xd4], esi
mov eax, dword [ebp - 0x50]
mov dword [ebp + eax - 0xd4], ebx
mov dword [ebp - 0xd4], 0x954b60
nop
mov dword [ebp - 0x48], edi
jae 0x864516
nop
movzx eax, byte [0xa6b254]
xor cl, 0x75
mov byte [ebp - 0x24], cl
cmp al, cl
je 0x8645e5
mov eax, dword [ebp - 0x30]
mov ecx, eax
xor cl, 0x19
mov edx, eax
xor dl, 0x82
nop dword [eax + eax]
mov eax, ecx
lock cmpxchg byte [0xa6b254], dl
je 0x86457a
cmp al, byte [ebp - 0x24]
jne 0x864500
jmp 0x8645e5
lea ecx, [esi + edi]
mov dword [ebp - 0x5c], ecx
mov dword [ebp + edx - 0xd4], ecx
mov eax, dword [ebp - 0x4c]
cmp ebx, dword [ebp - 0x34]
jbe 0x864530
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax]
mov dword [ebp - 0x60], eax
add dword [ebp - 0x2c], eax
movzx eax, byte [0xa6b254]
mov ecx, dword [ebp - 0x30]
xor cl, 0x75
mov byte [ebp - 0x24], cl
cmp al, cl
je 0x864690
mov eax, dword [ebp - 0x30]
mov ecx, eax
xor cl, 0x19
mov edx, eax
xor dl, 0x82
nop dword [eax + eax]
mov eax, ecx
lock cmpxchg byte [0xa6b254], dl
je 0x86461c
cmp al, byte [ebp - 0x24]
jne 0x864560
jmp 0x864690
nop
mov eax, dword [ebp - 0x30]
mov ecx, eax
xor ecx, 0xa7736ee1
mov dword [ebp - 0x20], ecx
mov edx, eax
xor dl, 0xcc
mov ebx, eax
xor bl, 0x33
mov ecx, dword [ebp - 0x44]
cmp ecx, 2
mov esi, 1
cmovge esi, ecx
xor edi, edi
mov bh, dl
xor bl, dl
nop word [eax + eax]
nop
mov eax, dword [ebp - 0x20]
add eax, edi
xor edx, edx
div ecx
not edx
movzx eax, byte [ecx + edx + 0x9ea000]
and al, bl
xor al, bh
xor byte [edi + 0xa6b250], al
inc edi
cmp esi, edi
jne 0x8645b0
nop
movzx eax, byte [ebp - 0x24]
xchg byte [0xa6b254], al
mov dword [ebp - 0x10], 2
nop
mov dword [ebp - 0x10], 2
sub esp, 0x10
movzx eax, byte [ebp - 0xb8]
mov byte [esp + 4], al
mov eax, dword [ebp - 0x48]
mov dword [esp + 0xc], eax
mov dword [esp], eax
mov dword [esp + 8], 0xa6b250
mov ecx, dword [ebp - 0x4c]
call fcn.00671270
mov edi, eax
jmp 0x8646cc
mov eax, dword [ebp - 0x30]
mov ecx, eax
xor ecx, 0xa7736ee1
mov dword [ebp - 0x20], ecx
mov ecx, eax
xor cl, 0xcc
mov ebx, eax
xor bl, 0x33
mov esi, eax
xor esi, 0x665caa
xor edi, edi
mov bh, cl
xor bl, cl
mov ecx, dword [ebp - 0x44]
nop word cs:[eax + eax]
nop
mov eax, dword [ebp - 0x20]
add eax, edi
xor edx, edx
div ecx
not edx
movzx eax, byte [ecx + edx + 0x9ea000]
and al, bl
xor al, bh
xor byte [edi + 0xa6b250], al
sub edi, esi
inc edi
mov eax, edi
xor eax, esi
and edi, esi
lea edi, [eax + edi*2]
cmp edi, ecx
jl 0x864650
nop
movzx eax, byte [ebp - 0x24]
xchg byte [0xa6b254], al
mov dword [ebp - 0x10], 0xffffffff
nop
mov eax, dword [0xa6b3d8]
mov ecx, dword [0xa6b3c4]
sub ecx, dword [ebp - 0x40]
add ecx, eax
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa37360]
push dword [ebp - 0x48]
push 0xa6b250
push dword [ebp - 0x2c]
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x60]
mov byte [ecx + eax], 0
nop
mov edi, dword [ebp - 0x4c]
nop
mov eax, dword [ebp - 0x38]
mov edx, dword [eax]
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x34]
cmp dword [edx + eax], ecx
jbe 0x8646e5
mov eax, dword [ebp - 0x44]
mov edx, dword [edx + eax]
jmp 0x8646e8
add edx, dword [ebp - 0x44]
mov dword [ebp - 0x24], edx
push edx
call fcn.00903f50
add esp, 4
mov esi, eax
mov edx, dword [ebp - 0x3c]
mov ebx, dword [edi + edx]
mov eax, dword [ebp - 0x28]
mov eax, dword [edi + eax]
mov ecx, eax
sub ecx, ebx
cmp ecx, esi
jae 0x864737
nop
mov dword [ebp - 0x10], 2
sub esp, 0x10
movzx eax, byte [ebp - 0xb8]
mov byte [esp + 4], al
mov dword [esp + 0xc], esi
mov eax, dword [ebp - 0x24]
mov dword [esp + 8], eax
mov dword [esp], esi
mov ecx, edi
call fcn.00671270
jmp 0x864778
mov ecx, esi
add ecx, ebx
mov dword [edi + edx], ecx
cmp eax, dword [ebp - 0x34]
mov dword [ebp - 0x20], ecx
jbe 0x864748
mov edi, dword [edi]
add ebx, edi
mov eax, dword [0xa6b3d0]
mov ecx, dword [0xa6b3c8]
sub ecx, dword [ebp - 0x40]
add ecx, eax
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa37360]
push esi
push dword [ebp - 0x24]
push ebx
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov byte [edi + eax], 0
nop
mov ecx, dword [ebp - 0x28]
mov dword [ebp + ecx - 0xb8], 0
mov eax, dword [ebp - 0x50]
mov dword [ebp + eax - 0xb8], 0
mov ecx, dword [ebp + ecx - 0xd4]
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x34]
cmp dword [ebp + eax - 0xd4], ecx
jbe 0x8647b8
mov eax, dword [ebp - 0x44]
mov edx, dword [ebp + eax - 0xd4]
mov dword [ebp - 0x2c], edx
mov eax, dword [ebp - 0x44]
lea edi, [eax + ebp]
add edi, 0xffffff48
mov eax, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x24]
cmp ebx, eax
nop
mov dword [ebp - 0x20], edi
jae 0x864826
mov esi, eax
mov eax, dword [0xa6b3d8]
mov ecx, dword [0xa6b3c4]
sub ecx, dword [ebp - 0x40]
add ecx, eax
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa37360]
push esi
push dword [ebp - 0x2c]
push edi
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x28]
mov dword [ebp + eax - 0xb8], ebx
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x34]
mov dword [ebp + eax - 0xb8], ecx
mov dword [ebp - 0xb8], 0x954b60
mov eax, edi
jmp 0x8648ef
mov eax, ebx
or eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x30]
mov edx, ecx
xor edx, 0x622d5e2
test ebx, ebx
cmovns edx, eax
mov eax, ecx
xor eax, 0x79dd25e3
cmp edx, eax
mov dword [ebp - 0x10], 2
nop
mov dword [ebp - 0x3c], edx
jbe 0x864888
mov eax, ecx
xor eax, 0x79dd2a39
add eax, edx
push eax
call fcn.0091d7fd
add esp, 4
nop
mov edx, dword [ebp - 0x30]
mov ecx, edx
xor ecx, 0x79dd2a3e
add ecx, eax
mov esi, edx
xor esi, 0x8622d5fd
and esi, ecx
mov ecx, edx
xor ecx, 0x8622d5e1
mov dword [esi + ecx], eax
jmp 0x864896
lea eax, [edx + 1]
push eax
call fcn.0091d7fd
add esp, 4
mov esi, eax
nop
mov eax, dword [ebp - 0x20]
mov dword [eax], esi
mov eax, dword [0xa6b3d8]
mov ecx, dword [0xa6b3c4]
sub ecx, dword [ebp - 0x40]
add ecx, eax
mov ebx, dword [ebp - 0x24]
lea edi, [ebx + 1]
mov dword [ebp - 0x10], 0xffffffff
call dword [0xa37360]
push edi
push dword [ebp - 0x2c]
push esi
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x28]
mov dword [ebp + eax - 0xb8], ebx
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x3c]
mov dword [ebp + eax - 0xb8], ecx
mov dword [ebp - 0xb8], 0x954b60
mov eax, dword [ebp - 0x20]
mov eax, dword [eax]
nop
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x44]
mov dword [ebp - 0x10], 3
push eax
call fcn.00798e10
nop
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp + eax - 0xb8]
cmp eax, dword [ebp - 0x34]
jbe 0x865041
nop
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx]
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x78], eax
inc eax
mov dword [ebp - 0x6c], eax
mov edx, dword [ebp - 0x30]
mov eax, edx
xor eax, 0x79dd25e2
mov dword [ebp - 0x7c], eax
mov eax, dword [0xa6b400]
xor eax, edx
cmp eax, 0x9cfe9441
mov eax, dword [0xa6b3f8]
jne 0x864d59
xor edx, 0x62fcb38
mov ecx, 2
sub ecx, edx
imul ecx, edx
mov edx, ecx
sub edx, eax
mov eax, edx
shl eax, cl
mov dword [0xa6b3f8], ecx
mov ecx, eax
sub ecx, edx
test ecx, eax
js 0x864d8a
nop
mov eax, dword [ebp - 0x70]
mov ecx, dword [eax]
mov dword [ebp - 0x28], 0
cmp dword [ebp - 0x64], 0
jle 0x864d8f
add ecx, eax
mov dword [ebp - 0x2c], ecx
mov eax, dword [0xa6b404]
mov ebx, dword [ebp - 0x30]
xor eax, ebx
mov dword [ebp - 0x38], eax
lea eax, [ebx + ebx]
mov dword [ebp - 0x24], eax
xor eax, 0xde83c688
mov dword [ebp - 0x28], eax
mov eax, ebx
xor eax, 0xf4a54a92
mov dword [ebp - 0x20], eax
mov eax, ebx
xor eax, 0x1753ef96
mov dword [ebp - 0x3c], eax
mov edi, ebx
xor edi, 0xf533bb93
mov ecx, ebx
shr ecx, 3
mov esi, ebx
shl esi, 0x1d
xor esi, ebx
xor esi, 0xdc33f750
xor ecx, 0xae08b7da
mov edx, ebx
shr edx, 2
mov eax, ebx
shl eax, 0x1e
xor eax, ebx
xor eax, 0x6fa38049
xor edx, 0x8bb56b52
add eax, esi
adc edx, ecx
add eax, edi
adc edx, dword [ebp - 0x3c]
add eax, dword [ebp - 0x20]
adc edx, dword [ebp - 0x28]
mov ecx, ebx
shr ecx, 1
mov dword [ebp - 0x58], ecx
mov edi, ebx
shl edi, 0x1f
xor edi, ebx
mov ecx, edi
xor ecx, 0x5680f3b4
mov esi, dword [ebp - 0x58]
xor esi, 0x86c6bdc2
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x20], edi
xor dword [ebp - 0x20], 0x8acc446c
mov esi, dword [ebp - 0x58]
xor esi, 0xad9faf7a
add ecx, eax
mov eax, dword [ebp - 0x28]
adc eax, edx
add ecx, dword [ebp - 0x20]
mov dword [ebp - 0x20], ecx
adc eax, esi
mov dword [ebp - 0x28], eax
lea eax, [ebx*8]
mov dword [ebp - 0x5c], eax
xor eax, 0x1c2f3da5
mov ecx, ebx
xor ecx, 0xb5ab56d
mov dword [ebp - 0x60], edi
xor edi, 0x3cc08af
mov dword [ebp - 0x3c], edi
mov edx, dword [ebp - 0x58]
xor edx, 0x62227868
mov dword [ebp - 0x40], edx
xor dword [ebp - 0x24], 0x99878a10
mov edx, ebx
xor edx, 0xd05c7fb6
mov esi, ebx
xor esi, 0x3c0afd2e
mov dword [ebp - 0x48], esi
mov esi, ebx
xor esi, 0x297f0c4b
add ecx, dword [ebp - 0x20]
adc eax, dword [ebp - 0x28]
mov edi, dword [ebp - 0x2c]
add ecx, edx
adc eax, dword [ebp - 0x24]
add ecx, dword [ebp - 0x3c]
adc eax, dword [ebp - 0x40]
add ecx, esi
adc eax, dword [ebp - 0x48]
add ecx, 5
mov dword [ebp - 0x98], ecx
adc eax, 0
mov dword [ebp - 0x9c], eax
mov eax, ebx
xor al, 0x99
mov ecx, ebx
xor cl, 0x66
add cl, al
mov byte [ebp - 0x52], cl
mov eax, ebx
shr eax, 4
mov ecx, ebx
shl ecx, 0x1c
xor ecx, ebx
xor ecx, 0x5b696939
mov dword [ebp - 0x90], ecx
xor eax, 0x83ec5fd
mov dword [ebp - 0x94], eax
mov eax, ebx
xor eax, 0x749696c6
mov dword [ebp - 0x8c], eax
xor dword [ebp - 0x5c], 0x3eb5b84b
mov eax, ebx
xor al, 0x1e
mov byte [ebp - 0x51], al
mov eax, ebx
xor eax, 0x38d287d6
mov dword [ebp - 0x84], eax
mov eax, ebx
xor eax, 0x4fd382cd
mov dword [ebp - 0x80], eax
mov eax, dword [0xa6b40c]
xor eax, ebx
mov dword [ebp - 0x40], eax
xor ebx, 0xa873fa55
mov dword [ebp - 0x88], ebx
nop
mov dword [ebp - 0x20], 0
xor ebx, ebx
mov dword [ebp - 0x48], 0
xor ecx, ecx
jmp 0x864b9c
not dh
mov ecx, dword [ebp - 0x20]
mov eax, ecx
and al, dh
xor dh, cl
not dh
mov cl, dh
or cl, al
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x88]
sub ecx, edx
mov eax, ecx
xor eax, 1
and ecx, 1
lea eax, [eax + ecx*2]
mov ecx, eax
xor ecx, edx
and eax, edx
lea ecx, [ecx + eax*2]
cmp ecx, dword [ebp - 0x64]
jge 0x86501d
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x28], ecx
add ecx, eax
cmp dword [ebp - 0x38], 0xef278b1d
jne 0x864c20
nop
mov esi, dword [ebp - 0x60]
xor esi, edi
mov edx, dword [ebp - 0x58]
xor edx, ebx
xor edx, 0x334d8252
xor esi, 0xb696939
mov dword [ebp - 0x2c], edi
mov edi, dword [ebp - 0x2c]
and edi, dword [ebp - 0x90]
mov dword [ebp - 0x3c], ebx
mov ebx, dword [ebp - 0x3c]
and ebx, dword [ebp - 0x94]
shld ebx, edi, 1
add edi, edi
mov eax, dword [ebp - 0x8c]
sub eax, ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x5c]
sbb ecx, 0
add eax, esi
adc ecx, edx
add eax, edi
mov edi, dword [ebp - 0x2c]
adc ecx, ebx
mov ebx, dword [ebp - 0x3c]
imul ecx, dword [ebp - 0x24]
mul dword [ebp - 0x24]
add edx, ecx
mov ecx, dword [ebp - 0x24]
mov dword [0xa6b408], 0x630fb893
jmp 0x864c35
mov eax, dword [ebp - 0x98]
add eax, edi
mov edx, dword [ebp - 0x9c]
adc edx, ebx
sub eax, ecx
sbb edx, 0
cmp eax, 1
sbb edx, 0
mov dh, byte [ecx]
jl 0x864c60
cmp dword [ebp - 0x40], 0x1aff9fc9
jne 0x864b60
jmp 0x864d28
nop
mov ecx, dword [0xa6b408]
xor ecx, dword [ebp - 0x30]
cmp ecx, 0x3a64e1ad
jne 0x864cb9
nop
mov esi, dword [ebp - 0x48]
lea ecx, [esi + esi]
lea edx, [esi*2 + 2]
imul edx, esi
mov esi, edx
xor esi, ecx
and edx, ecx
lea ebx, [esi + edx*2]
add eax, dword [ebp - 0x44]
mov edx, dword [ebp - 0x28]
neg edx
mov esi, dword [ebp - 0x80]
mov ecx, esi
xor ecx, edx
and edx, esi
add edx, eax
imul eax, eax
lea eax, [edx + eax*2]
sub ecx, esi
lea eax, [ecx + eax*2]
mov dword [ebp - 0x28], eax
mov dword [0xa6b3fc], 0x9a2b5a74
jmp 0x864d0b
mov dl, al
movzx ecx, byte [ebp - 0x51]
shl dl, cl
mov ch, 1
mov cl, dl
shl ch, cl
add eax, dword [ebp - 0x44]
mov esi, 1
sub esi, eax
mov al, ch
mov cl, byte [ebp - 0x52]
xor al, cl
and ch, cl
add ch, ch
add ch, al
and dh, ch
mov ebx, dword [ebp - 0x48]
mov eax, ebx
xor eax, 1
and ebx, 1
lea ebx, [eax + ebx*2]
mov ecx, dword [ebp - 0x28]
mov edi, dword [ebp - 0x84]
add ecx, edi
neg ecx
mov eax, esi
xor eax, ecx
and ecx, esi
add eax, edi
lea ecx, [eax + ecx*2]
neg ecx
mov dword [ebp - 0x28], ecx
nop
mov eax, dword [ebp - 0x70]
lea edi, [eax + ebx*4]
mov dword [ebp - 0x48], ebx
add edi, dword [eax + ebx*4]
xor ebx, ebx
nop
cmp dword [ebp - 0x40], 0x1aff9fc9
jne 0x864b60
mov ecx, dword [ebp - 0x28]
add ecx, ecx
mov eax, 2
sub eax, ecx
mov ecx, eax
mov dword [ebp - 0x20], edx
cmp dword [ebp - 0x64], eax
jg 0x864b9c
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x7c]
cmp dword [ebp - 0x6c], eax
ja 0x864da2
jmp 0x865030
mov ecx, edx
xor ecx, 0xf9d034c7
xor edx, 0x9b1e8e68
mov esi, ecx
sub esi, edx
inc esi
mov edi, esi
xor edi, edx
and esi, edx
lea edx, [edi + esi*2]
sub ecx, edx
add ecx, eax
add ecx, 2
test ecx, eax
mov dword [0xa6b3f8], ecx
je 0x864975
mov al, 1
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], 0
mov eax, dword [ebp - 0x7c]
cmp dword [ebp - 0x6c], eax
jbe 0x865030
nop
mov edx, dword [ebp - 0x30]
mov eax, edx
xor eax, 0x8622d5e1
mov edi, dword [ebp - 0x68]
mov ebx, dword [edi + eax]
mov esi, eax
xor esi, edi
and eax, edi
mov ecx, edx
xor ecx, 0xeb4da456
mov edi, edx
xor edi, 0x14b25ba9
add edi, ecx
add edi, esi
lea eax, [edi + eax*2]
mov dword [ebp - 0x2c], ebx
sub eax, ebx
inc eax
mov dword [ebp - 0x24], eax
mov eax, dword [0xa6b410]
xor eax, edx
mov ecx, edx
xor cl, 0x8c
cmp eax, 0xdc3468e7
mov ch, byte [0x9ea054]
jne 0x864ed4
nop
mov eax, dword [ebp - 0x28]
mov edx, eax
mov esi, eax
shl dl, cl
mov ebx, dword [ebp - 0x30]
movzx eax, bl
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pxor xmm0, xmmword [0x9e9f20]
pxor xmm1, xmm1
punpckldq xmm0, xmm1
psadbw xmm0, xmm1
mov eax, esi
add dl, al
movd eax, xmm0
add dl, al
add dl, dl
mov dh, dl
add dh, 2
mov eax, ebx
mov esi, ebx
xor al, 0x73
add al, dh
mul cl
inc dl
mov cl, al
shl dl, cl
not dl
add dl, dh
mov ebx, dword [ebp - 0x20]
sub ch, bl
mov al, ch
mul bl
mov ecx, edx
shl al, cl
mov ebx, esi
mov ecx, ebx
xor cl, 0x6c
sub al, cl
mov ah, al
xor ah, cl
and al, cl
add al, al
mov ecx, ebx
mov edi, esi
xor cl, 0xdf
sub ah, cl
add ah, al
mov al, ah
xor al, dl
and ah, dl
add ah, ah
add ah, al
mov al, ah
xor al, cl
and ah, cl
add ah, ah
add ah, al
mov al, ah
mov ecx, edx
shl al, cl
and al, ah
movzx ecx, al
imul ecx, ecx
mov eax, dword [0xa8c5d8]
add eax, ecx
shl eax, cl
mov edx, esi
xor edx, 0xc17683b0
xor edi, 0xefb380f1
mov ebx, edi
sub ebx, edx
sub ebx, ecx
add ebx, eax
mov eax, ebx
xor eax, edx
and ebx, edx
sub eax, edi
lea edx, [eax + ebx*2]
inc edx
imul edx, ecx
imul edx, edx
mov eax, 1
sub eax, edx
imul eax, edx
jmp 0x864f22
nop
mov edx, dword [ebp - 0x30]
mov eax, edx
xor al, 0x73
add al, cl
add al, byte [ebp - 0x28]
sub ch, byte [ebp - 0x20]
and ch, al
movzx eax, ch
mov ecx, edx
xor ecx, 0x49f6507b
add eax, ecx
neg eax
mov edx, ecx
xor edx, eax
and eax, ecx
mov ebx, dword [0xa8c5d8]
lea eax, [edx + eax*2]
mov ecx, ebx
neg ecx
xor ecx, eax
dec ebx
not eax
and eax, ebx
or eax, ecx
add eax, eax
sub eax, ecx
mov dword [0xa6b408], 0x5d6c5549
add eax, 2
nop
mov dword [0xa8c5d8], eax
mov eax, dword [ebp - 0x30]
xor eax, 0x79dd2a3d
cmp dword [ebp - 0x24], eax
jae 0x8652fa
mov eax, dword [ebp - 0x30]
xor eax, 0x79dd2a39
mov ecx, dword [ebp - 0x78]
add ecx, eax
mov eax, dword [ebp - 0x2c]
jmp 0x865036
mov eax, ebx
xor ebx, ebx
jmp 0x864f57
mov eax, dword [ebp - 0x28]
nop
mov ecx, dword [ebp - 0x20]
mov eax, dword [eax + ecx]
mov ecx, dword [ebp - 0x38]
sub eax, dword [ecx]
cdq
idiv dword [ebp - 0x24]
cmp byte [0xa8c614], 0
jne 0x86424c
cmp ebx, eax
nop
mov edx, dword [ebp - 0x28]
je 0x86424c
nop
mov edi, dword [ebp - 0x30]
mov eax, edi
xor eax, 0x79dd2a99
lea ecx, [edx + eax]
mov dword [ebp - 0x38], ecx
mov ebx, dword [edx + eax]
mov eax, edi
xor eax, 0x79dd2a95
mov dword [ebp - 0x20], eax
cmp ebx, dword [edx + eax]
je 0x8650c0
mov eax, edi
xor eax, 0x79dd2a19
mov dword [ebp - 0x2c], eax
mov eax, edi
xor eax, 0x79dd2a05
mov dword [ebp - 0x34], eax
xor edi, 0x79dd2a12
xor esi, esi
nop word cs:[eax + eax]
nop
mov eax, dword [ebp - 0x34]
cmp dword [ebx + eax], edi
jbe 0x864ff0
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebx + eax]
jmp 0x864ff5
mov eax, dword [ebp - 0x2c]
add eax, ebx
push eax
push dword [ebp + 0xc]
call fcn.00873690
add esp, 8
test eax, eax
je 0x8650c4
inc esi
add ebx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
cmp ebx, dword [edx + eax]
jne 0x864fd0
jmp 0x8650c7
mov dword [ebp - 0x28], 0
mov eax, dword [ebp - 0x7c]
cmp dword [ebp - 0x6c], eax
ja 0x864da2
mov eax, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x6c]
nop
push ecx
push eax
call fcn.0091d82d
add esp, 8
nop
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp + eax - 0xd4]
cmp eax, dword [ebp - 0x34]
jbe 0x8650a6
nop
mov ecx, dword [ebp - 0x4c]
mov ecx, dword [ecx]
lea esi, [eax + 1]
mov ebx, dword [ebp - 0x30]
mov edx, ebx
xor edx, 0x79dd25e2
cmp esi, edx
jbe 0x86509b
mov esi, ebx
xor esi, 0x8622d5e1
mov edx, dword [ecx + esi]
mov edi, esi
xor edi, ecx
and esi, ecx
lea ecx, [edi + esi*2]
sub ecx, edx
mov esi, ebx
xor esi, 0x79dd2a3d
cmp ecx, esi
jae 0x865307
xor ebx, 0x79dd2a39
add eax, ebx
mov esi, eax
mov ecx, edx
nop
push esi
push ecx
call fcn.0091d82d
add esp, 8
mov al, 1
nop
mov ecx, dword [ebp - 0x18]
mov dword fs:[0], ecx
add esp, 0xc8
pop esi
pop edi
pop ebx
pop ebp
ret 8
xor esi, esi
jmp 0x8650c7
mov edx, dword [ebp - 0x28]
nop
mov eax, dword [ebp - 0x20]
mov eax, dword [edx + eax]
mov ecx, dword [ebp - 0x38]
sub eax, dword [ecx]
mov edi, edx
cdq
idiv dword [ebp - 0x24]
cmp esi, eax
je 0x86424c
nop
mov esi, dword [ebp - 0x30]
mov eax, esi
xor eax, 0x79dd2a8d
lea ecx, [edi + eax]
mov dword [ebp - 0x38], ecx
mov ebx, dword [edi + eax]
mov eax, esi
xor eax, 0x79dd2a89
mov dword [ebp - 0x20], eax
cmp ebx, dword [edi + eax]
je 0x865176
mov eax, esi
xor eax, 0x79dd2a19
mov dword [ebp - 0x2c], eax
mov eax, esi
xor eax, 0x79dd2a05
mov dword [ebp - 0x34], eax
mov edi, esi
xor edi, 0x79dd2a12
xor esi, esi
nop word cs:[eax + eax]
nop
mov eax, dword [ebp - 0x34]
cmp dword [ebx + eax], edi
jbe 0x865150
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebx + eax]
jmp 0x865155
mov eax, dword [ebp - 0x2c]
add eax, ebx
push eax
push dword [ebp + 0xc]
call fcn.00873690
add esp, 8
test eax, eax
je 0x86517c
inc esi
add ebx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
cmp ebx, dword [edx + eax]
jne 0x865130
jmp 0x86517f
mov edx, edi
xor esi, esi
jmp 0x86517f
mov edx, dword [ebp - 0x28]
nop
mov eax, dword [ebp - 0x20]
mov eax, dword [edx + eax]
mov ecx, dword [ebp - 0x38]
sub eax, dword [ecx]
mov edi, edx
cdq
idiv dword [ebp - 0x24]
cmp esi, eax
je 0x86424c
nop
mov esi, dword [ebp - 0x30]
mov eax, esi
xor eax, 0x79dd2a81
lea ecx, [edi + eax]
mov dword [ebp - 0x38], ecx
mov ebx, dword [edi + eax]
mov eax, esi
xor eax, 0x79dd2abd
mov dword [ebp - 0x20], eax
cmp ebx, dword [edi + eax]
je 0x86522a
mov eax, esi
xor eax, 0x835062ec
mov ecx, esi
xor ecx, 0x7caf9d13
add eax, ecx
add eax, 2
mov dword [ebp - 0x3c], eax
mov eax, esi
xor eax, 0x79dd2a19
mov dword [ebp - 0x2c], eax
mov eax, esi
xor eax, 0x79dd2a05
mov dword [ebp - 0x34], eax
xor esi, 0x79dd2a12
xor edi, edi
nop
nop
mov eax, dword [ebp - 0x34]
cmp dword [ebx + eax], esi
jbe 0x865201
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebx + eax]
jmp 0x865206
mov eax, dword [ebp - 0x2c]
add eax, ebx
push eax
push dword [ebp + 0xc]
call fcn.00873690
add esp, 8
test eax, eax
je 0x865230
nop
add ebx, dword [ebp - 0x24]
add edi, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
cmp ebx, dword [edx + eax]
jne 0x8651f0
jmp 0x865233
mov edx, edi
xor edi, edi
jmp 0x865233
mov edx, dword [ebp - 0x28]
nop
mov eax, dword [ebp - 0x20]
mov eax, dword [edx + eax]
mov ecx, dword [0xa8c5d8]
mov esi, edx
mov edx, ecx
xor edx, eax
and ecx, eax
mov eax, dword [ebp - 0x38]
sub edx, dword [eax]
lea eax, [edx + ecx*2]
cdq
idiv dword [ebp - 0x24]
cmp edi, eax
je 0x86424c
nop
mov edi, dword [ebp - 0x30]
mov eax, edi
xor eax, 0x79dd2ab5
lea ecx, [esi + eax]
mov dword [ebp - 0x38], ecx
mov ebx, dword [esi + eax]
mov eax, edi
xor eax, 0x79dd2ab1
mov dword [ebp - 0x20], eax
cmp ebx, dword [esi + eax]
je 0x8652d2
mov eax, edi
xor eax, 0x79dd2a19
mov dword [ebp - 0x2c], eax
mov eax, edi
xor eax, 0x79dd2a05
mov dword [ebp - 0x34], eax
xor edi, 0x79dd2a12
xor esi, esi
nop
mov eax, dword [ebp - 0x34]
cmp dword [ebx + eax], edi
jbe 0x8652ac
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebx + eax]
jmp 0x8652b1
mov eax, dword [ebp - 0x2c]
add eax, ebx
push eax
push dword [ebp + 0xc]
call fcn.00873690
add esp, 8
test eax, eax
je 0x8652d8
inc esi
add ebx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x20]
cmp ebx, dword [eax + ecx]
jne 0x86529b
jmp 0x8652db
mov eax, esi
xor esi, esi
jmp 0x8652db
mov eax, dword [ebp - 0x28]
nop
mov ecx, dword [ebp - 0x20]
mov eax, dword [eax + ecx]
mov ecx, dword [ebp - 0x38]
sub eax, dword [ecx]
cdq
idiv dword [ebp - 0x24]
cmp esi, eax
je 0x86424c
xor eax, eax
jmp 0x8650a8
nop
mov dword [ebp - 0x10], 0
call fcn.00900ce1
nop
mov dword [ebp - 0x10], 1
call fcn.00900ce1
nop word cs:[eax + eax]
push ebp
sub esp, 0x10
add ebp, 0xc
call fcn.009350a0
nop dword [eax]
push ebp
sub esp, 0x10
add ebp, 0xc
call fcn.009350a0
nop dword [eax]
push ebp
sub esp, 0x10
add ebp, 0xc
nop
mov eax, dword [0xa6b3dc]
mov esi, dword [0xa6b3c0]
sub esi, dword [ebp - 0x40]
add esi, eax
mov ecx, esi
call dword [0xa37360]
lea ecx, [ebp - 0xb8]
call esi
add esp, 0x10
pop ebp
ret