Function at 0x100595eb
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x18]
mov esi, ecx
mov ebx, edi
mov dword [esp + 0x10], esi
shr ebx, 2
push edi
push edx
push esi
lea eax, [ebx + 6]
mov dword [esi + 0xf4], edi
mov dword [esi + 0xf0], eax
call fcn.10061840
add esp, 0xc
xor edx, edx
test ebx, ebx
je 0x1005963f
mov eax, dword [esi + edx*4]
mov ecx, eax
ror ecx, 8
rol eax, 8
and ecx, 0xff00ff00
and eax, 0xff00ff
or ecx, eax
mov dword [esi + edx*4], ecx
inc edx
cmp edx, ebx
jb 0x1005961f
cmp edi, 0x10
je 0x100598c7
cmp edi, 0x18
je 0x100597be
cmp edi, 0x20
je 0x10059661
pop edi
pop esi
pop ebp
mov eax, 0xffffff53
pop ebx
pop ecx
ret
mov ecx, dword [esi + 0x1c]
lea edi, [esi + 0x30]
mov eax, ecx
mov ebp, 0xff000000
shr eax, 0x10
mov ebx, 0xff0000
movzx eax, al
push 4
mov edx, dword [eax*4 + 0x34b1ac0]
mov eax, ecx
shr eax, 8
xor edx, 0x1000000
movzx eax, al
and edx, ebp
mov eax, dword [eax*4 + 0x34b1ec0]
and eax, ebx
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x34b16c0]
xor edx, eax
movzx eax, cl
mov ecx, dword [esi + 8]
mov eax, dword [eax*4 + 0x34b12c0]
and eax, 0xff00
xor edx, eax
mov eax, dword [esi + 4]
xor edx, dword [esi]
xor eax, edx
mov dword [esi + 0x20], edx
mov dword [esi + 0x24], eax
xor ecx, eax
mov eax, dword [esi + 0xc]
xor eax, ecx
mov dword [esi + 0x28], ecx
mov dword [esi + 0x2c], eax
pop esi
mov ecx, dword [edi - 4]
mov eax, ecx
shr eax, 0x10
movzx eax, al
mov edx, dword [eax*4 + 0x34b1ec0]
mov eax, ecx
shr eax, 8
and edx, ebx
movzx eax, al
mov eax, dword [eax*4 + 0x34b12c0]
and eax, 0xff00
xor edx, eax
mov eax, ecx
shr eax, 0x18
mov eax, dword [eax*4 + 0x34b1ac0]
and eax, ebp
xor edx, eax
movzx eax, cl
mov ecx, dword [edi - 0x18]
movzx eax, byte [eax*4 + 0x34b16c0]
xor edx, eax
mov eax, dword [edi - 0x1c]
xor edx, dword [edi - 0x20]
xor eax, edx
mov dword [edi], edx
mov dword [edi + 4], eax
lea edi, [edi + 0x20]
xor ecx, eax
mov eax, dword [edi - 0x34]
xor eax, ecx
mov dword [edi - 0x18], ecx
mov dword [edi - 0x14], eax
mov ecx, dword [edi - 0x14]
mov eax, ecx
shr eax, 8
movzx eax, al
mov edx, dword [eax*4 + 0x34b1ec0]
mov eax, ecx
shr eax, 0x10
and edx, ebx
movzx eax, al
mov eax, dword [eax*4 + 0x34b1ac0]
and eax, ebp
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x34b16c0]
xor edx, eax
movzx eax, cl
mov eax, dword [eax*4 + 0x34b12c0]
and eax, 0xff00
xor edx, eax
xor edx, dword [esi + 0x34b0290]
add esi, 4
xor edx, dword [edi - 0x30]
mov dword [edi - 0x10], edx
mov eax, dword [edi - 0x2c]
xor eax, edx
mov dword [edi - 0xc], eax
mov ecx, dword [edi - 0x28]
xor ecx, eax
mov dword [edi - 8], ecx
mov eax, dword [edi - 0x24]
xor eax, ecx
mov dword [edi - 4], eax
cmp esi, 0x1c
jne 0x100596db
jmp 0x100599b2
mov ecx, dword [esi + 0x14]
lea edi, [esi + 0x28]
mov eax, ecx
mov ebp, 0xff000000
shr eax, 0x10
mov ebx, 0xff0000
movzx eax, al
push 4
mov edx, dword [eax*4 + 0x34b1ac0]
mov eax, ecx
shr eax, 8
xor edx, 0x1000000
movzx eax, al
and edx, ebp
mov eax, dword [eax*4 + 0x34b1ec0]
and eax, ebx
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x34b16c0]
xor edx, eax
movzx eax, cl
mov ecx, dword [esi + 8]
mov eax, dword [eax*4 + 0x34b12c0]
and eax, 0xff00
xor edx, eax
mov eax, dword [esi + 4]
xor edx, dword [esi]
xor eax, edx
mov dword [esi + 0x18], edx
mov dword [esi + 0x1c], eax
xor ecx, eax
mov eax, dword [esi + 0xc]
xor eax, ecx
mov dword [esi + 0x20], ecx
mov dword [esi + 0x24], eax
pop esi
mov ecx, dword [edi - 0x18]
xor ecx, dword [edi - 4]
mov eax, dword [edi - 0x14]
xor eax, ecx
mov dword [edi], ecx
mov dword [edi + 4], eax
lea edi, [edi + 0x18]
mov ecx, dword [edi - 0x14]
mov eax, ecx
shr eax, 8
movzx eax, al
mov edx, dword [eax*4 + 0x34b1ec0]
mov eax, ecx
shr eax, 0x10
and edx, ebx
movzx eax, al
mov eax, dword [eax*4 + 0x34b1ac0]
and eax, ebp
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x34b16c0]
xor edx, eax
movzx eax, cl
mov eax, dword [eax*4 + 0x34b12c0]
and eax, 0xff00
xor edx, eax
xor edx, dword [esi + 0x34b0290]
add esi, 4
xor edx, dword [edi - 0x28]
mov dword [edi - 0x10], edx
mov eax, dword [edi - 0x24]
xor eax, edx
mov dword [edi - 0xc], eax
mov ecx, dword [edi - 0x20]
xor ecx, eax
mov dword [edi - 8], ecx
mov eax, dword [edi - 0x1c]
xor eax, ecx
mov dword [edi - 4], eax
cmp esi, 0x20
jne 0x10059838
jmp 0x100599b2
mov ebx, dword [esi + 0xc]
lea edi, [esi + 0x10]
mov eax, ebx
mov ecx, dword [esi + 4]
shr eax, 0x10
mov ebp, 0xff000000
movzx eax, al
push 4
mov edx, dword [eax*4 + 0x34b1ac0]
mov eax, ebx
shr eax, 8
xor edx, 0x1000000
movzx eax, al
and edx, ebp
mov eax, dword [eax*4 + 0x34b1ec0]
and eax, 0xff0000
xor edx, eax
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x34b16c0]
xor edx, eax
movzx eax, bl
mov eax, dword [eax*4 + 0x34b12c0]
and eax, 0xff00
xor edx, eax
mov eax, dword [esi + 8]
xor edx, dword [esi]
xor ecx, edx
mov dword [edi], edx
xor eax, ecx
mov dword [esi + 0x14], ecx
mov dword [esi + 0x18], eax
xor eax, ebx
mov dword [esi + 0x1c], eax
pop esi
mov ebx, dword [edi + 0xc]
mov edx, edi
add edi, 0x10
mov eax, ebx
shr eax, 8
movzx eax, al
mov ecx, dword [eax*4 + 0x34b1ec0]
mov eax, ebx
shr eax, 0x10
and ecx, 0xff0000
movzx eax, al
mov eax, dword [eax*4 + 0x34b1ac0]
and eax, ebp
xor ecx, eax
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x34b16c0]
xor ecx, eax
movzx eax, bl
mov eax, dword [eax*4 + 0x34b12c0]
and eax, 0xff00
xor ecx, eax
xor ecx, dword [esi + 0x34b0290]
add esi, 4
xor ecx, dword [edx]
mov dword [edi], ecx
mov eax, dword [edi - 0xc]
xor eax, ecx
mov dword [edi + 4], eax
mov ecx, dword [edi - 8]
xor ecx, eax
mov dword [edi + 8], ecx
xor ecx, ebx
mov dword [edi + 0xc], ecx
cmp esi, 0x28
jne 0x1005993b
mov esi, dword [esp + 0x10]
xor edi, edi
inc edi
cmp dword [esp + 0x20], edi
jne 0x10059ba0
mov ebx, dword [esi + 0xf0]
lea ebp, [esi + 8]
shl ebx, 2
test ebx, ebx
je 0x10059a20
lea edx, [ebx + 2]
mov edi, ebp
lea edx, [esi + edx*4]
xor esi, esi
mov ecx, dword [edi - 8]
add esi, 4
mov eax, dword [edx - 8]
sub ebx, 4
mov dword [edi - 8], eax
mov eax, dword [edx - 4]
mov dword [edx - 8], ecx
mov ecx, dword [edi - 4]
mov dword [edi - 4], eax
mov eax, dword [edx]
mov dword [edx - 4], ecx
mov ecx, dword [edi]
mov dword [edi], eax
lea edi, [edi + 0x10]
mov eax, dword [edx + 4]
mov dword [edx], ecx
lea edx, [edx - 0x10]
mov ecx, dword [edi - 0xc]
mov dword [edi - 0xc], eax
mov dword [edx + 0x14], ecx
cmp esi, ebx
jb 0x100599dd
mov esi, dword [esp + 0x10]
xor edi, edi
inc edi
cmp dword [esi + 0xf0], edi
jbe 0x10059ba0
lea ebp, [ebp + 0x10]
mov edx, dword [ebp - 8]
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx ecx, byte [eax*4 + 0x34b16c0]
mov eax, edx
shr eax, 8
movzx eax, al
shr edx, 0x18
mov ecx, dword [ecx*4 + 0x34b06c0]
movzx eax, byte [eax*4 + 0x34b16c0]
xor ecx, dword [eax*4 + 0x34b0ac0]
movzx eax, byte [edx*4 + 0x34b16c0]
mov edx, dword [ebp - 4]
xor ecx, dword [eax*4 + 0x34b02c0]
movzx eax, byte [ebp - 8]
movzx eax, byte [eax*4 + 0x34b16c0]
xor ecx, dword [eax*4 + 0x34b0ec0]
mov eax, edx
shr eax, 0x10
movzx eax, al
mov dword [ebp - 8], ecx
movzx ecx, byte [eax*4 + 0x34b16c0]
mov eax, edx
shr eax, 8
movzx eax, al
shr edx, 0x18
mov ecx, dword [ecx*4 + 0x34b06c0]
movzx eax, byte [eax*4 + 0x34b16c0]
xor ecx, dword [eax*4 + 0x34b0ac0]
movzx eax, byte [edx*4 + 0x34b16c0]
mov edx, dword [ebp]
xor ecx, dword [eax*4 + 0x34b02c0]
movzx eax, byte [ebp - 4]
movzx eax, byte [eax*4 + 0x34b16c0]
xor ecx, dword [eax*4 + 0x34b0ec0]
mov eax, edx
shr eax, 0x10
movzx eax, al
mov dword [ebp - 4], ecx
movzx ecx, byte [eax*4 + 0x34b16c0]
mov eax, edx
shr eax, 8
movzx eax, al
shr edx, 0x18
mov ecx, dword [ecx*4 + 0x34b06c0]
movzx eax, byte [eax*4 + 0x34b16c0]
xor ecx, dword [eax*4 + 0x34b0ac0]
movzx eax, byte [edx*4 + 0x34b16c0]
mov edx, dword [ebp + 4]
xor ecx, dword [eax*4 + 0x34b02c0]
movzx eax, byte [ebp]
movzx eax, byte [eax*4 + 0x34b16c0]
xor ecx, dword [eax*4 + 0x34b0ec0]
mov eax, edx
shr eax, 0x10
movzx eax, al
mov dword [ebp], ecx
movzx ecx, byte [eax*4 + 0x34b16c0]
mov eax, edx
shr eax, 8
movzx eax, al
shr edx, 0x18
mov ecx, dword [ecx*4 + 0x34b06c0]
movzx eax, byte [eax*4 + 0x34b16c0]
xor ecx, dword [eax*4 + 0x34b0ac0]
movzx eax, byte [edx*4 + 0x34b16c0]
xor ecx, dword [eax*4 + 0x34b02c0]
movzx eax, byte [ebp + 4]
movzx eax, byte [eax*4 + 0x34b16c0]
xor ecx, dword [eax*4 + 0x34b0ec0]
inc edi
mov dword [ebp + 4], ecx
cmp edi, dword [esi + 0xf0]
jb 0x10059a2c
mov edx, dword [esp + 0x1c]
mov ecx, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 4
jmp 0x10059bf8
test ecx, ecx
jne 0x10059c02
mov eax, 0xffffff53
ret
lea eax, [ecx + 0xf8]
push 0x10
test edx, edx
je 0x10059c17
push edx
push eax
call fcn.10061840
jmp 0x10059c1f
push 0
push eax
call fcn.10061dc0
add esp, 0xc
xor eax, eax
ret