Function at 0x43cdd0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov edi, edx
mov esi, ecx
mov dword [esp + 0x1c], 0
lea eax, [ecx + 0x158]
lea ecx, [esp + 0x1c]
push ecx
push edx
push 0x10
push eax
push esi
call fcn.00427370
add esp, 0x14
test eax, eax
je 0x43ce11
mov ebx, eax
push 0x10
push edi
call fcn.00426070
add esp, 8
jmp 0x43d36b
mov dword [esp], edi
mov ebp, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
cmp dword [esi + 0x178], 0
mov eax, esi
mov dword [esp + 0x10], esi
jne 0x43cfea
mov eax, dword [esp + 0x34]
lea ecx, [esi + eax]
add ecx, 0x168
xor ebx, ebx
cmp edx, 4
jb 0x43ce63
xor eax, eax
nop word cs:[eax + eax]
mov esi, dword [ebp + eax]
xor dword [ecx + eax], esi
lea ebx, [eax + 4]
add eax, 8
cmp eax, edx
mov eax, ebx
jbe 0x43ce50
mov eax, edx
sub eax, ebx
mov edi, dword [esp + 0x10]
jbe 0x43cfea
cmp eax, 8
jae 0x43ce7f
mov edx, dword [esp + 0x38]
jmp 0x43cf76
mov dword [esp + 8], eax
mov ebp, dword [esp + 0x34]
lea eax, [ebx + ebp]
mov dword [esp + 0xc], eax
add eax, edi
add eax, 0x168
mov esi, dword [esp + 0x3c]
lea ebp, [esi + ebx]
mov edx, dword [esp + 0x38]
add esi, edx
mov dword [esp + 4], eax
cmp eax, esi
jae 0x43cec1
mov eax, dword [esp + 0x34]
lea esi, [edx + eax]
add esi, edi
add esi, 0x168
cmp ebp, esi
jb 0x43cf76
mov dword [esp + 0x14], ebp
xor eax, eax
mov edx, dword [esp + 8]
cmp edx, 0x20
jb 0x43cf39
mov eax, edx
and eax, 0xffffffe0
mov edx, dword [esp + 0xc]
add edi, edx
add edi, 0x178
mov edx, dword [esp + 0x3c]
add edx, ebx
add edx, 0x10
xor esi, esi
nop dword [eax]
movups xmm0, xmmword [edi + esi - 0x10]
movups xmm1, xmmword [edi + esi]
movups xmm2, xmmword [edx + esi - 0x10]
xorps xmm2, xmm0
movups xmm0, xmmword [edx + esi]
xorps xmm0, xmm1
movups xmmword [edi + esi - 0x10], xmm2
movups xmmword [edi + esi], xmm0
add esi, 0x20
cmp eax, esi
jne 0x43cef0
mov edx, dword [esp + 8]
mov esi, edx
cmp edx, eax
mov edx, dword [esp + 0x38]
mov ebp, dword [esp + 0x3c]
je 0x43cfea
mov edx, esi
test dl, 0x18
je 0x43d375
and edx, 0xfffffff8
add ebx, edx
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x14]
nop word cs:[eax + eax]
movsd xmm0, qword [esi + eax]
movsd xmm1, qword [edi + eax]
xorps xmm1, xmm0
movlps qword [esi + eax], xmm1
add eax, 8
cmp edx, eax
jne 0x43cf50
cmp dword [esp + 8], edx
mov edx, dword [esp + 0x38]
mov ebp, dword [esp + 0x3c]
je 0x43cfea
mov edi, edx
sub edi, ebx
mov esi, ebx
not esi
add esi, edx
mov ebp, dword [esp + 0x3c]
and edi, 3
je 0x43cf9c
nop dword [eax]
movzx eax, byte [ebp + ebx]
xor byte [ecx + ebx], al
inc ebx
dec edi
jne 0x43cf90
cmp esi, 3
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x38]
jb 0x43cfea
mov ecx, dword [esp + 0x34]
add eax, ecx
add eax, 0x16b
nop word cs:[eax + eax]
movzx ecx, byte [ebp + ebx]
xor byte [eax + ebx - 3], cl
movzx ecx, byte [ebp + ebx + 1]
xor byte [eax + ebx - 2], cl
movzx ecx, byte [ebp + ebx + 2]
xor byte [eax + ebx - 1], cl
movzx ecx, byte [ebp + ebx + 3]
xor byte [eax + ebx], cl
add ebx, 4
cmp edx, ebx
jne 0x43cfc0
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp]
add ecx, eax
xor ebx, ebx
cmp edx, 4
jb 0x43d016
xor eax, eax
mov esi, dword [ebp + eax]
xor esi, dword [ecx + eax]
mov dword [edi + eax], esi
lea ebx, [eax + 4]
add eax, 8
cmp eax, edx
mov eax, ebx
jbe 0x43d000
sub edx, ebx
jbe 0x43d0b9
cmp edx, 8
jae 0x43d1fa
mov eax, dword [esp + 0x38]
mov edi, eax
sub edi, ebx
mov edx, ebx
not edx
add edx, eax
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
and edi, 3
je 0x43d05f
nop word cs:[eax + eax]
movzx eax, byte [ebp + ebx]
xor al, byte [ecx + ebx]
mov byte [esi + ebx], al
inc ebx
dec edi
jne 0x43d050
cmp edx, 3
mov edx, dword [esp + 0x38]
jb 0x43d0b9
mov eax, dword [esp + 0x34]
mov ecx, dword [esp]
add ecx, eax
add ecx, 3
nop word cs:[eax + eax]
movzx eax, byte [ebp + ebx]
xor al, byte [ecx + ebx - 3]
mov byte [esi + ebx], al
movzx eax, byte [ebp + ebx + 1]
xor al, byte [ecx + ebx - 2]
mov byte [esi + ebx + 1], al
movzx eax, byte [ebp + ebx + 2]
xor al, byte [ecx + ebx - 1]
mov byte [esi + ebx + 2], al
movzx eax, byte [ebp + ebx + 3]
xor al, byte [ecx + ebx]
mov byte [esi + ebx + 3], al
add ebx, 4
cmp edx, ebx
jne 0x43d080
xor ebx, ebx
mov esi, dword [esp + 0x10]
cmp dword [esi + 0x178], 1
jne 0x43d36b
mov ebx, dword [esp + 0x34]
lea ecx, [esi + ebx]
add ecx, 0x168
mov edx, 0
mov edi, dword [esp + 0x38]
cmp edi, 4
mov ebp, dword [esp + 0x40]
jb 0x43d103
xor eax, eax
nop dword [eax]
mov edx, dword [ebp + eax]
xor dword [ecx + eax], edx
lea edx, [eax + 4]
add eax, 8
cmp eax, edi
mov eax, edx
jbe 0x43d0f0
mov eax, edi
sub eax, edx
jbe 0x43d369
cmp eax, 8
jb 0x43d2f5
mov dword [esp], eax
lea eax, [edx + ebx]
mov dword [esp + 4], eax
add eax, esi
add eax, 0x168
mov dword [esp + 8], eax
mov ebp, dword [esp + 0x40]
lea eax, [ebp + edx]
mov ebx, esi
lea esi, [edi + ebp]
mov ebp, dword [esp + 8]
cmp ebp, esi
jae 0x43d156
mov esi, dword [esp + 0x34]
add esi, edi
add esi, ebx
add esi, 0x168
cmp eax, esi
jb 0x43d2f5
mov dword [esp + 0xc], eax
xor edi, edi
mov esi, dword [esp]
cmp esi, 0x20
jb 0x43d1bf
mov edi, esi
and edi, 0xffffffe0
mov eax, dword [esp + 4]
add eax, ebx
add eax, 0x178
mov esi, dword [esp + 0x40]
lea ebx, [edx + esi]
add ebx, 0x10
xor esi, esi
movups xmm0, xmmword [eax + esi - 0x10]
movups xmm1, xmmword [eax + esi]
movups xmm2, xmmword [ebx + esi - 0x10]
xorps xmm2, xmm0
movups xmm0, xmmword [ebx + esi]
xorps xmm0, xmm1
movups xmmword [eax + esi - 0x10], xmm2
movups xmmword [eax + esi], xmm0
add esi, 0x20
cmp edi, esi
jne 0x43d180
xor ebx, ebx
mov eax, dword [esp]
cmp eax, edi
je 0x43d36b
test al, 0x18
je 0x43d2f3
mov esi, eax
mov eax, esi
and eax, 0xfffffff8
add edx, eax
mov esi, dword [esp + 0xc]
nop word [eax + eax]
movsd xmm0, qword [ebp + edi]
movsd xmm1, qword [esi + edi]
xorps xmm1, xmm0
movlps qword [ebp + edi], xmm1
add edi, 8
cmp eax, edi
jne 0x43d1d0
xor ebx, ebx
cmp dword [esp], eax
jne 0x43d2f5
jmp 0x43d36b
mov dword [esp + 4], edx
mov eax, dword [esp + 0x40]
lea edi, [ebx + eax]
mov eax, dword [esp + 0x34]
add eax, ebx
mov edx, dword [esp]
add edx, eax
mov esi, edi
mov dword [esp + 0xc], edx
sub esi, edx
cmp esi, 0x20
jb 0x43d027
mov edx, dword [esp + 0x3c]
add edx, ebx
mov dword [esp + 0x14], edi
mov esi, edi
sub esi, edx
cmp esi, 0x20
jb 0x43d027
mov dword [esp + 0x18], edx
xor edi, edi
mov edx, dword [esp + 4]
cmp edx, 0x20
jb 0x43d2aa
mov edi, edx
and edi, 0xffffffe0
mov edx, dword [esp]
add edx, eax
add edx, 0x10
mov eax, dword [esp + 0x3c]
lea eax, [eax + ebx + 0x10]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x40]
lea esi, [eax + ebx]
add esi, 0x10
xor eax, eax
mov ebp, dword [esp + 8]
movups xmm0, xmmword [edx + eax - 0x10]
movups xmm1, xmmword [edx + eax]
movups xmm2, xmmword [ebp + eax - 0x10]
xorps xmm2, xmm0
movups xmm0, xmmword [ebp + eax]
xorps xmm0, xmm1
movups xmmword [esi + eax - 0x10], xmm2
movups xmmword [esi + eax], xmm0
add eax, 0x20
cmp edi, eax
jne 0x43d270
mov edx, dword [esp + 4]
cmp edx, edi
je 0x43d0b9
test dl, 0x18
je 0x43d2ec
mov eax, edx
and eax, 0xfffffff8
add ebx, eax
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0xc]
mov edx, dword [esp + 0x18]
nop dword [eax]
movsd xmm0, qword [ebp + edi]
movsd xmm1, qword [edx + edi]
xorps xmm1, xmm0
movlps qword [esi + edi], xmm1
add edi, 8
cmp eax, edi
jne 0x43d2c0
cmp dword [esp + 4], eax
mov eax, dword [esp + 0x38]
jne 0x43d02b
jmp 0x43d0b9
add ebx, edi
jmp 0x43d027
add edx, edi
mov eax, dword [esp + 0x38]
mov edi, eax
sub edi, edx
mov esi, edx
not esi
add esi, eax
mov ebx, dword [esp + 0x34]
and edi, 3
je 0x43d31c
mov ebp, dword [esp + 0x40]
movzx eax, byte [ebp + edx]
xor byte [ecx + edx], al
inc edx
dec edi
jne 0x43d310
cmp esi, 3
jb 0x43d369
mov eax, dword [esp + 0x10]
add eax, ebx
add eax, 0x16b
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x40]
nop word cs:[eax + eax]
movzx ecx, byte [edi + edx]
xor byte [eax + edx - 3], cl
movzx ecx, byte [edi + edx + 1]
xor byte [eax + edx - 2], cl
movzx ecx, byte [edi + edx + 2]
xor byte [eax + edx - 1], cl
movzx ecx, byte [edi + edx + 3]
xor byte [eax + edx], cl
add edx, 4
cmp esi, edx
jne 0x43d340
xor ebx, ebx
mov eax, ebx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
add ebx, eax
jmp 0x43ce76