Function at 0x49ab70
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x5c
mov dword [esp], edx
movzx esi, word [edx + 4]
movzx eax, byte [edx + 6]
shl eax, 0x10
or eax, esi
movzx ebx, byte [edx + 7]
shl ebx, 0x18
or ebx, eax
mov ebp, dword [edx]
movzx edi, word [edx + 0xc]
movzx esi, byte [edx + 0xe]
shl esi, 0x10
or esi, edi
mov edi, ebx
shr edi, 7
xor edi, eax
and edi, 0xaa00aa
mov eax, edi
shl eax, 7
or eax, edi
mov edx, ebp
shr ebp, 7
xor ebp, edx
and ebp, 0xaa00aa
mov edi, ebp
shl edi, 7
or edi, ebp
xor eax, ebx
mov dword [esp + 0xc], eax
mov eax, dword [esp]
movzx ebp, byte [eax + 0xf]
shl ebp, 0x18
or ebp, esi
xor edi, edx
mov ebx, ebp
shr ebx, 7
xor ebx, esi
and ebx, 0xaa00aa
mov edx, ebx
shl edx, 7
or edx, ebx
mov esi, dword [esp]
mov eax, dword [esi + 8]
mov esi, eax
shr esi, 7
xor esi, eax
and esi, 0xaa00aa
mov ebx, esi
shl ebx, 7
or ebx, esi
xor edx, ebp
xor ebx, eax
mov dword [esp + 4], ebx
mov eax, dword [esp + 0xc]
mov esi, eax
shr esi, 0xe
xor esi, eax
and esi, 0xcccc
mov ebx, esi
shl ebx, 0xe
or ebx, esi
mov ebp, edi
shr ebp, 0xe
xor ebp, edi
and ebp, 0xcccc
mov esi, ebp
shl esi, 0xe
or esi, ebp
xor ebx, eax
xor esi, edi
mov eax, edx
shr eax, 0xe
xor eax, edx
and eax, 0xcccc
mov edi, eax
shl edi, 0xe
or edi, eax
mov ebp, dword [esp + 4]
mov eax, ebp
shr eax, 0xe
xor eax, ebp
and eax, 0xcccc
mov ebp, eax
shl ebp, 0xe
or ebp, eax
xor edi, edx
mov eax, ebx
shl eax, 4
xor eax, esi
and eax, 0xf0f0f0f0
mov edx, 0x10000001
mul edx
mov dword [esp + 0xc], eax
xor ebp, dword [esp + 4]
xor edx, ebx
mov dword [esp + 4], edx
mov eax, edi
shl eax, 4
xor eax, ebp
and eax, 0xf0f0f0f0
mov edx, 0x10000001
mul edx
mov ebx, dword [esp + 0xc]
xor ebx, esi
xor edx, edi
xor eax, ebp
mov ebp, dword [esp + 4]
mov esi, ebp
shr esi, 8
xor esi, edx
and esi, 0xff00ff
mov edi, esi
shl edi, 8
xor edi, ebp
mov dword [esp + 8], edi
mov ebp, ebx
mov edi, ebx
shr edi, 8
xor edi, eax
and edi, 0xff00ff
mov ebx, edi
shl ebx, 8
xor ebx, ebp
mov dword [esp + 0x18], ebx
xor esi, edx
mov dword [esp + 4], esi
xor edi, eax
mov dword [esp + 0xc], edi
mov ebx, dword [esp]
movzx eax, byte [ebx + 0x16]
shl eax, 0x10
movzx edx, word [ebx + 0x14]
or eax, edx
movzx edx, byte [ebx + 0x1e]
shl edx, 0x10
movzx esi, word [ebx + 0x1c]
or edx, esi
movzx edi, byte [ebx + 0x17]
shl edi, 0x18
or edi, eax
mov esi, edi
shr esi, 7
xor esi, eax
and esi, 0xaa00aa
mov eax, esi
shl eax, 7
or eax, esi
mov ebx, dword [ebx + 0x10]
mov ebp, ebx
shr ebp, 7
xor ebp, ebx
and ebp, 0xaa00aa
mov esi, ebp
shl esi, 7
or esi, ebp
xor eax, edi
mov dword [esp + 0x10], eax
xor esi, ebx
mov eax, dword [esp]
movzx edi, byte [eax + 0x1f]
shl edi, 0x18
or edi, edx
mov ebx, edi
shr ebx, 7
xor ebx, edx
and ebx, 0xaa00aa
mov edx, ebx
shl edx, 7
or edx, ebx
mov eax, dword [eax + 0x18]
mov ebx, eax
shr ebx, 7
xor ebx, eax
and ebx, 0xaa00aa
mov ebp, ebx
shl ebp, 7
or ebp, ebx
xor edx, edi
xor ebp, eax
mov dword [esp], ebp
mov eax, dword [esp + 0x10]
mov edi, eax
shr edi, 0xe
xor edi, eax
and edi, 0xcccc
mov ebp, edi
shl ebp, 0xe
or ebp, edi
mov edi, esi
shr edi, 0xe
xor edi, esi
and edi, 0xcccc
mov ebx, edi
shl ebx, 0xe
or ebx, edi
xor ebp, eax
xor ebx, esi
mov eax, edx
shr eax, 0xe
xor eax, edx
and eax, 0xcccc
mov esi, eax
shl esi, 0xe
or esi, eax
mov edi, dword [esp]
mov eax, edi
shr eax, 0xe
xor eax, edi
and eax, 0xcccc
mov edi, eax
shl edi, 0xe
or edi, eax
xor esi, edx
mov eax, ebp
shl eax, 4
xor eax, ebx
and eax, 0xf0f0f0f0
mov edx, 0x10000001
mul edx
mov dword [esp + 0x14], eax
xor edi, dword [esp]
xor edx, ebp
mov dword [esp + 0x10], edx
mov eax, esi
shl eax, 4
xor eax, edi
and eax, 0xf0f0f0f0
mov edx, 0x10000001
mul edx
mov ebp, dword [esp + 0x14]
xor ebp, ebx
xor edx, esi
xor eax, edi
mov dword [esp], eax
mov eax, dword [esp + 0x10]
mov esi, eax
shr esi, 8
xor esi, edx
and esi, 0xff00ff
mov ebx, esi
mov edi, esi
shl ebx, 8
xor ebx, eax
mov eax, ebp
shr ebp, 8
xor ebp, dword [esp]
and ebp, 0xff00ff
mov esi, ebp
shl esi, 8
xor esi, eax
xor edi, edx
mov dword [esp + 0x14], edi
xor ebp, dword [esp]
mov edi, esi
shl edi, 0x10
mov edx, dword [esp + 0x18]
movzx eax, dx
or edi, eax
mov dword [esp + 0x10], edi
mov edi, ebx
shld edi, esi, 0x10
shr edx, 0x10
and esi, 0xffff0000
or esi, edx
and edi, 0xffff0000
mov eax, dword [esp + 8]
movzx edx, ax
or edi, edx
mov dword [esp + 0x18], edi
shr eax, 0x10
and ebx, 0xffff0000
or ebx, eax
mov edi, ebp
shl edi, 0x10
mov eax, dword [esp + 0xc]
movzx edx, ax
or edi, edx
shr eax, 0x10
mov edx, eax
mov eax, dword [esp + 0x14]
shld eax, ebp, 0x10
and ebp, 0xffff0000
or ebp, edx
and eax, 0xffff0000
movzx edx, word [esp + 4]
or eax, edx
mov dword [esp], eax
mov edx, dword [esp + 4]
shr edx, 0x10
mov eax, dword [esp + 0x14]
and eax, 0xffff0000
or eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x10]
xor edx, dword [eax]
mov dword [esp + 0x10], edx
xor edi, dword [eax + 4]
mov dword [esp + 4], edi
mov edi, eax
xor esi, dword [eax + 8]
mov dword [esp + 0xc], esi
xor ebp, dword [eax + 0xc]
mov dword [esp + 8], ebp
mov edx, dword [esp + 0x18]
xor edx, dword [eax + 0x10]
mov dword [esp + 0x18], edx
mov eax, dword [esp]
xor eax, dword [edi + 0x14]
mov dword [esp], eax
xor ebx, dword [edi + 0x18]
mov esi, dword [esp + 0x14]
xor esi, dword [edi + 0x1c]
mov dword [esp + 0x50], ecx
lea eax, [edi + 0x20]
mov edx, dword [edi + 0x2d0]
mov ecx, edx
add ecx, 0xffffffff
je 0x49b624
shl edx, 3
mov dword [esp + 0x54], edx
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 8]
nop
nop
mov dword [esp + 0x4c], eax
mov edx, dword [esp + 0xc]
mov edi, edx
xor edi, ecx
mov dword [esp + 0x34], edi
mov eax, dword [esp + 4]
xor eax, esi
mov dword [esp + 0x44], eax
xor dword [esp], ebx
xor eax, edi
mov dword [esp + 0x20], eax
xor ebp, eax
mov eax, edx
xor eax, ebp
mov edi, eax
mov dword [esp + 0xc], eax
xor ebp, ebx
xor edx, esi
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x10]
mov edx, dword [esp]
xor eax, edx
mov dword [esp + 8], eax
xor eax, ecx
mov dword [esp + 0x1c], eax
xor ecx, esi
mov dword [esp + 0x18], ecx
mov ebx, edi
xor ebx, edx
mov eax, ebp
xor eax, ecx
mov edi, ebx
mov dword [esp + 0x14], ebx
xor edi, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x38], edi
mov edx, eax
and edx, ecx
and edi, dword [esp + 0x34]
xor edi, edx
mov ecx, ebx
mov eax, dword [esp + 0x30]
and ecx, eax
xor ecx, edx
mov edx, dword [esp + 4]
xor edx, dword [esp + 8]
mov dword [esp + 4], edx
xor edx, eax
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0xc]
mov ebx, edx
xor ebx, dword [esp + 0x10]
mov dword [esp + 0x3c], ebx
mov eax, edx
and eax, dword [esp + 0x20]
and ebx, dword [esp + 0x24]
xor ebp, eax
xor ebp, ebx
mov edx, dword [esp + 0x1c]
and edx, dword [esp + 0x10]
xor edx, dword [esp + 0x30]
xor edx, dword [esp + 0x14]
xor edx, eax
mov eax, dword [esp]
xor eax, dword [esp + 0x28]
mov dword [esp], eax
mov ebx, dword [esp + 4]
and ebx, dword [esp + 8]
mov dword [esp + 0x2c], ebx
mov ebx, eax
mov eax, dword [esp + 0x44]
or ebx, eax
xor ebx, dword [esp + 0x2c]
xor ebp, edi
xor ebx, edi
mov edi, dword [esp + 8]
xor edi, esi
mov dword [esp + 0x40], edi
not eax
and eax, dword [esp]
xor eax, esi
mov esi, dword [esp + 0x28]
xor esi, dword [esp + 0x10]
mov dword [esp + 0x2c], esi
and esi, dword [esp + 0x40]
xor edx, ecx
xor ecx, esi
xor ecx, eax
mov eax, ebp
xor eax, edx
mov dword [esp + 0x48], eax
and ebp, ebx
mov edi, ebp
xor edi, ecx
mov esi, edi
and esi, eax
xor esi, edx
mov eax, ecx
xor eax, ebx
xor edx, ebp
and edx, eax
mov eax, edx
xor edx, ebp
xor eax, ecx
and edx, ecx
xor ebx, edx
xor edx, edi
and edx, esi
xor edx, dword [esp + 0x48]
and dword [esp + 0xc], ebx
mov ecx, ebx
and ebx, dword [esp + 0x20]
mov dword [esp + 0x48], ebx
xor ecx, eax
mov edi, edx
xor edi, ecx
mov dword [esp + 0x20], edi
and dword [esp + 0x3c], ecx
and ecx, dword [esp + 0x24]
mov dword [esp + 0x24], ecx
mov edi, esi
xor edi, eax
mov ebp, dword [esp + 0x10]
and ebp, eax
and eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov ebx, edx
xor ebx, esi
and dword [esp], ebx
and ebx, dword [esp + 0x44]
and dword [esp + 8], edx
and edx, dword [esp + 4]
mov eax, dword [esp + 0x2c]
and eax, esi
and esi, dword [esp + 0x40]
mov dword [esp + 4], esi
mov esi, dword [esp + 0x20]
mov ecx, esi
xor ecx, edi
and dword [esp + 0x28], edi
and edi, dword [esp + 0x18]
and dword [esp + 0x38], ecx
and ecx, dword [esp + 0x34]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x14]
and ecx, esi
and esi, dword [esp + 0x30]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x24]
xor dword [esp + 0x1c], esi
xor esi, dword [esp + 0x48]
mov dword [esp + 0x24], esi
xor edx, eax
mov esi, ebx
xor esi, ebp
xor eax, ebp
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xc]
mov ebp, dword [esp]
xor eax, ebp
mov dword [esp + 0xc], eax
xor dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x38]
xor ecx, ebp
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x28]
xor ecx, ebp
xor ebx, edx
xor esi, eax
xor dword [esp + 4], esi
xor esi, edx
xor edi, dword [esp + 0x10]
xor esi, edi
mov eax, edi
mov edx, dword [esp + 8]
xor eax, edx
mov edi, dword [esp + 0x14]
xor edi, eax
xor eax, dword [esp + 0x24]
xor edx, ecx
mov dword [esp + 8], edx
mov ebp, dword [esp + 0x3c]
xor ebp, eax
xor eax, ecx
mov dword [esp + 0x30], eax
xor dword [esp + 4], edi
xor edi, ebx
mov edx, dword [esp + 0xc]
xor edx, ebp
mov dword [esp + 0xc], edx
xor ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
xor eax, dword [esp + 0x10]
mov ecx, dword [esp + 8]
xor edx, ecx
mov dword [esp + 0x24], edx
xor eax, ecx
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
xor ebx, ecx
xor eax, ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x34], esi
mov eax, esi
shr eax, 8
xor eax, esi
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, esi
mov eax, edx
shl eax, 0xc
and eax, 0xa000a000
mov ecx, edx
and edx, 0x55555555
or edx, eax
shr ecx, 4
and ecx, 0xaaa0aaa
or edx, ecx
mov dword [esp + 4], edx
mov dword [esp + 0x14], edi
mov eax, edi
shr eax, 8
xor eax, edi
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, edi
mov eax, edx
shl eax, 0xc
and eax, 0xa000a000
mov ecx, edx
and edx, 0x55555555
or edx, eax
shr ecx, 4
and ecx, 0xaaa0aaa
or edx, ecx
mov dword [esp + 8], edx
mov dword [esp + 0x1c], ebx
mov eax, ebx
shr eax, 8
xor eax, ebx
and eax, 0xcc00cc
mov ecx, eax
shl ecx, 8
or ecx, eax
xor ecx, ebx
mov eax, ecx
shl eax, 0xc
and eax, 0xa000a000
mov edx, ecx
and ecx, 0x55555555
or ecx, eax
shr edx, 4
and edx, 0xaaa0aaa
or ecx, edx
mov dword [esp + 0x2c], ecx
mov eax, ebp
shr eax, 8
xor eax, ebp
and eax, 0xcc00cc
mov ecx, eax
shl ecx, 8
or ecx, eax
xor ecx, ebp
mov eax, ecx
shl eax, 0xc
and eax, 0xa000a000
mov edx, ecx
and ecx, 0x55555555
or ecx, eax
shr edx, 4
and edx, 0xaaa0aaa
or ecx, edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0xc]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov esi, eax
shl esi, 8
or esi, eax
xor esi, ecx
mov eax, esi
shl eax, 0xc
and eax, 0xa000a000
mov edx, esi
and esi, 0x55555555
or esi, eax
shr edx, 4
and edx, 0xaaa0aaa
or esi, edx
mov dword [esp], esi
mov ecx, dword [esp + 0x20]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov ebx, eax
shl ebx, 8
or ebx, eax
xor ebx, ecx
mov eax, ebx
shl eax, 0xc
and eax, 0xa000a000
mov edx, ebx
and ebx, 0x55555555
or ebx, eax
shr edx, 4
and edx, 0xaaa0aaa
or ebx, edx
mov edi, dword [esp + 0x24]
mov eax, edi
shr eax, 8
xor eax, edi
and eax, 0xcc00cc
mov esi, eax
shl esi, 8
or esi, eax
xor esi, edi
mov eax, esi
shl eax, 0xc
and eax, 0xa000a000
mov edx, esi
and esi, 0x55555555
or esi, eax
shr edx, 4
and edx, 0xaaa0aaa
or esi, edx
mov edx, dword [esp + 0x30]
mov eax, edx
shr eax, 8
xor eax, edx
and eax, 0xcc00cc
mov ecx, eax
shl ecx, 8
or ecx, eax
xor ecx, edx
mov eax, ecx
shl eax, 0xc
and eax, 0xa000a000
mov edx, ecx
and ecx, 0x55555555
or ecx, eax
shr edx, 4
and edx, 0xaaa0aaa
or ecx, edx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x34]
and ecx, 0xf1111111
mov eax, dword [esp + 4]
shr eax, 1
and eax, 0x77777777
lea edx, [eax + ecx*8]
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x14]
and ecx, 0xf1111111
mov eax, dword [esp + 8]
shr eax, 1
and eax, 0x77777777
lea eax, [eax + ecx*8]
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 0x1c]
and ecx, 0xf1111111
mov eax, dword [esp + 0x2c]
shr eax, 1
and eax, 0x77777777
lea eax, [eax + ecx*8]
mov dword [esp + 0x14], eax
and ebp, 0xf1111111
mov eax, dword [esp + 0x28]
shr eax, 1
and eax, 0x77777777
lea ebp, [eax + ebp*8]
mov ecx, dword [esp + 0xc]
and ecx, 0xf1111111
mov eax, dword [esp]
shr eax, 1
and eax, 0x77777777
lea eax, [eax + ecx*8]
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x20]
and ecx, 0xf1111111
mov eax, ebx
shr eax, 1
and eax, 0x77777777
lea eax, [eax + ecx*8]
mov dword [esp + 0xc], eax
and edi, 0xf1111111
mov eax, esi
shr eax, 1
and eax, 0x77777777
lea eax, [eax + edi*8]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x30]
and ecx, 0xf1111111
mov eax, dword [esp + 0x18]
shr eax, 1
and eax, 0x77777777
lea eax, [eax + ecx*8]
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 4]
xor ecx, edx
mov dword [esp + 4], ecx
mov eax, ecx
and eax, 0xf3333333
mov edx, ecx
shr edx, 2
and edx, 0x33333333
lea eax, [edx + eax*4]
mov dword [esp + 0x30], eax
mov edx, dword [esp + 8]
mov edi, dword [esp + 0x34]
xor edx, edi
mov eax, edx
mov dword [esp + 8], edx
and eax, 0xf3333333
shr edx, 2
and edx, 0x33333333
lea eax, [edx + eax*4]
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x2c]
xor ecx, dword [esp + 0x14]
xor dword [esp + 0x28], ebp
mov eax, dword [esp + 0x18]
xor eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
xor ebp, eax
xor ebp, ecx
mov eax, ecx
and ecx, 0xf3333333
shr eax, 2
and eax, 0x33333333
lea eax, [eax + ecx*4]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 4]
xor eax, edi
mov edi, dword [esp]
mov edx, dword [esp + 0x3c]
xor edi, edx
mov ecx, dword [esp + 0x18]
xor dword [esp + 0x10], ecx
xor eax, ecx
mov dword [esp + 4], eax
mov dword [esp + 0x34], ecx
mov dword [esp], ecx
xor ecx, edx
mov edx, dword [esp + 0x28]
xor ecx, edx
mov dword [esp + 0x18], ecx
mov eax, edx
and edx, 0xf3333333
shr eax, 2
and eax, 0x33333333
lea eax, [eax + edx*4]
mov dword [esp + 0x3c], eax
mov edx, edi
and edx, 0xf3333333
mov eax, edi
mov ecx, edi
shr eax, 2
and eax, 0x33333333
lea eax, [eax + edx*4]
mov dword [esp + 0x28], eax
xor ebx, dword [esp + 0xc]
mov eax, ebx
and eax, 0xf3333333
mov edi, ebx
shr edi, 2
and edi, 0x33333333
lea eax, [edi + eax*4]
mov dword [esp + 0x38], eax
xor esi, dword [esp + 0x20]
mov edi, esi
and edi, 0xf3333333
mov edx, esi
shr edx, 2
and edx, 0x33333333
lea eax, [edx + edi*4]
mov dword [esp + 0x44], eax
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x34]
and eax, 0xf3333333
mov edx, dword [esp]
shr edx, 2
and edx, 0x33333333
lea eax, [edx + eax*4]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x10]
xor eax, dword [esp + 0x30]
mov edx, dword [esp + 8]
xor edx, dword [esp + 0x14]
xor edx, dword [esp + 0x2c]
mov dword [esp + 8], edx
xor ebp, dword [esp + 0x3c]
xor ecx, dword [esp + 0xc]
xor ecx, dword [esp + 0x38]
mov dword [esp], ecx
xor ebx, dword [esp + 0x20]
xor ebx, dword [esp + 0x44]
xor esi, dword [esp + 0x1c]
xor esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
xor edi, dword [esp + 0x24]
xor ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x4c]
xor eax, dword [edx]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x4c]
xor edi, dword [eax + 4]
mov dword [esp + 4], edi
mov edi, dword [esp + 8]
xor edi, dword [eax + 8]
mov dword [esp + 0xc], edi
xor ebp, dword [eax + 0xc]
xor ecx, dword [eax + 0x10]
mov edx, dword [esp]
xor edx, dword [eax + 0x14]
mov dword [esp], edx
xor ebx, dword [eax + 0x18]
xor esi, dword [eax + 0x1c]
add eax, 0x20
add dword [esp + 0x58], 0xffffffff
jne 0x49af50
mov dword [esp + 8], ebp
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x54]
lea eax, [eax + ecx*4]
mov dword [esp + 0x4c], eax
mov ebp, dword [esp + 0xc]
mov edi, ebp
xor edi, dword [esp + 0x18]
mov dword [esp + 0x34], edi
mov ecx, dword [esp + 4]
xor ecx, esi
mov edx, esi
mov dword [esp + 0x44], ecx
mov esi, dword [esp]
xor esi, ebx
mov dword [esp], esi
xor ecx, edi
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 8]
xor eax, ecx
mov ecx, ebp
xor ebp, eax
xor eax, ebx
mov dword [esp + 0x14], edx
xor ecx, edx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x10]
xor ecx, esi
mov dword [esp + 8], ecx
mov ebx, dword [esp + 0x18]
xor ecx, ebx
mov dword [esp + 0x38], ecx
xor ebx, edx
mov edx, ebp
xor edx, esi
mov edi, eax
xor edi, ebx
mov dword [esp + 0x18], ebx
mov ecx, edx
mov esi, edx
xor ecx, edi
mov dword [esp + 0x28], ecx
mov edx, edi
mov dword [esp + 0x2c], edi
and edx, ebx
mov edi, ecx
and edi, dword [esp + 0x34]
xor edi, edx
mov ecx, esi
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x30]
and ecx, esi
xor ecx, edx
mov ebx, dword [esp + 4]
xor ebx, dword [esp + 8]
mov dword [esp + 4], ebx
xor ebx, esi
mov dword [esp + 0x24], ebx
mov esi, ebp
mov ebx, dword [esp + 0x10]
xor esi, ebx
mov dword [esp + 0x3c], esi
mov dword [esp + 0xc], ebp
and ebp, dword [esp + 0x1c]
mov edx, esi
and edx, dword [esp + 0x24]
xor eax, ebp
xor eax, edx
mov edx, dword [esp + 0x38]
and edx, ebx
xor edx, dword [esp + 0x30]
xor edx, dword [esp + 0x20]
xor edx, ebp
mov ebp, dword [esp]
mov ebx, dword [esp + 0x2c]
xor ebp, ebx
mov dword [esp], ebp
mov esi, dword [esp + 4]
and esi, dword [esp + 8]
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x44]
or ebp, esi
xor ebp, dword [esp + 0x40]
xor eax, edi
xor ebp, edi
mov edi, dword [esp + 8]
xor edi, dword [esp + 0x14]
mov dword [esp + 0x40], edi
mov edi, esi
not edi
and edi, dword [esp]
xor edi, dword [esp + 0x14]
xor ebx, dword [esp + 0x10]
mov dword [esp + 0x14], ebx
and ebx, dword [esp + 0x40]
xor edx, ecx
xor ecx, ebx
xor ecx, edi
mov esi, eax
xor esi, edx
and eax, ebp
mov ebx, eax
xor ebx, ecx
mov dword [esp + 0x48], ebx
and ebx, esi
xor ebx, edx
mov edi, ecx
xor edi, ebp
xor edx, eax
and edx, edi
mov edi, edx
xor edx, eax
xor edi, ecx
and edx, ecx
xor ebp, edx
xor edx, dword [esp + 0x48]
and edx, ebx
xor edx, esi
and dword [esp + 0xc], ebp
mov ecx, ebp
and ebp, dword [esp + 0x1c]
mov eax, edi
xor ecx, edi
mov esi, edx
xor esi, ecx
mov dword [esp + 0x1c], esi
and dword [esp + 0x3c], ecx
and ecx, dword [esp + 0x24]
mov dword [esp + 0x24], ecx
mov esi, ebx
mov edi, ebx
xor edi, eax
and dword [esp + 0x10], eax
and eax, dword [esp + 0x38]
mov dword [esp + 0x38], eax
mov ebx, edx
xor ebx, esi
and dword [esp], ebx
and ebx, dword [esp + 0x44]
and dword [esp + 8], edx
and edx, dword [esp + 4]
mov ecx, dword [esp + 0x14]
and ecx, esi
and esi, dword [esp + 0x40]
mov dword [esp + 4], esi
mov eax, dword [esp + 0x1c]
mov esi, eax
xor esi, edi
and dword [esp + 0x2c], edi
and edi, dword [esp + 0x18]
and dword [esp + 0x28], esi
and esi, dword [esp + 0x34]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x20]
and esi, eax
and eax, dword [esp + 0x30]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x24]
xor dword [esp + 0x38], eax
xor eax, ebp
mov dword [esp + 0x24], eax
xor edx, ecx
mov ebp, ebx
xor ebp, dword [esp + 0x10]
xor ecx, dword [esp + 0x10]
mov dword [esp + 0x14], ecx
mov eax, dword [esp]
xor dword [esp + 0xc], eax
mov ecx, dword [esp + 0x2c]
xor ecx, dword [esp]
xor esi, dword [esp + 0x28]
mov dword [esp + 0x20], esi
xor ecx, dword [esp + 0x28]
xor ebx, edx
xor ebp, dword [esp + 0xc]
mov esi, dword [esp + 4]
xor esi, ebp
xor ebp, edx
xor edi, dword [esp + 0x18]
xor ebp, edi
mov eax, edi
mov edi, dword [esp + 8]
xor eax, edi
mov edx, dword [esp + 0x20]
xor edx, eax
xor eax, dword [esp + 0x24]
xor edi, ecx
mov dword [esp + 8], edi
mov edi, dword [esp + 0x3c]
xor edi, eax
xor eax, ecx
mov dword [esp], eax
xor esi, edx
mov dword [esp + 4], esi
xor edx, ebx
mov eax, dword [esp + 0xc]
xor eax, edi
mov dword [esp + 0xc], eax
xor edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
xor ecx, dword [esp + 0x18]
mov esi, eax
mov eax, dword [esp + 8]
xor esi, eax
mov dword [esp + 0x10], esi
xor ecx, eax
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 4]
xor eax, esi
xor ecx, esi
mov dword [esp + 0x1c], ecx
mov ecx, ebp
shr ecx, 8
xor ecx, ebp
and ecx, 0xcc00cc
mov ebx, ecx
shl ebx, 8
or ebx, ecx
xor ebx, ebp
mov ecx, ebx
shl ecx, 0xc
and ecx, 0xa000a000
mov esi, ebx
and ebx, 0x55555555
or ebx, ecx
shr esi, 4
and esi, 0xaaa0aaa
or ebx, esi
mov dword [esp + 8], ebx
mov ecx, edx
shr ecx, 8
xor ecx, edx
and ecx, 0xcc00cc
mov ebx, ecx
shl ebx, 8
or ebx, ecx
xor ebx, edx
mov ecx, ebx
shl ecx, 0xc
and ecx, 0xa000a000
mov esi, ebx
and ebx, 0x55555555
or ebx, ecx
shr esi, 4
and esi, 0xaaa0aaa
or ebx, esi
mov dword [esp + 0x14], ebx
mov ecx, eax
shr ecx, 8
xor ecx, eax
and ecx, 0xcc00cc
mov edx, ecx
shl edx, 8
or edx, ecx
xor edx, eax
mov ecx, edx
shl ecx, 0xc
and ecx, 0xa000a000
mov esi, edx
and edx, 0x55555555
or edx, ecx
shr esi, 4
and esi, 0xaaa0aaa
or edx, esi
mov dword [esp + 0x20], edx
mov ecx, edi
shr ecx, 8
xor ecx, edi
and ecx, 0xcc00cc
mov eax, ecx
shl eax, 8
or eax, ecx
xor eax, edi
mov ecx, eax
shl ecx, 0xc
and ecx, 0xa000a000
mov esi, eax
and eax, 0x55555555
or eax, ecx
shr esi, 4
and esi, 0xaaa0aaa
or eax, esi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xc]
mov ecx, eax
shr ecx, 8
xor ecx, eax
and ecx, 0xcc00cc
mov ebx, ecx
shl ebx, 8
or ebx, ecx
xor ebx, eax
mov ecx, ebx
shl ecx, 0xc
and ecx, 0xa000a000
mov esi, ebx
and ebx, 0x55555555
or ebx, ecx
shr esi, 4
and esi, 0xaaa0aaa
or ebx, esi
mov eax, dword [esp + 0x1c]
mov ecx, eax
shr ecx, 8
xor ecx, eax
and ecx, 0xcc00cc
mov edi, ecx
shl edi, 8
or edi, ecx
xor edi, eax
mov ecx, edi
shl ecx, 0xc
and ecx, 0xa000a000
mov esi, edi
and edi, 0x55555555
or edi, ecx
shr esi, 4
and esi, 0xaaa0aaa
or edi, esi
mov eax, dword [esp + 0x10]
mov ecx, eax
shr ecx, 8
xor ecx, eax
and ecx, 0xcc00cc
mov esi, ecx
shl esi, 8
or esi, ecx
xor esi, eax
mov ecx, esi
shl ecx, 0xc
and ecx, 0xa000a000
mov edx, esi
and esi, 0x55555555
or esi, ecx
shr edx, 4
and edx, 0xaaa0aaa
or esi, edx
mov ecx, dword [esp]
mov eax, ecx
shr eax, 8
xor eax, ecx
mov edx, ecx
and eax, 0xcc00cc
mov ecx, eax
shl ecx, 8
or ecx, eax
xor ecx, edx
mov eax, ecx
shl eax, 0xc
and eax, 0xa000a000
mov edx, ecx
and ecx, 0x55555555
or ecx, eax
shr edx, 4
and edx, 0xaaa0aaa
mov eax, dword [esp + 0x4c]
mov ebp, dword [esp + 8]
xor ebp, dword [eax]
mov dword [esp + 8], ebp
mov ebp, dword [esp + 0x14]
xor ebp, dword [eax + 4]
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x20]
xor ebp, dword [eax + 8]
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0x28]
xor ebp, dword [eax + 0xc]
mov dword [esp + 0x28], ebp
xor ebx, dword [eax + 0x10]
mov dword [esp + 0x1c], ebx
xor edi, dword [eax + 0x14]
mov dword [esp + 0x30], edi
xor esi, dword [eax + 0x18]
mov dword [esp + 0x2c], esi
or ecx, edx
xor ecx, dword [eax + 0x1c]
mov dword [esp + 0x24], ecx
xor ecx, ecx
mov al, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
shr eax, cl
shl eax, 0x10
mov edx, dword [esp + 0x30]
shr edx, cl
movzx edx, dx
or edx, eax
mov dword [esp], edx
mov eax, dword [esp + 0x28]
shr eax, cl
shl eax, 0x10
mov edx, dword [esp + 0x14]
shr edx, cl
movzx esi, dx
mov edx, dword [esp + 0x2c]
shr edx, cl
or esi, eax
mov ebp, esi
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x1c]
shr eax, cl
shl edx, 0x10
mov esi, dword [esp + 0x20]
shr esi, cl
movzx eax, ax
mov edi, dword [esp + 8]
shr edi, cl
or eax, edx
shl esi, 0x10
movzx ecx, di
or ecx, esi
mov ebx, ecx
shr ebx, 8
xor ebx, ebp
mov edx, 0xff00ff
and ebx, edx
mov ebp, ebx
shl ebp, 8
xor ebp, ecx
mov esi, eax
shr esi, 8
xor esi, dword [esp]
and esi, edx
mov ecx, esi
shl ecx, 8
xor ecx, eax
mov eax, ecx
shl eax, 4
xor eax, ebp
and eax, 0xf0f0f0f0
mov edi, 0x10000001
mul edi
mov dword [esp + 4], eax
mov dword [esp + 0x18], edx
xor ebx, dword [esp + 0x10]
xor esi, dword [esp]
mov eax, esi
shl eax, 4
xor eax, ebx
and eax, 0xf0f0f0f0
mul edi
mov edi, dword [esp + 0x18]
xor edi, ecx
xor dword [esp + 4], ebp
xor edx, esi
xor eax, ebx
mov dword [esp], eax
mov ecx, edi
shr ecx, 0xe
xor ecx, edi
mov esi, 0xcccc
and ecx, esi
mov ebp, ecx
shl ebp, 0xe
add ebp, ecx
mov eax, dword [esp + 4]
mov ecx, eax
shr ecx, 0xe
xor ecx, eax
and ecx, esi
mov esi, ecx
shl esi, 0xe
add esi, ecx
xor esi, eax
xor ebp, edi
mov eax, edx
mov edi, edx
shr edi, 0xe
xor edi, edx
mov ecx, 0xcccc
and edi, ecx
mov ecx, edi
shl ecx, 0xe
add ecx, edi
mov eax, dword [esp]
mov ebx, eax
shr ebx, 0xe
xor ebx, eax
mov edi, 0xcccc
and ebx, edi
mov edi, ebx
shl edi, 0xe
add edi, ebx
xor edi, eax
xor ecx, edx
mov dword [esp], ecx
mov edx, esi
shr edx, 7
xor edx, esi
mov ecx, 0xaa00aa
and edx, ecx
mov eax, edx
shl eax, 7
add eax, edx
mov edx, ebp
shr edx, 7
xor edx, ebp
and edx, ecx
xor eax, esi
mov ecx, dword [esp + 0x50]
mov byte [ecx], al
mov byte [ecx + 1], ah
mov ebx, eax
shr ebx, 0x10
mov byte [ecx + 2], bl
mov ebx, edx
shl ebx, 7
add ebx, edx
xor ebx, ebp
mov edx, edi
shr edx, 7
xor edx, edi
mov ebp, 0xaa00aa
and edx, ebp
shr eax, 0x18
mov byte [ecx + 3], al
mov byte [ecx + 4], bl
mov byte [ecx + 5], bh
mov eax, ebx
shr eax, 0x10
mov byte [ecx + 6], al
mov eax, edx
shl eax, 7
add eax, edx
xor eax, edi
mov edx, dword [esp]
mov esi, edx
shr esi, 7
xor esi, edx
mov edi, edx
and esi, ebp
shr ebx, 0x18
mov byte [ecx + 7], bl
mov byte [ecx + 8], al
mov byte [ecx + 9], ah
mov edx, eax
shr edx, 0x10
mov byte [ecx + 0xa], dl
mov edx, esi
shl edx, 7
add edx, esi
xor edx, edi
shr eax, 0x18
mov byte [ecx + 0xb], al
mov byte [ecx + 0xc], dl
mov byte [ecx + 0xd], dh
mov eax, edx
shr eax, 0x10
mov byte [ecx + 0xe], al
shr edx, 0x18
mov byte [ecx + 0xf], dl
add ecx, 0x10
mov dword [esp + 0x50], ecx
mov ecx, 0x10
test byte [esp + 0xc], 1
mov eax, 0
jne 0x49bac0
add esp, 0x5c
pop esi
pop edi
pop ebx
pop ebp
ret