Function at 0x4ca1e0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x14c
push ebx
push ebp
push esi
mov esi, dword [esp + 0x15c]
push edi
xor ecx, ecx
lea eax, [esi + 0x1d]
xor edx, edx
mov dh, byte [eax - 1]
movzx edi, byte [eax + 1]
add ecx, 4
add eax, 0x10
mov dl, byte [eax - 0x10]
shl edx, 8
or edx, edi
movzx edi, byte [eax - 0xe]
shl edx, 8
or edx, edi
mov dword [esp + ecx*4 + 0xc], edx
xor edx, edx
mov dh, byte [eax - 0xd]
movzx edi, byte [eax - 0xb]
mov dl, byte [eax - 0xc]
shl edx, 8
or edx, edi
movzx edi, byte [eax - 0xa]
shl edx, 8
or edx, edi
movzx edi, byte [eax - 7]
mov dword [esp + ecx*4 + 0x10], edx
xor edx, edx
mov dh, byte [eax - 9]
mov dl, byte [eax - 8]
shl edx, 8
or edx, edi
movzx edi, byte [eax - 6]
shl edx, 8
or edx, edi
movzx edi, byte [eax - 3]
mov dword [esp + ecx*4 + 0x14], edx
xor edx, edx
mov dh, byte [eax - 5]
mov dl, byte [eax - 4]
shl edx, 8
or edx, edi
movzx edi, byte [eax - 2]
shl edx, 8
or edx, edi
cmp ecx, 0x10
mov dword [esp + ecx*4 + 0x18], edx
jl 0x4ca1f6
lea eax, [esp + 0x3c]
mov ebx, 0x10
mov ecx, dword [eax - 0x20]
xor ecx, dword [eax + 0x14]
mov ebp, dword [eax - 0x1c]
xor ebp, dword [eax + 0x18]
xor ecx, dword [eax]
xor ebp, dword [eax + 4]
mov edx, dword [eax - 0x18]
mov edi, dword [eax - 0x14]
xor ecx, edx
xor ebp, edi
rol ecx, 1
rol ebp, 1
mov dword [eax + 0x24], ebp
mov ebp, dword [eax + 0x1c]
xor ebp, dword [eax - 0x10]
mov dword [eax + 0x20], ecx
xor ebp, dword [eax + 8]
add eax, 0x10
xor ebp, edx
mov edx, dword [eax - 0x1c]
xor edx, dword [eax - 4]
rol ebp, 1
xor edx, ecx
xor edx, edi
rol edx, 1
sub ebx, 1
mov dword [eax + 0x18], ebp
mov dword [eax + 0x1c], edx
jne 0x4ca286
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [esi + 8]
mov edi, dword [esi + 0xc]
mov esi, dword [esi + 0x10]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x20]
mov dword [esp + 0x14], esi
mov ebp, 2
mov dword [esp + 0x18], eax
lea esi, [ebp - 2]
xor eax, eax
test esi, esi
jl 0x4ca316
cmp esi, 0x14
jge 0x4ca31b
mov eax, ecx
not eax
mov esi, edx
and eax, edi
and esi, ecx
or eax, esi
add eax, 0x5a827999
jmp 0x4ca35f
cmp esi, 0x14
jl 0x4ca32d
cmp esi, 0x28
jge 0x4ca332
mov eax, edi
xor eax, edx
xor eax, ecx
add eax, 0x6ed9eba1
jmp 0x4ca35f
cmp esi, 0x28
jl 0x4ca34a
cmp esi, 0x3c
jge 0x4ca34f
mov eax, edx
or eax, ecx
mov esi, edx
and eax, edi
and esi, ecx
or eax, esi
sub eax, 0x70e44324
jmp 0x4ca35f
cmp esi, 0x3c
jl 0x4ca35f
cmp esi, 0x50
jge 0x4ca35f
mov eax, edi
xor eax, edx
xor eax, ecx
sub eax, 0x359d3e2a
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
rol esi, 5
add esi, dword [ebx - 4]
lea ebx, [ebp - 1]
add esi, dword [esp + 0x14]
mov dword [esp + 0x14], edi
add eax, esi
mov esi, dword [esp + 0x10]
mov edi, eax
ror ecx, 2
xor eax, eax
test ebx, ebx
mov dword [esp + 0x10], edi
jl 0x4ca3a5
cmp ebx, 0x14
jge 0x4ca3aa
mov eax, esi
not eax
mov ebx, ecx
and eax, edx
and ebx, esi
or eax, ebx
add eax, 0x5a827999
jmp 0x4ca3ee
cmp ebx, 0x14
jl 0x4ca3bc
cmp ebx, 0x28
jge 0x4ca3c1
mov eax, edx
xor eax, ecx
xor eax, esi
add eax, 0x6ed9eba1
jmp 0x4ca3ee
cmp ebx, 0x28
jl 0x4ca3d9
cmp ebx, 0x3c
jge 0x4ca3de
mov eax, ecx
or eax, esi
mov ebx, ecx
and eax, edx
and ebx, esi
or eax, ebx
sub eax, 0x70e44324
jmp 0x4ca3ee
cmp ebx, 0x3c
jl 0x4ca3ee
cmp ebx, 0x50
jge 0x4ca3ee
mov eax, edx
xor eax, ecx
xor eax, esi
sub eax, 0x359d3e2a
mov ebx, dword [esp + 0x18]
rol edi, 5
add edi, dword [ebx]
add edi, dword [esp + 0x14]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
add eax, edi
mov edi, eax
ror esi, 2
xor eax, eax
test ebp, ebp
mov dword [esp + 0x10], edi
jl 0x4ca42c
cmp ebp, 0x14
jge 0x4ca431
mov eax, edx
not eax
mov ebx, esi
and eax, ecx
and ebx, edx
or eax, ebx
add eax, 0x5a827999
jmp 0x4ca475
cmp ebp, 0x14
jl 0x4ca443
cmp ebp, 0x28
jge 0x4ca448
mov eax, ecx
xor eax, esi
xor eax, edx
add eax, 0x6ed9eba1
jmp 0x4ca475
cmp ebp, 0x28
jl 0x4ca460
cmp ebp, 0x3c
jge 0x4ca465
mov eax, esi
or eax, edx
mov ebx, esi
and eax, ecx
and ebx, edx
or eax, ebx
sub eax, 0x70e44324
jmp 0x4ca475
cmp ebp, 0x3c
jl 0x4ca475
cmp ebp, 0x50
jge 0x4ca475
mov eax, ecx
xor eax, esi
xor eax, edx
sub eax, 0x359d3e2a
mov ebx, dword [esp + 0x18]
rol edi, 5
add edi, dword [ebx + 4]
add edi, dword [esp + 0x14]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x10]
add eax, edi
mov ebx, eax
lea edi, [ebp + 1]
ror edx, 2
xor eax, eax
test edi, edi
mov dword [esp + 0x10], ebx
jl 0x4ca4b7
cmp edi, 0x14
jge 0x4ca4bc
mov eax, ecx
not eax
mov edi, edx
and eax, esi
and edi, ecx
or eax, edi
add eax, 0x5a827999
jmp 0x4ca500
cmp edi, 0x14
jl 0x4ca4ce
cmp edi, 0x28
jge 0x4ca4d3
mov eax, esi
xor eax, edx
xor eax, ecx
add eax, 0x6ed9eba1
jmp 0x4ca500
cmp edi, 0x28
jl 0x4ca4eb
cmp edi, 0x3c
jge 0x4ca4f0
mov eax, edx
or eax, ecx
mov edi, edx
and eax, esi
and edi, ecx
or eax, edi
sub eax, 0x70e44324
jmp 0x4ca500
cmp edi, 0x3c
jl 0x4ca500
cmp edi, 0x50
jge 0x4ca500
mov eax, esi
xor eax, edx
xor eax, ecx
sub eax, 0x359d3e2a
mov edi, dword [esp + 0x18]
rol ebx, 5
add ebx, dword [edi + 8]
add ebx, dword [esp + 0x14]
mov dword [esp + 0x14], esi
add eax, ebx
ror ecx, 2
mov edi, ecx
mov ecx, eax
lea esi, [ebp + 2]
mov ebx, edx
mov edx, dword [esp + 0x10]
xor eax, eax
test esi, esi
mov dword [esp + 0x10], ecx
jl 0x4ca546
cmp esi, 0x14
jge 0x4ca54b
mov eax, edx
not eax
mov esi, edi
and eax, ebx
and esi, edx
or eax, esi
add eax, 0x5a827999
jmp 0x4ca58f
cmp esi, 0x14
jl 0x4ca55d
cmp esi, 0x28
jge 0x4ca562
mov eax, ebx
xor eax, edi
xor eax, edx
add eax, 0x6ed9eba1
jmp 0x4ca58f
cmp esi, 0x28
jl 0x4ca57a
cmp esi, 0x3c
jge 0x4ca57f
mov eax, edi
or eax, edx
mov esi, edi
and eax, ebx
and esi, edx
or eax, esi
sub eax, 0x70e44324
jmp 0x4ca58f
cmp esi, 0x3c
jl 0x4ca58f
cmp esi, 0x50
jge 0x4ca58f
mov eax, ebx
xor eax, edi
xor eax, edx
sub eax, 0x359d3e2a
mov esi, dword [esp + 0x18]
add dword [esp + 0x18], 0x14
rol ecx, 5
add ecx, dword [esi + 0xc]
add ebp, 5
add ecx, dword [esp + 0x14]
mov esi, ebx
add eax, ecx
mov ecx, dword [esp + 0x10]
lea ebx, [ebp - 2]
ror edx, 2
cmp ebx, 0x50
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], eax
jl 0x4ca2f5
mov ebx, dword [esp + 0x160]
mov ebx, dword [ebx]
add ebx, eax
mov eax, dword [esp + 0x160]
mov dword [eax], ebx
mov ebx, dword [eax + 4]
add ebx, ecx
mov ecx, dword [eax + 8]
add ecx, edx
mov dword [eax + 8], ecx
mov ecx, dword [eax + 0xc]
add ecx, edi
mov dword [eax + 0xc], ecx
mov ecx, dword [eax + 0x10]
pop edi
add ecx, esi
pop esi
pop ebp
mov dword [eax + 4], ebx
mov dword [eax + 0x10], ecx
mov word [eax + 0x5c], 0
pop ebx
add esp, 0x14c
ret 4