Function at 0x43f800
Capabilities:
Encode data using xor

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x44
mov ebx, eax
xor ebp, ebp
lea edi, [edx - 4]
and edx, 3
xor esi, esi
test edi, edi
je 0x43f8f2
lea ecx, [esi + 4]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x3c], edi
add ebp, ebp
mov ecx, esi
shr ecx, 3
mov edx, dword [esp + 0x38]
cmp esi, edx
jbe 0x43f847
mov edx, 0xa5a5a5a5
mov dword [esp + 0x40], edx
jmp 0x43f8c8
movzx edx, byte [ecx + ebx]
xor eax, eax
mov ecx, esi
lea edi, [esi + 4]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], esi
mov esi, ecx
mov ebp, 1
mov ecx, esi
and ecx, 7
xor ecx, 7
shl ebp, cl
or eax, ebp
movzx eax, al
inc esi
cmp edi, esi
ja 0x43f85c
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
xor ecx, ecx
test al, 1
je 0x43f888
mov ecx, 1
test al, 2
je 0x43f88d
inc ecx
test al, 4
je 0x43f892
inc ecx
test al, 8
je 0x43f897
inc ecx
test al, 0x10
je 0x43f89c
inc ecx
test al, 0x20
je 0x43f8a1
inc ecx
test al, 0x40
je 0x43f8a6
inc ecx
test eax, 0x80
je 0x43f8ae
inc ecx
and edx, eax
movzx edx, dl
movzx ecx, cl
mov edi, esi
and edi, 7
add ecx, edi
neg ecx
add ecx, 8
shr edx, cl
mov dword [esp + 0x40], edx
xor ebp, dword [esp + 0x40]
test ebp, 0x4000
je 0x43f8dd
xor ebp, 1
and ebp, 0x3fff
inc dword [esp + 0x38]
inc esi
mov edx, dword [esp + 0x3c]
cmp esi, edx
jb 0x43f82a
mov edx, dword [esp + 0x20]
test edx, edx
je 0x43fb36
add ebp, ebp
mov eax, esi
lea edi, [esi + 4]
mov ecx, esi
shr ecx, 3
mov dword [esp + 0x38], ecx
xor ecx, ecx
mov dword [esp + 0x40], ecx
mov ecx, edx
shr ecx, 3
mov dword [esp + 0x14], edx
test dl, 7
mov dword [esp + 0x3c], ecx
lea ecx, [ecx + 1]
jne 0x43f929
mov ecx, dword [esp + 0x3c]
cmp edx, 0x20
ja 0x43fb18
cmp esi, edi
ja 0x43fb0d
add ebx, dword [esp + 0x38]
xor edi, edi
test ecx, ecx
jbe 0x43fb40
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], esi
mov esi, eax
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x20], edx
movzx edx, byte [ebx]
xor eax, eax
test ebp, ebp
mov dword [esp + 0x24], edx
mov edx, 0
jbe 0x43fa86
cmp ebp, 6
jb 0x43fa5a
lea ecx, [ebp - 6]
mov dword [esp + 0x2c], ecx
lea ecx, [edx + esi]
mov dword [esp + 0x30], ecx
lea ecx, [esi + edx + 1]
mov dword [esp + 0x34], ecx
lea ecx, [esi + edx + 2]
mov dword [esp + 0x38], ecx
lea ecx, [esi + edx + 3]
mov dword [esp + 0x3c], ecx
lea ecx, [esi + edx + 4]
mov dword [esp + 0x28], ecx
mov dword [esp + 4], esi
mov esi, dword [esp + 0x38]
mov dword [esp], edx
mov edx, dword [esp + 0x34]
mov dword [esp + 8], edi
mov dword [esp + 0xc], ebx
mov dword [esp + 0x14], ebp
mov ebp, ecx
mov ebx, dword [esp + 0x30]
mov edi, 1
mov ecx, ebx
and ecx, 7
xor ecx, 7
shl edi, cl
or eax, edi
mov edi, 1
mov ecx, edx
and ecx, 7
xor ecx, 7
add ebx, 5
shl edi, cl
or eax, edi
mov edi, 1
mov ecx, esi
and ecx, 7
xor ecx, 7
add edx, 5
shl edi, cl
or eax, edi
mov ecx, dword [esp + 0x3c]
and ecx, 7
xor ecx, 7
mov edi, 1
shl edi, cl
or eax, edi
mov edi, 1
mov ecx, ebp
and ecx, 7
xor ecx, 7
add esi, 5
shl edi, cl
or eax, edi
movzx eax, al
add dword [esp + 0x3c], 5
add ebp, 5
mov edi, dword [esp]
add edi, 5
mov ecx, dword [esp + 0x2c]
cmp edi, ecx
mov dword [esp], edi
jbe 0x43f9cc
mov esi, dword [esp + 4]
mov edx, edi
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp + 0x14]
add esi, edx
mov dword [esp + 8], edi
mov dword [esp + 0xc], ebx
mov ebx, 1
mov ecx, esi
and ecx, 7
xor ecx, 7
shl ebx, cl
or eax, ebx
movzx eax, al
inc esi
inc edx
cmp edx, ebp
jb 0x43fa64
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0xc]
xor edx, edx
test al, 1
je 0x43fa91
mov edx, 1
test al, 2
je 0x43fa96
inc edx
test al, 4
je 0x43fa9b
inc edx
test al, 8
je 0x43faa0
inc edx
test al, 0x10
je 0x43faa5
inc edx
test al, 0x20
je 0x43faaa
inc edx
test al, 0x40
je 0x43faaf
inc edx
test eax, 0x80
je 0x43fab7
inc edx
mov ecx, dword [esp + 0x24]
and ecx, eax
movzx ecx, cl
mov esi, dword [esp + 0x40]
shl esi, 8
or esi, ecx
mov dword [esp + 0x40], esi
movzx ecx, dl
sub ebp, ecx
xor esi, esi
inc ebx
inc edi
mov edx, dword [esp + 0x10]
cmp edi, edx
jb 0x43f95e
mov eax, esi
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
cmp edx, 8
ja 0x43faf7
mov eax, esi
and eax, 7
add ecx, eax
neg ecx
add ecx, 8
mov edx, dword [esp + 0x40]
shr edx, cl
mov dword [esp + 0x40], edx
jmp 0x43fb21
mov edx, 0xa5a5a5a5
mov dword [esp + 0x40], edx
jmp 0x43fb21
mov edx, 0xa5a5a5a5
mov dword [esp + 0x40], edx
xor ebp, dword [esp + 0x40]
test ebp, 0x4000
je 0x43fb36
xor ebp, 1
and ebp, 0x3fff
mov eax, ebp
add esp, 0x44
pop ebx
pop ebp
pop esi
pop edi
ret
xor ecx, ecx
jmp 0x43faf0