Function at 0x46cb90
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x50
mov eax, dword [esp + 0x58]
mov edx, dword [eax + 0xc]
mov ecx, dword [eax + 4]
push ebx
push ebp
mov ebp, dword [eax + 8]
push esi
push edi
mov edi, dword [eax]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x10], edx
xor esi, esi
jmp 0x46cbc0
xor edx, edx
mov dh, byte [eax]
movzx ebx, byte [eax + 2]
and ebp, ecx
mov dl, byte [eax + 1]
shl edx, 8
or edx, ebx
movzx ebx, byte [eax + 3]
shl edx, 8
or edx, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x18], edx
mov dword [esp + esi*4 + 0x20], edx
mov edx, ecx
not edx
and edx, ebx
or edx, ebp
mov ebx, edi
shr ebx, 0x1b
mov ebp, edi
shl ebp, 5
or ebx, ebp
add edx, dword [esp + 0x18]
mov ebp, ecx
shr ecx, 2
add ebx, edx
mov edx, dword [esp + 0x14]
lea edx, [ebx + edx + 0x5a827999]
mov ebx, dword [esp + 0x10]
shl ebp, 0x1e
or ebp, ecx
xor ecx, ecx
mov ch, byte [eax + 4]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], ebx
movzx ebx, byte [eax + 6]
mov cl, byte [eax + 5]
mov dword [esp + 0x18], edx
shl ecx, 8
or ecx, ebx
movzx ebx, byte [eax + 7]
shl ecx, 8
or ecx, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x1c], ecx
mov dword [esp + esi*4 + 0x24], ecx
mov ecx, edi
not ecx
and ecx, ebx
mov ebx, ebp
and ebx, edi
or ecx, ebx
mov ebx, edx
shr ebx, 0x1b
shl edx, 5
or ebx, edx
add ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
add ebx, ecx
mov ecx, dword [esp + 0x10]
lea edx, [ebx + edx + 0x5a827999]
xor ebx, ebx
mov bh, byte [eax + 8]
mov dword [esp + 0x10], ebp
mov ebp, edi
shr edi, 2
shl ebp, 0x1e
or ebp, edi
movzx edi, byte [eax + 0xa]
mov bl, byte [eax + 9]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x18], edx
shl ebx, 8
or ebx, edi
movzx edi, byte [eax + 0xb]
shl ebx, 8
mov dword [esp + 0x1c], edi
mov edi, ebx
mov ebx, dword [esp + 0x1c]
or edi, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x1c], edi
mov dword [esp + esi*4 + 0x28], edi
mov edi, ecx
not edi
and edi, ebx
mov ebx, ebp
and ebx, ecx
or edi, ebx
mov ebx, edx
shr ebx, 0x1b
shl edx, 5
or ebx, edx
add edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
add ebx, edi
lea edi, [ebx + edx + 0x5a827999]
mov edx, dword [esp + 0x10]
movzx ebx, byte [eax + 0xe]
mov dword [esp + 0x10], ebp
mov ebp, ecx
shr ecx, 2
shl ebp, 0x1e
or ebp, ecx
xor ecx, ecx
mov ch, byte [eax + 0xc]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x18], edi
add esi, 4
add eax, 0x10
mov cl, byte [eax - 3]
shl ecx, 8
or ecx, ebx
movzx ebx, byte [eax - 1]
shl ecx, 8
or ecx, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x1c], ecx
mov dword [esp + esi*4 + 0x1c], ecx
mov ecx, edx
not ecx
and ecx, ebx
mov ebx, ebp
and ebx, edx
or ecx, ebx
mov ebx, edi
shr ebx, 0x1b
shl edi, 5
or ebx, edi
add ecx, dword [esp + 0x1c]
add ebx, ecx
mov ecx, dword [esp + 0x14]
lea ebx, [ebx + ecx + 0x5a827999]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], ecx
mov ecx, edx
shl ecx, 0x1e
shr edx, 2
or ecx, edx
cmp esi, 0x10
mov dword [esp + 0x10], ebp
mov ebp, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebp
mov edi, ebx
jl 0x46cbc0
cmp esi, 0x14
jge 0x46ce24
mov edx, esi
and edx, 0xf
lea eax, [esp + edx*4 + 0x20]
mov dword [esp + 0x18], eax
lea eax, [edx - 8]
lea ebx, [edx - 3]
and eax, 0xf
mov eax, dword [esp + eax*4 + 0x20]
add edx, 2
and edx, 0xf
and ebx, 0xf
xor eax, dword [esp + ebx*4 + 0x20]
xor eax, dword [esp + edx*4 + 0x20]
mov ebx, dword [esp + 0x18]
xor eax, dword [ebx]
mov edx, eax
shr edx, 0x1f
add eax, eax
or edx, eax
mov eax, dword [esp + 0x10]
mov dword [ebx], edx
mov dword [esp + 0x18], edx
mov edx, ecx
not edx
and edx, eax
mov eax, ebp
and eax, ecx
or edx, eax
mov eax, edi
shr eax, 0x1b
mov ebx, edi
shl ebx, 5
or eax, ebx
add edx, dword [esp + 0x18]
add eax, edx
mov edx, dword [esp + 0x14]
lea ebx, [eax + edx + 0x5a827999]
mov eax, dword [esp + 0x10]
mov edx, ecx
shr ecx, 2
shl edx, 0x1e
or edx, ecx
inc esi
cmp esi, 0x14
mov dword [esp + 0x10], ebp
mov ecx, edi
mov dword [esp + 0x14], eax
mov ebp, edx
mov edi, ebx
jl 0x46cd91
cmp esi, 0x28
jge 0x46ceb5
lea ecx, [ecx]
mov edx, esi
and edx, 0xf
lea eax, [esp + edx*4 + 0x20]
mov dword [esp + 0x18], eax
lea eax, [edx - 8]
and eax, 0xf
mov eax, dword [esp + eax*4 + 0x20]
lea ebx, [edx - 3]
and ebx, 0xf
xor eax, dword [esp + ebx*4 + 0x20]
add edx, 2
and edx, 0xf
xor eax, dword [esp + edx*4 + 0x20]
mov ebx, dword [esp + 0x18]
xor eax, dword [ebx]
mov edx, eax
add eax, eax
shr edx, 0x1f
or edx, eax
mov dword [ebx], edx
mov eax, edi
shr eax, 0x1b
mov ebx, edi
shl ebx, 5
or eax, ebx
mov ebx, dword [esp + 0x10]
xor ebx, ebp
add eax, edx
mov edx, dword [esp + 0x14]
xor ebx, ecx
add ebx, eax
mov eax, dword [esp + 0x10]
lea ebx, [ebx + edx + 0x6ed9eba1]
mov edx, ecx
shr ecx, 2
shl edx, 0x1e
or edx, ecx
inc esi
cmp esi, 0x28
mov dword [esp + 0x10], ebp
mov ecx, edi
mov dword [esp + 0x14], eax
mov ebp, edx
mov edi, ebx
jl 0x46ce30
cmp esi, 0x3c
jge 0x46cf53
mov edi, edi
mov edx, esi
and edx, 0xf
lea eax, [esp + edx*4 + 0x20]
mov dword [esp + 0x18], eax
lea eax, [edx - 8]
lea ebx, [edx - 3]
and eax, 0xf
mov eax, dword [esp + eax*4 + 0x20]
add edx, 2
and edx, 0xf
and ebx, 0xf
xor eax, dword [esp + ebx*4 + 0x20]
xor eax, dword [esp + edx*4 + 0x20]
mov ebx, dword [esp + 0x18]
xor eax, dword [ebx]
mov edx, eax
shr edx, 0x1f
add eax, eax
or edx, eax
mov eax, dword [esp + 0x10]
mov dword [ebx], edx
mov dword [esp + 0x18], edx
mov edx, ebp
or edx, ecx
and edx, eax
mov eax, ebp
and eax, ecx
or edx, eax
mov eax, edi
shr eax, 0x1b
mov ebx, edi
shl ebx, 5
or eax, ebx
add edx, dword [esp + 0x18]
add eax, edx
mov edx, dword [esp + 0x14]
lea ebx, [eax + edx - 0x70e44324]
mov eax, dword [esp + 0x10]
mov edx, ecx
shr ecx, 2
shl edx, 0x1e
or edx, ecx
inc esi
cmp esi, 0x3c
mov dword [esp + 0x10], ebp
mov ecx, edi
mov dword [esp + 0x14], eax
mov ebp, edx
mov edi, ebx
jl 0x46cec0
cmp esi, 0x50
jge 0x46cfe5
lea esp, [esp]
mov edx, esi
and edx, 0xf
lea eax, [esp + edx*4 + 0x20]
mov dword [esp + 0x18], eax
lea eax, [edx - 8]
and eax, 0xf
mov eax, dword [esp + eax*4 + 0x20]
lea ebx, [edx - 3]
and ebx, 0xf
xor eax, dword [esp + ebx*4 + 0x20]
add edx, 2
and edx, 0xf
xor eax, dword [esp + edx*4 + 0x20]
mov ebx, dword [esp + 0x18]
xor eax, dword [ebx]
mov edx, eax
add eax, eax
shr edx, 0x1f
or edx, eax
mov dword [ebx], edx
mov eax, edi
shr eax, 0x1b
mov ebx, edi
shl ebx, 5
or eax, ebx
mov ebx, dword [esp + 0x10]
xor ebx, ebp
add eax, edx
mov edx, dword [esp + 0x14]
xor ebx, ecx
add ebx, eax
mov eax, dword [esp + 0x10]
lea ebx, [ebx + edx - 0x359d3e2a]
mov edx, ecx
shr ecx, 2
shl edx, 0x1e
or edx, ecx
inc esi
cmp esi, 0x50
mov dword [esp + 0x10], ebp
mov ecx, edi
mov dword [esp + 0x14], eax
mov ebp, edx
mov edi, ebx
jl 0x46cf60
mov eax, dword [esp + 0x68]
mov edx, dword [eax]
add edx, ebx
mov dword [eax], edx
mov edx, dword [eax + 4]
add edx, ecx
mov ecx, dword [eax + 8]
add ecx, ebp
mov dword [eax + 8], ecx
mov ecx, dword [eax + 0xc]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x10]
add ecx, edx
mov edx, dword [esp + 0x14]
pop edi
mov dword [eax + 0xc], ecx
mov ecx, dword [eax + 0x10]
pop esi
add ecx, edx
pop ebp
mov dword [eax + 0x10], ecx
pop ebx
add esp, 0x50
ret