Function at 0x406510
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2ec
mov eax, dword [0x423004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov dword [ebp - 0x2e8], ecx
lea edi, [ebp - 0x288]
mov ecx, 0x20
mov dword [ebp - 0x2b4], 0x40
mov esi, edx
lea eax, [ebp - 0x218]
rep movsd dword es:[edi], dword [esi]
nop dword [eax + eax]
mov ebx, dword [eax]
mov ecx, ebx
mov edi, dword [eax + 4]
mov edx, edi
shl ecx, 0xd
shr edx, 0x13
or edx, ecx
mov ecx, ebx
shr ecx, 0x13
lea esi, [edi*8]
mov dword [ebp - 0x28c], edx
mov edx, edi
shl edx, 0xd
or edx, ecx
mov ecx, ebx
shr ecx, 0x1d
or esi, ecx
mov dword [ebp - 0x2b0], edx
xor dword [ebp - 0x28c], esi
lea ecx, [ebx*8]
mov esi, dword [ebp - 0x2b0]
mov edx, edi
shr edx, 0x1d
or edx, ecx
shr edi, 6
mov ecx, ebx
xor esi, edx
mov edx, dword [eax - 0x68]
shl ecx, 0x1a
or edi, ecx
shr ebx, 6
xor dword [ebp - 0x28c], edi
xor esi, ebx
mov edi, dword [eax - 0x64]
mov ebx, edx
shl ebx, 0x1f
mov ecx, edi
shr ecx, 1
or ebx, ecx
mov dword [ebp - 0x2b0], esi
mov dword [ebp - 0x2b8], ebx
mov ecx, edi
shl ecx, 0x1f
mov ebx, edx
shr ebx, 1
mov esi, edx
or ebx, ecx
shl esi, 0x18
mov ecx, edi
shr edx, 8
shr ecx, 8
or esi, ecx
mov ecx, edi
xor dword [ebp - 0x2b8], esi
mov esi, dword [ebp - 0x2b8]
shl ecx, 0x18
or edx, ecx
shr edi, 7
xor ebx, edx
mov edx, dword [eax - 0x68]
mov ecx, edx
shr edx, 7
xor ebx, edx
shl ecx, 0x19
mov edx, dword [ebp - 0x28c]
or ecx, edi
xor esi, ecx
mov ecx, dword [eax - 0x24]
add edx, esi
cmp edx, esi
sbb edi, edi
neg edi
lea esi, [ecx + edx]
mov edx, dword [eax - 0x6c]
add edi, ebx
add edi, dword [ebp - 0x2b0]
cmp esi, ecx
sbb ebx, ebx
neg ebx
add ebx, dword [eax - 0x28]
add ebx, edi
lea ecx, [edx + esi]
cmp ecx, edx
mov dword [eax + 0x14], ecx
lea eax, [eax + 8]
sbb ecx, ecx
neg ecx
add ecx, dword [eax - 0x78]
add ecx, ebx
sub dword [ebp - 0x2b4], 1
mov dword [eax + 8], ecx
jne 0x406550
mov eax, dword [ebp - 0x2e8]
mov ebx, dword [eax + 8]
mov ecx, dword [eax]
mov edx, dword [eax + 0x14]
mov esi, dword [eax + 0x10]
mov edi, dword [eax + 0x1c]
mov dword [ebp - 0x2a0], ebx
mov ebx, dword [eax + 0x18]
mov dword [ebp - 0x2a8], ebx
mov ebx, dword [eax + 0x20]
mov dword [ebp - 0x298], ebx
mov ebx, dword [eax + 0x28]
mov dword [ebp - 0x294], ebx
mov ebx, dword [eax + 0x2c]
mov dword [ebp - 0x2ac], ecx
mov ecx, dword [eax + 4]
mov dword [ebp - 0x2b4], ebx
mov ebx, dword [eax + 0x30]
mov dword [ebp - 0x2cc], ecx
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0x29c], ebx
mov ebx, dword [eax + 0x34]
mov dword [ebp - 0x2bc], ecx
mov dword [ebp - 0x2c0], edx
and edx, ecx
mov dword [ebp - 0x2b0], ebx
mov ecx, esi
mov ebx, dword [eax + 0x38]
and ecx, dword [eax + 8]
mov dword [ebp - 0x2c4], edi
mov edi, dword [eax + 0x24]
mov dword [ebp - 0x290], ebx
mov ebx, dword [eax + 0x3c]
xor eax, eax
mov dword [ebp - 0x2a4], esi
mov dword [ebp - 0x2b8], edi
mov dword [ebp - 0x28c], ebx
mov dword [ebp - 0x2dc], edx
mov dword [ebp - 0x2e0], ecx
mov dword [ebp - 0x2d4], eax
nop word [eax + eax]
mov ecx, dword [ebp - 0x298]
mov eax, edi
shr eax, 0xe
mov esi, ecx
mov ebx, ecx
shl esi, 0x12
or esi, eax
shr ebx, 0xe
mov edx, ecx
mov eax, edi
shl eax, 0x12
or ebx, eax
shl edx, 0xe
shr ecx, 0x12
mov eax, edi
shr eax, 0x12
or edx, eax
mov eax, edi
shl eax, 0xe
xor esi, edx
or ecx, eax
mov eax, edi
xor ebx, ecx
shl eax, 0x17
mov ecx, dword [ebp - 0x298]
mov edx, ecx
shr edx, 9
or edx, eax
shl ecx, 0x17
xor esi, edx
mov eax, edi
mov edx, dword [ebp - 0x2b0]
shr eax, 9
or ecx, eax
mov eax, edi
mov edi, dword [ebp - 0x29c]
xor ebx, ecx
mov ecx, dword [ebp - 0x298]
not eax
and edx, eax
not ecx
mov eax, dword [ebp - 0x294]
and edi, ecx
and eax, dword [ebp - 0x298]
mov ecx, dword [ebp - 0x2b4]
xor edi, eax
and ecx, dword [ebp - 0x2b8]
xor edx, ecx
lea ecx, [edx + esi]
cmp ecx, edx
sbb esi, esi
neg esi
add esi, edi
add esi, ebx
mov ebx, dword [ebp - 0x2d4]
mov eax, dword [ebx + 0x421204]
add ecx, eax
cmp ecx, eax
mov eax, dword [ebp + ebx - 0x284]
sbb edx, edx
add ecx, eax
neg edx
add edx, dword [ebx + 0x421200]
add edx, esi
mov esi, dword [ebp - 0x2cc]
cmp ecx, eax
sbb eax, eax
neg eax
add eax, dword [ebp + ebx - 0x288]
mov ebx, esi
add eax, edx
mov edx, dword [ebp - 0x28c]
add ecx, edx
cmp ecx, edx
mov dword [ebp - 0x28c], ecx
sbb ecx, ecx
neg ecx
add ecx, dword [ebp - 0x290]
add ecx, eax
shr ebx, 0x1c
mov dword [ebp - 0x2d8], ecx
mov ecx, dword [ebp - 0x2ac]
mov edx, esi
mov eax, ecx
shl edx, 0x1e
shl eax, 4
mov edi, ecx
or ebx, eax
shr edi, 0x1c
mov eax, esi
shl eax, 4
or edi, eax
mov eax, ecx
shr eax, 2
or edx, eax
shl ecx, 0x1e
xor ebx, edx
mov eax, esi
shr eax, 2
or ecx, eax
mov eax, esi
xor edi, ecx
shl eax, 0x19
mov ecx, dword [ebp - 0x2ac]
mov edx, ecx
shr edx, 7
or edx, eax
shl ecx, 0x19
xor ebx, edx
mov eax, esi
shr eax, 7
or ecx, eax
mov eax, dword [ebp - 0x2bc]
and eax, esi
xor edi, ecx
mov ecx, dword [ebp - 0x2c0]
mov edx, eax
and ecx, dword [ebp - 0x2cc]
mov dword [ebp - 0x2e4], eax
xor edx, ecx
mov eax, dword [ebp - 0x2a0]
and eax, dword [ebp - 0x2ac]
xor edx, dword [ebp - 0x2dc]
mov esi, eax
mov dword [ebp - 0x2c8], eax
mov eax, dword [ebp - 0x2a4]
and eax, dword [ebp - 0x2ac]
xor esi, eax
lea eax, [edx + ebx]
xor esi, dword [ebp - 0x2e0]
cmp eax, ebx
mov edx, dword [ebp - 0x28c]
sbb ecx, ecx
neg ecx
add ecx, esi
mov esi, dword [ebp - 0x2c4]
add ecx, edi
lea ebx, [esi + edx]
cmp ebx, esi
mov dword [ebp - 0x290], ebx
sbb ebx, ebx
add eax, edx
neg ebx
mov dword [ebp - 0x2c4], eax
add ebx, dword [ebp - 0x2a8]
add ebx, dword [ebp - 0x2d8]
cmp eax, edx
mov edi, ebx
mov dword [ebp - 0x28c], ebx
sbb eax, eax
shl edi, 0x12
neg eax
shr ebx, 0xe
add eax, dword [ebp - 0x2d8]
add eax, ecx
mov ecx, dword [ebp - 0x290]
mov dword [ebp - 0x2a8], eax
mov eax, ecx
shr eax, 0xe
or edi, eax
mov eax, ecx
shl eax, 0x12
mov esi, dword [ebp - 0x28c]
or ebx, eax
mov eax, ecx
mov edx, esi
shr eax, 0x12
mov ecx, esi
shr ecx, 0x12
shl edx, 0xe
or edx, eax
mov eax, dword [ebp - 0x290]
shl eax, 0xe
xor edi, edx
or ecx, eax
mov edx, esi
mov eax, dword [ebp - 0x290]
xor ebx, ecx
shl eax, 0x17
mov ecx, esi
shl ecx, 0x17
shr edx, 9
or edx, eax
mov eax, dword [ebp - 0x290]
shr eax, 9
xor edi, edx
or ecx, eax
mov edx, dword [ebp - 0x2b4]
mov eax, dword [ebp - 0x290]
xor ebx, ecx
mov ecx, esi
not eax
mov esi, dword [ebp - 0x294]
and edx, eax
mov eax, dword [ebp - 0x28c]
not ecx
and eax, dword [ebp - 0x298]
and esi, ecx
mov ecx, dword [ebp - 0x290]
xor esi, eax
and ecx, dword [ebp - 0x2b8]
xor edx, ecx
lea ecx, [edx + edi]
cmp ecx, edx
sbb edx, edx
neg edx
add edx, esi
add edx, ebx
mov ebx, dword [ebp - 0x2d4]
mov eax, dword [ebx + 0x42120c]
add ecx, eax
cmp ecx, eax
mov eax, dword [ebp + ebx - 0x27c]
sbb esi, esi
add ecx, eax
neg esi
add esi, dword [ebx + 0x421208]
add esi, edx
cmp ecx, eax
sbb eax, eax
add ecx, dword [ebp - 0x2b0]
neg eax
mov dword [ebp - 0x2d8], ecx
add eax, dword [ebp + ebx - 0x280]
add eax, esi
cmp ecx, dword [ebp - 0x2b0]
mov esi, dword [ebp - 0x2c4]
mov ebx, esi
sbb ecx, ecx
shr ebx, 0x1c
neg ecx
add ecx, eax
add ecx, dword [ebp - 0x29c]
mov dword [ebp - 0x2e0], ecx
mov ecx, dword [ebp - 0x2a8]
mov eax, ecx
shl eax, 4
mov edi, ecx
or ebx, eax
shr edi, 0x1c
mov eax, esi
shl eax, 4
or edi, eax
mov eax, ecx
mov edx, esi
shr eax, 2
shl edx, 0x1e
or edx, eax
shl ecx, 0x1e
xor ebx, edx
mov eax, esi
shr eax, 2
or ecx, eax
mov eax, esi
shl eax, 0x19
xor edi, ecx
mov ecx, dword [ebp - 0x2a8]
mov edx, ecx
shr edx, 7
or edx, eax
shl ecx, 0x19
xor ebx, edx
mov eax, esi
shr eax, 7
or ecx, eax
mov eax, dword [ebp - 0x2cc]
and eax, esi
xor edi, ecx
mov ecx, dword [ebp - 0x2bc]
mov edx, eax
and ecx, dword [ebp - 0x2c4]
mov dword [ebp - 0x2dc], eax
xor edx, ecx
xor edx, dword [ebp - 0x2e4]
mov eax, dword [ebp - 0x2ac]
and eax, dword [ebp - 0x2a8]
mov esi, eax
mov dword [ebp - 0x2d0], eax
mov eax, dword [ebp - 0x2a0]
and eax, dword [ebp - 0x2a8]
xor esi, eax
lea eax, [edx + ebx]
xor esi, dword [ebp - 0x2c8]
cmp eax, ebx
mov edx, dword [ebp - 0x2d8]
sbb ecx, ecx
neg ecx
add ecx, esi
mov esi, dword [ebp - 0x2c0]
add ecx, edi
lea ebx, [esi + edx]
cmp ebx, esi
mov dword [ebp - 0x29c], ebx
sbb ebx, ebx
add eax, edx
neg ebx
mov dword [ebp - 0x2c0], eax
add ebx, dword [ebp - 0x2a4]
add ebx, dword [ebp - 0x2e0]
cmp eax, edx
mov edi, ebx
mov dword [ebp - 0x2b0], ebx
sbb eax, eax
mov esi, dword [ebp - 0x2b0]
neg eax
shl edi, 0x12
add eax, dword [ebp - 0x2e0]
mov edx, esi
add eax, ecx
shr ebx, 0xe
mov ecx, dword [ebp - 0x29c]
mov dword [ebp - 0x2a4], eax
mov eax, ecx
shr eax, 0xe
or edi, eax
shl edx, 0xe
mov eax, ecx
shl eax, 0x12
or ebx, eax
mov eax, ecx
shr eax, 0x12
mov ecx, esi
or edx, eax
shr ecx, 0x12
mov eax, dword [ebp - 0x29c]
xor edi, edx
shl eax, 0xe
mov edx, esi
or ecx, eax
shr edx, 9
mov eax, dword [ebp - 0x29c]
xor ebx, ecx
shl eax, 0x17
mov ecx, esi
or edx, eax
shl ecx, 0x17
mov eax, dword [ebp - 0x29c]
xor edi, edx
mov edx, dword [ebp - 0x29c]
not esi
and esi, dword [ebp - 0x298]
not edx
and edx, dword [ebp - 0x2b8]
shr eax, 9
or ecx, eax
mov eax, dword [ebp - 0x28c]
and eax, dword [ebp - 0x2b0]
xor ebx, ecx
mov ecx, dword [ebp - 0x290]
xor esi, eax
and ecx, dword [ebp - 0x29c]
xor edx, ecx
lea ecx, [edx + edi]
cmp ecx, edx
sbb edx, edx
neg edx
add edx, esi
add edx, ebx
mov ebx, dword [ebp - 0x2d4]
mov eax, dword [ebx + 0x421214]
add ecx, eax
cmp ecx, eax
mov eax, dword [ebp + ebx - 0x274]
sbb esi, esi
add ecx, eax
neg esi
add esi, dword [ebx + 0x421210]
add esi, edx
cmp ecx, eax
sbb eax, eax
add ecx, dword [ebp - 0x2b4]
neg eax
mov dword [ebp - 0x2c8], ecx
add eax, dword [ebp + ebx - 0x278]
add eax, esi
cmp ecx, dword [ebp - 0x2b4]
mov esi, dword [ebp - 0x2c0]
sbb ecx, ecx
neg ecx
add ecx, dword [ebp - 0x294]
add ecx, eax
mov eax, esi
mov dword [ebp - 0x2e4], ecx
mov ecx, dword [ebp - 0x2a4]
mov ebx, ecx
shr eax, 0x1c
mov edi, ecx
shl ebx, 4
mov edx, ecx
or ebx, eax
shr edi, 0x1c
mov eax, esi
shr edx, 2
shl eax, 4
or edi, eax
shl ecx, 0x1e
mov eax, esi
shl eax, 0x1e
or edx, eax
mov eax, esi
shr eax, 2
xor ebx, edx
or ecx, eax
xor edi, ecx
mov ecx, dword [ebp - 0x2a4]
mov edx, ecx
mov eax, esi
shl eax, 0x19
shr edx, 7
or edx, eax
shl ecx, 0x19
xor ebx, edx
mov eax, esi
shr eax, 7
or ecx, eax
mov eax, dword [ebp - 0x2c4]
and eax, esi
xor edi, ecx
mov ecx, dword [ebp - 0x2cc]
mov edx, eax
and ecx, dword [ebp - 0x2c0]
mov dword [ebp - 0x2d8], eax
xor edx, ecx
xor edx, dword [ebp - 0x2dc]
mov eax, dword [ebp - 0x2a8]
and eax, dword [ebp - 0x2a4]
mov esi, eax
mov dword [ebp - 0x2e0], eax
mov eax, dword [ebp - 0x2ac]
and eax, dword [ebp - 0x2a4]
xor esi, eax
lea eax, [edx + ebx]
xor esi, dword [ebp - 0x2d0]
cmp eax, ebx
mov edx, dword [ebp - 0x2c8]
sbb ecx, ecx
neg ecx
add ecx, esi
mov esi, dword [ebp - 0x2bc]
add ecx, edi
lea ebx, [esi + edx]
cmp ebx, esi
mov dword [ebp - 0x294], ebx
sbb ebx, ebx
add eax, edx
neg ebx
mov dword [ebp - 0x2bc], eax
add ebx, dword [ebp - 0x2a0]
add ebx, dword [ebp - 0x2e4]
cmp eax, edx
mov edi, ebx
mov dword [ebp - 0x2b4], ebx
sbb eax, eax
mov esi, dword [ebp - 0x2b4]
neg eax
shl edi, 0x12
add eax, dword [ebp - 0x2e4]
mov edx, esi
add eax, ecx
shr ebx, 0xe
mov ecx, dword [ebp - 0x294]
mov dword [ebp - 0x2a0], eax
mov eax, ecx
shr eax, 0xe
or edi, eax
shl edx, 0xe
mov eax, ecx
shl eax, 0x12
or ebx, eax
mov eax, ecx
shr eax, 0x12
mov ecx, esi
or edx, eax
shr ecx, 0x12
mov eax, dword [ebp - 0x294]
xor edi, edx
shl eax, 0xe
mov edx, esi
or ecx, eax
shr edx, 9
mov eax, dword [ebp - 0x294]
xor ebx, ecx
shl eax, 0x17
mov ecx, esi
or edx, eax
shl ecx, 0x17
mov eax, dword [ebp - 0x294]
xor edi, edx
shr eax, 9
or ecx, eax
mov edx, dword [ebp - 0x290]
mov eax, dword [ebp - 0x294]
xor ebx, ecx
not eax
mov ecx, esi
mov esi, dword [ebp - 0x28c]
and edx, eax
mov eax, dword [ebp - 0x2b0]
not ecx
and eax, dword [ebp - 0x2b4]
and esi, ecx
mov ecx, dword [ebp - 0x29c]
xor esi, eax
and ecx, dword [ebp - 0x294]
xor edx, ecx
lea ecx, [edx + edi]
cmp ecx, edx
sbb edx, edx
neg edx
add edx, esi
add edx, ebx
mov ebx, dword [ebp - 0x2d4]
mov eax, dword [ebx + 0x42121c]
add ecx, eax
cmp ecx, eax
mov eax, dword [ebp + ebx - 0x26c]
sbb esi, esi
add ecx, eax
neg esi
add esi, dword [ebx + 0x421218]
add esi, edx
cmp ecx, eax
sbb eax, eax
add ecx, dword [ebp - 0x2b8]
neg eax
mov dword [ebp - 0x2d0], ecx
add eax, dword [ebp + ebx - 0x270]
add eax, esi
cmp ecx, dword [ebp - 0x2b8]
mov esi, dword [ebp - 0x2bc]
mov ebx, esi
sbb ecx, ecx
mov edx, esi
neg ecx
shr ebx, 0x1c
add ecx, eax
shl edx, 0x1e
add ecx, dword [ebp - 0x298]
mov dword [ebp - 0x2c8], ecx
mov ecx, dword [ebp - 0x2a0]
mov eax, ecx
shl eax, 4
mov edi, ecx
or ebx, eax
shr edi, 0x1c
mov eax, esi
shl eax, 4
or edi, eax
mov eax, ecx
shr eax, 2
or edx, eax
shl ecx, 0x1e
mov eax, esi
xor ebx, edx
shr eax, 2
or ecx, eax
mov eax, esi
xor edi, ecx
shl eax, 0x19
mov ecx, dword [ebp - 0x2a0]
mov edx, ecx
shr edx, 7
or edx, eax
shl ecx, 0x19
mov eax, esi
shr eax, 7
or ecx, eax
xor edi, ecx
xor ebx, edx
mov ecx, dword [ebp - 0x2c4]
mov eax, esi
and eax, dword [ebp - 0x2c0]
and ecx, dword [ebp - 0x2bc]
mov edx, eax
mov dword [ebp - 0x2e4], eax
xor edx, ecx
xor edx, dword [ebp - 0x2d8]
mov eax, dword [ebp - 0x2a0]
and eax, dword [ebp - 0x2a4]
mov esi, eax
mov dword [ebp - 0x2dc], eax
mov eax, dword [ebp - 0x2a8]
and eax, dword [ebp - 0x2a0]
xor esi, eax
lea eax, [edx + ebx]
xor esi, dword [ebp - 0x2e0]
cmp eax, ebx
mov edx, dword [ebp - 0x2d0]
sbb ecx, ecx
neg ecx
add ecx, esi
mov esi, dword [ebp - 0x2cc]
add ecx, edi
lea ebx, [esi + edx]
mov dword [ebp - 0x298], ebx
cmp ebx, esi
sbb ebx, ebx
add eax, edx
mov dword [ebp - 0x2b8], eax
neg ebx
add ebx, dword [ebp - 0x2ac]
add ebx, dword [ebp - 0x2c8]
cmp eax, edx
mov edi, ebx
mov dword [ebp - 0x2cc], ebx
sbb eax, eax
mov esi, dword [ebp - 0x2cc]
neg eax
shl edi, 0x12
add eax, dword [ebp - 0x2c8]
mov edx, esi
add eax, ecx
shr ebx, 0xe
mov ecx, dword [ebp - 0x298]
mov dword [ebp - 0x2ac], eax
mov eax, ecx
shr eax, 0xe
or edi, eax
shl edx, 0xe
mov eax, ecx
shl eax, 0x12
or ebx, eax
mov eax, ecx
shr eax, 0x12
mov ecx, esi
or edx, eax
shr ecx, 0x12
mov eax, dword [ebp - 0x298]
xor edi, edx
shl eax, 0xe
mov edx, esi
or ecx, eax
shr edx, 9
mov eax, dword [ebp - 0x298]
xor ebx, ecx
shl eax, 0x17
mov ecx, esi
or edx, eax
shl ecx, 0x17
mov eax, dword [ebp - 0x298]
xor edi, edx
shr eax, 9
or ecx, eax
mov eax, dword [ebp - 0x298]
xor ebx, ecx
not eax
mov ecx, esi
not ecx
mov esi, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x29c]
and esi, ecx
and edx, eax
mov ecx, dword [ebp - 0x294]
and ecx, dword [ebp - 0x298]
mov eax, dword [ebp - 0x2b4]
xor edx, ecx
and eax, dword [ebp - 0x2cc]
xor esi, eax
lea ecx, [edx + edi]
cmp ecx, edx
sbb edx, edx
neg edx
add edx, esi
add edx, ebx
mov ebx, dword [ebp - 0x2d4]
mov eax, dword [ebx + 0x421224]
add ecx, eax
cmp ecx, eax
mov eax, dword [ebp + ebx - 0x264]
sbb esi, esi
add ecx, eax
neg esi
add esi, dword [ebx + 0x421220]
add esi, edx
cmp ecx, eax
sbb eax, eax
add ecx, dword [ebp - 0x290]
neg eax
mov dword [ebp - 0x2d0], ecx
add eax, dword [ebp + ebx - 0x268]
add eax, esi
cmp ecx, dword [ebp - 0x290]
mov esi, dword [ebp - 0x2b8]
mov ebx, esi
sbb ecx, ecx
mov edx, esi
neg ecx
shr ebx, 0x1c
add ecx, dword [ebp - 0x28c]
add ecx, eax
shl edx, 0x1e
mov dword [ebp - 0x2c8], ecx
mov ecx, dword [ebp - 0x2ac]
mov eax, ecx
shl eax, 4
mov edi, ecx
or ebx, eax
shr edi, 0x1c
mov eax, esi
shl eax, 4
or edi, eax
mov eax, ecx
shr eax, 2
or edx, eax
shl ecx, 0x1e
mov eax, esi
xor ebx, edx
shr eax, 2
or ecx, eax
mov eax, esi
xor edi, ecx
shl eax, 0x19
mov ecx, dword [ebp - 0x2ac]
mov edx, ecx
shr edx, 7
or edx, eax
shl ecx, 0x19
mov eax, esi
xor ebx, edx
shr eax, 7
or ecx, eax
mov eax, dword [ebp - 0x2bc]
and eax, esi
xor edi, ecx
mov dword [ebp - 0x2d8], eax
mov edx, eax
mov eax, dword [ebp - 0x2a0]
and eax, dword [ebp - 0x2ac]
mov dword [ebp - 0x2e0], eax
mov ecx, dword [ebp - 0x2c0]
mov esi, eax
and ecx, dword [ebp - 0x2b8]
mov eax, dword [ebp - 0x2a4]
xor edx, ecx
and eax, dword [ebp - 0x2ac]
xor edx, dword [ebp - 0x2e4]
xor esi, eax
xor esi, dword [ebp - 0x2dc]
lea eax, [edx + ebx]
mov edx, dword [ebp - 0x2d0]
cmp eax, ebx
mov ebx, dword [ebp - 0x2c4]
sbb ecx, ecx
neg ecx
add ecx, esi
lea esi, [ebx + edx]
add ecx, edi
mov dword [ebp - 0x28c], esi
cmp esi, ebx
lea esi, [ebx + edx]
sbb edi, edi
add eax, edx
mov dword [ebp - 0x2c4], eax
neg edi
add edi, dword [ebp - 0x2a8]
add edi, dword [ebp - 0x2c8]
cmp eax, edx
mov dword [ebp - 0x290], edi
sbb eax, eax
shl edi, 0x12
neg eax
add eax, dword [ebp - 0x2c8]
add eax, ecx
mov ecx, dword [ebp - 0x290]
mov dword [ebp - 0x2a8], eax
mov ebx, ecx
mov eax, esi
shr ebx, 0xe
shr eax, 0xe
mov edx, ecx
or edi, eax
shl edx, 0xe
mov eax, esi
shr ecx, 0x12
shl eax, 0x12
or ebx, eax
mov eax, esi
shr eax, 0x12
or edx, eax
mov eax, esi
shl eax, 0xe
xor edi, edx
or ecx, eax
mov eax, esi
xor ebx, ecx
shl eax, 0x17
mov ecx, dword [ebp - 0x290]
mov edx, ecx
shr edx, 9
or edx, eax
shl ecx, 0x17
mov eax, esi
xor edi, edx
mov edx, dword [ebp - 0x294]
shr eax, 9
or ecx, eax
mov eax, esi
mov esi, dword [ebp - 0x2b4]
xor ebx, ecx
mov ecx, dword [ebp - 0x290]
not eax
not ecx
and edx, eax
mov eax, dword [ebp - 0x2cc]
and esi, ecx
mov ecx, dword [ebp - 0x298]
and ecx, dword [ebp - 0x28c]
and eax, dword [ebp - 0x290]
xor edx, ecx
xor esi, eax
lea ecx, [edx + edi]
cmp ecx, edx
sbb edx, edx
neg edx
add edx, esi
add edx, ebx
mov ebx, dword [ebp - 0x2d4]
mov eax, dword [ebx + 0x42122c]
add ecx, eax
cmp ecx, eax
mov eax, dword [ebp + ebx - 0x25c]
sbb esi, esi
add ecx, eax
neg esi
add esi, dword [ebx + 0x421228]
add esi, edx
cmp ecx, eax
sbb eax, eax
add ecx, dword [ebp - 0x29c]
neg eax
mov dword [ebp - 0x2d0], ecx
add eax, dword [ebp + ebx - 0x260]
add eax, esi
cmp ecx, dword [ebp - 0x29c]
mov esi, dword [ebp - 0x2c4]
mov ebx, esi
sbb ecx, ecx
mov edx, esi
neg ecx
shr ebx, 0x1c
add ecx, dword [ebp - 0x2b0]
add ecx, eax
shl edx, 0x1e
mov dword [ebp - 0x2c8], ecx
mov ecx, dword [ebp - 0x2a8]
mov eax, ecx
shl eax, 4
mov edi, ecx
or ebx, eax
shr edi, 0x1c
mov eax, esi
shl eax, 4
or edi, eax
mov eax, ecx
shr eax, 2
or edx, eax
shl ecx, 0x1e
mov eax, esi
xor ebx, edx
shr eax, 2
or ecx, eax
mov eax, esi
xor edi, ecx
shl eax, 0x19
mov ecx, dword [ebp - 0x2a8]
mov edx, ecx
shr edx, 7
or edx, eax
shl ecx, 0x19
mov eax, esi
xor ebx, edx
shr eax, 7
or ecx, eax
mov eax, esi
and eax, dword [ebp - 0x2b8]
xor edi, ecx
mov ecx, dword [ebp - 0x2c4]
mov edx, eax
and ecx, dword [ebp - 0x2bc]
mov dword [ebp - 0x2e4], eax
xor edx, ecx
mov eax, dword [ebp - 0x2a8]
and eax, dword [ebp - 0x2ac]
xor edx, dword [ebp - 0x2d8]
mov esi, eax
mov dword [ebp - 0x2dc], eax
mov eax, dword [ebp - 0x2a8]
and eax, dword [ebp - 0x2a0]
xor esi, eax
lea eax, [edx + ebx]
xor esi, dword [ebp - 0x2e0]
cmp eax, ebx
mov edx, dword [ebp - 0x2d0]
mov ebx, dword [ebp - 0x2c0]
sbb ecx, ecx
neg ecx
add ecx, esi
add ecx, edi
lea esi, [edx + ebx]
cmp esi, ebx
mov dword [ebp - 0x2b0], esi
lea esi, [edx + ebx]
sbb edi, edi
add eax, edx
mov dword [ebp - 0x2c0], eax
neg edi
add edi, dword [ebp - 0x2c8]
add edi, dword [ebp - 0x2a4]
cmp eax, edx
mov dword [ebp - 0x29c], edi
sbb eax, eax
shl edi, 0x12
neg eax
add eax, dword [ebp - 0x2c8]
add eax, ecx
mov ecx, dword [ebp - 0x29c]
mov dword [ebp - 0x2a4], eax
mov ebx, ecx
mov eax, esi
shr ebx, 0xe
shr eax, 0xe
mov edx, ecx
or edi, eax
shl edx, 0xe
mov eax, esi
shr ecx, 0x12
shl eax, 0x12
or ebx, eax
mov eax, esi
shr eax, 0x12
or edx, eax
mov eax, esi
shl eax, 0xe
xor edi, edx
or ecx, eax
mov eax, esi
xor ebx, ecx
shl eax, 0x17
mov ecx, dword [ebp - 0x29c]
mov edx, ecx
shr edx, 9
or edx, eax
shl ecx, 0x17
mov eax, esi
xor edi, edx
mov edx, dword [ebp - 0x298]
shr eax, 9
or ecx, eax
mov eax, esi
mov esi, dword [ebp - 0x2cc]
xor ebx, ecx
mov ecx, dword [ebp - 0x29c]
not eax
not ecx
and edx, eax
mov eax, dword [ebp - 0x290]
and esi, ecx
mov ecx, dword [ebp - 0x28c]
and ecx, dword [ebp - 0x2b0]
and eax, dword [ebp - 0x29c]
xor edx, ecx
xor esi, eax
lea ecx, [edx + edi]
cmp ecx, edx
sbb edx, edx
neg edx
add edx, esi
add edx, ebx
mov ebx, dword [ebp - 0x2d4]
mov eax, dword [ebx + 0x421234]
add ecx, eax
cmp ecx, eax
sbb esi, esi
mov eax, dword [ebp + ebx - 0x254]
add ecx, eax
neg esi
add esi, dword [ebx + 0x421230]
add esi, edx
cmp ecx, eax
sbb eax, eax
add ecx, dword [ebp - 0x294]
neg eax
mov dword [ebp - 0x2d0], ecx
add eax, dword [ebp + ebx - 0x258]
add eax, esi
cmp ecx, dword [ebp - 0x294]
mov esi, dword [ebp - 0x2c0]
mov ebx, esi
sbb ecx, ecx
mov edx, esi
neg ecx
shr ebx, 0x1c
add ecx, dword [ebp - 0x2b4]
add ecx, eax
shl edx, 0x1e
mov dword [ebp - 0x2c8], ecx
mov ecx, dword [ebp - 0x2a4]
mov eax, ecx
shl eax, 4
mov edi, ecx
or ebx, eax
shr edi, 0x1c
mov eax, esi
shl eax, 4
or edi, eax
mov eax, ecx
shr eax, 2
or edx, eax
shl ecx, 0x1e
mov eax, esi
xor ebx, edx
shr eax, 2
or ecx, eax
mov eax, esi
xor edi, ecx
shl eax, 0x19
mov ecx, dword [ebp - 0x2a4]
mov edx, ecx
shr edx, 7
or edx, eax
shl ecx, 0x19
mov eax, esi
xor ebx, edx
shr eax, 7
or ecx, eax
mov eax, dword [ebp - 0x2c4]
and eax, esi
xor edi, ecx
mov ecx, dword [ebp - 0x2c0]
mov edx, eax
and ecx, dword [ebp - 0x2b8]
mov dword [ebp - 0x2d8], eax
xor edx, ecx
mov eax, dword [ebp - 0x2a8]
and eax, dword [ebp - 0x2a4]
xor edx, dword [ebp - 0x2e4]
mov esi, eax
mov dword [ebp - 0x2ec], eax
mov eax, dword [ebp - 0x2a4]
and eax, dword [ebp - 0x2ac]
xor esi, eax
lea eax, [edx + ebx]
xor esi, dword [ebp - 0x2dc]
cmp eax, ebx
mov ebx, dword [ebp - 0x2bc]
mov edx, dword [ebp - 0x2d0]
sbb ecx, ecx
neg ecx
add ecx, esi
add ecx, edi
lea esi, [edx + ebx]
mov dword [ebp - 0x2b4], esi
cmp esi, ebx
sbb edi, edi
lea esi, [edx + ebx]
add eax, edx
neg edi
add edi, dword [ebp - 0x2c8]
add edi, dword [ebp - 0x2a0]
cmp eax, edx
mov dword [ebp - 0x2bc], eax
sbb eax, eax
mov dword [ebp - 0x294], edi
neg eax
shl edi, 0x12
add eax, dword [ebp - 0x2c8]
add eax, ecx
mov ecx, dword [ebp - 0x294]
mov dword [ebp - 0x2a0], eax
mov ebx, ecx
mov eax, esi
shr ebx, 0xe
shr eax, 0xe
mov edx, ecx
or edi, eax
shl edx, 0xe
mov eax, esi
shr ecx, 0x12
shl eax, 0x12
or ebx, eax
mov eax, esi
shr eax, 0x12
or edx, eax
mov eax, esi
shl eax, 0xe
xor edi, edx
or ecx, eax
mov eax, esi
xor ebx, ecx
shl eax, 0x17
mov ecx, dword [ebp - 0x294]
mov edx, ecx
shr edx, 9
or edx, eax
shl ecx, 0x17
mov eax, esi
xor edi, edx
mov edx, dword [ebp - 0x28c]
shr eax, 9
or ecx, eax
mov eax, esi
mov esi, dword [ebp - 0x290]
xor ebx, ecx
mov ecx, dword [ebp - 0x294]
not eax
and edx, eax
not ecx
mov eax, dword [ebp - 0x294]
and esi, ecx
mov ecx, dword [ebp - 0x2b4]
and ecx, dword [ebp - 0x2b0]
and eax, dword [ebp - 0x29c]
xor edx, ecx
xor esi, eax
lea ecx, [edx + edi]
cmp ecx, edx
sbb edx, edx
neg edx
add edx, esi
add edx, ebx
mov ebx, dword [ebp - 0x2d4]
mov eax, dword [ebx + 0x42123c]
add ecx, eax
cmp ecx, eax
mov eax, dword [ebp + ebx - 0x24c]
sbb esi, esi
add ecx, eax
neg esi
add esi, dword [ebx + 0x421238]
add esi, edx
cmp ecx, eax
sbb eax, eax
neg eax
add eax, dword [ebp + ebx - 0x250]
add ecx, dword [ebp - 0x298]
add eax, esi
cmp ecx, dword [ebp - 0x298]
mov esi, dword [ebp - 0x2bc]
mov ebx, esi
mov dword [ebp - 0x2d0], ecx
mov edx, esi
sbb ecx, ecx
shr ebx, 0x1c
neg ecx
shl edx, 0x1e
add ecx, dword [ebp - 0x2cc]
add ecx, eax
mov dword [ebp - 0x2c8], ecx
mov ecx, dword [ebp - 0x2a0]
mov eax, ecx
shl eax, 4
mov edi, ecx
or ebx, eax
shr edi, 0x1c
mov eax, esi
shl eax, 4
or edi, eax
mov eax, ecx
shr eax, 2
or edx, eax
shl ecx, 0x1e
xor ebx, edx
mov eax, esi
shr eax, 2
or ecx, eax
mov eax, esi
xor edi, ecx
shl eax, 0x19
mov ecx, dword [ebp - 0x2a0]
mov edx, ecx
shr edx, 7
or edx, eax
shl ecx, 0x19
xor ebx, edx
mov eax, esi
shr eax, 7
or ecx, eax
mov eax, dword [ebp - 0x2c0]
and eax, esi
xor edi, ecx
mov ecx, dword [ebp - 0x2c4]
mov edx, eax
and ecx, dword [ebp - 0x2bc]
xor edx, ecx
mov dword [ebp - 0x2dc], eax
xor edx, dword [ebp - 0x2d8]
mov eax, dword [ebp - 0x2a4]
and eax, dword [ebp - 0x2a0]
mov esi, eax
mov dword [ebp - 0x2e0], eax
mov eax, dword [ebp - 0x2a8]
and eax, dword [ebp - 0x2a0]
xor esi, eax
lea eax, [edx + ebx]
xor esi, dword [ebp - 0x2ec]
cmp eax, ebx
mov edx, dword [ebp - 0x2d0]
mov ebx, dword [ebp - 0x2b8]
sbb ecx, ecx
neg ecx
add ecx, esi
add ecx, edi
lea edi, [edx + ebx]
cmp edi, ebx
mov dword [ebp - 0x2b8], edi
sbb ebx, ebx
neg ebx
add ebx, dword [ebp - 0x2c8]
add ebx, dword [ebp - 0x2ac]
mov dword [ebp - 0x298], ebx
lea ebx, [edx + eax]
cmp ebx, edx
mov dword [ebp - 0x2cc], ebx
sbb edx, edx
neg edx
mov eax, dword [ebp - 0x2d4]
add edx, dword [ebp - 0x2c8]
add eax, 0x40
add edx, ecx
mov dword [ebp - 0x2d4], eax
mov dword [ebp - 0x2ac], edx
cmp eax, 0x280
jl 0x406720
mov ecx, dword [ebp - 0x2e8]
mov eax, dword [ecx + 4]
add eax, ebx
cmp eax, ebx
mov dword [ecx + 4], eax
sbb eax, eax
neg eax
add eax, dword [ecx]
add eax, edx
mov dword [ecx], eax
mov eax, dword [ecx + 0xc]
add eax, dword [ebp - 0x2bc]
cmp eax, dword [ebp - 0x2bc]
mov dword [ecx + 0xc], eax
sbb eax, eax
neg eax
add eax, dword [ecx + 8]
add eax, dword [ebp - 0x2a0]
mov dword [ecx + 8], eax
mov eax, dword [ecx + 0x14]
add eax, dword [ebp - 0x2c0]
cmp eax, dword [ebp - 0x2c0]
mov dword [ecx + 0x14], eax
sbb eax, eax
neg eax
add eax, dword [ecx + 0x10]
add eax, dword [ebp - 0x2a4]
mov dword [ecx + 0x10], eax
mov eax, dword [ecx + 0x1c]
add eax, dword [ebp - 0x2c4]
cmp eax, dword [ebp - 0x2c4]
mov dword [ecx + 0x1c], eax
sbb eax, eax
neg eax
add eax, dword [ecx + 0x18]
add eax, dword [ebp - 0x2a8]
mov dword [ecx + 0x18], eax
mov eax, dword [ecx + 0x24]
add eax, edi
cmp eax, edi
mov dword [ecx + 0x24], eax
pop edi
sbb eax, eax
neg eax
add eax, dword [ecx + 0x20]
add eax, dword [ebp - 0x298]
mov dword [ecx + 0x20], eax
mov eax, dword [ecx + 0x2c]
add eax, dword [ebp - 0x2b4]
cmp eax, dword [ebp - 0x2b4]
mov dword [ecx + 0x2c], eax
sbb eax, eax
neg eax
add eax, dword [ecx + 0x28]
add eax, dword [ebp - 0x294]
mov dword [ecx + 0x28], eax
mov eax, dword [ecx + 0x34]
add eax, dword [ebp - 0x2b0]
cmp eax, dword [ebp - 0x2b0]
mov dword [ecx + 0x34], eax
sbb eax, eax
neg eax
add eax, dword [ecx + 0x30]
add eax, dword [ebp - 0x29c]
mov dword [ecx + 0x30], eax
mov eax, dword [ecx + 0x3c]
add eax, dword [ebp - 0x28c]
cmp eax, dword [ebp - 0x28c]
mov dword [ecx + 0x3c], eax
sbb eax, eax
neg eax
add eax, dword [ecx + 0x38]
add eax, dword [ebp - 0x290]
mov dword [ecx + 0x38], eax
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.0040822b
mov esp, ebp
pop ebp
ret