Function at 0x43efe0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x20
mov eax, dword [esp + 0x28]
push ebx
push ebp
push esi
lea ebx, [eax + 0xa]
mov esi, 1
and ebx, reloc.OLEAUT32.dll_VariantInit
push edi
mov dword [esp + 0x10], esi
jns 0x43f004
dec ebx
or ebx, 0xfffffff8
inc ebx
je 0x43f00f
mov ecx, 8
sub ecx, ebx
mov ebx, ecx
call fcn.0046f3b3
and al, 0xf8
mov dword [esp + 0x18], esi
or al, bl
test ebx, ebx
mov byte [esp + 0x24], al
jle 0x43f031
call fcn.0046f3b3
mov byte [esp + esi + 0x24], al
inc esi
dec ebx
jne 0x43f024
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x40]
xor eax, eax
lea ebp, [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov dword [edx], 0
mov dword [esp + 0x14], 0
mov ebx, edi
mov dword [esp + 0x20], eax
sub ebp, edi
cmp esi, 8
jge 0x43f074
call fcn.0046f3b3
mov byte [esp + esi + 0x24], al
mov eax, dword [esp + 0x10]
inc esi
inc eax
mov dword [esp + 0x10], eax
cmp esi, 8
jne 0x43f0e3
xor eax, eax
mov cl, byte [esp + eax + 0x1c]
mov bl, byte [esp + eax + 0x24]
xor bl, cl
mov byte [esp + eax + 0x24], bl
inc eax
cmp eax, 8
jl 0x43f078
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
push edx
lea ecx, [esp + 0x28]
push eax
push ecx
call fcn.0043f4c0
add esp, 0xc
mov eax, edi
mov dword [esp + 0x18], ebp
mov ecx, 8
mov dl, byte [eax + ebp]
mov bl, byte [eax]
xor bl, dl
mov byte [eax], bl
inc eax
dec ecx
jne 0x43f0ae
mov ecx, dword [esp + 0x28]
mov ebx, edi
mov edi, eax
mov eax, dword [esp + 0x14]
add eax, 8
sub ebp, 8
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
xor esi, esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], esi
cmp dword [esp + 0x10], 2
jle 0x43f059
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
test eax, eax
mov dword [esp + 0x40], edx
jle 0x43f1c3
mov ebp, edi
mov edx, ebx
neg ebp
neg edx
cmp esi, 8
jge 0x43f12b
mov eax, dword [esp + 0x40]
mov cl, byte [eax]
inc eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x38]
mov byte [esp + esi + 0x24], cl
inc esi
dec eax
cmp esi, 8
mov dword [esp + 0x38], eax
jne 0x43f1b7
mov esi, ebx
lea eax, [esp + 0x24]
xor ecx, ecx
lea edx, [esp + edx + 0x1c]
sub esi, eax
mov eax, dword [esp + 0x18]
test eax, eax
lea eax, [esp + ecx + 0x24]
je 0x43f153
lea ebx, [esi + edx]
mov bl, byte [ebx + eax]
jmp 0x43f156
mov bl, byte [esi + eax]
xor byte [eax], bl
inc ecx
cmp ecx, 8
jl 0x43f13f
mov ecx, dword [esp + 0x3c]
push edi
lea edx, [esp + 0x28]
push ecx
push edx
mov dword [esp + 0x24], 0
call fcn.0043f4c0
add esp, 0xc
mov eax, edi
lea esi, [esp + ebp + 0x1c]
mov ecx, 8
mov dl, byte [eax + esi]
mov bl, byte [eax]
xor bl, dl
mov byte [eax], bl
inc eax
dec ecx
jne 0x43f184
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
add ecx, 8
mov dword [esp + 0x20], edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x24]
mov edx, ebp
mov ebx, edi
sub ebp, 8
mov dword [esp + 0x1c], ecx
mov edi, eax
xor esi, esi
mov eax, dword [esp + 0x38]
test eax, eax
jg 0x43f10a
lea ebp, [esp + 0x1c]
mov dword [esp + 0x10], 1
sub ebp, edi
cmp esi, 8
jge 0x43f1ed
mov ecx, dword [esp + 0x10]
lea eax, [esp + esi + 0x24]
inc ecx
inc esi
mov dword [eax], 0
mov dword [esp + 0x10], ecx
cmp esi, 8
jne 0x43f25d
mov esi, ebx
lea edx, [esp + 0x24]
xor ecx, ecx
sub esi, edx
mov bl, byte [esp + ecx + 0x24]
lea eax, [esp + ecx + 0x24]
mov dl, byte [esi + eax]
xor bl, dl
inc ecx
cmp ecx, 8
mov byte [eax], bl
jl 0x43f1f9
mov eax, dword [esp + 0x3c]
push edi
lea ecx, [esp + 0x28]
push eax
push ecx
call fcn.0043f4c0
add esp, 0xc
mov eax, edi
mov dword [esp + 0x18], ebp
mov ecx, 8
mov dl, byte [eax + ebp]
mov bl, byte [eax]
xor bl, dl
mov byte [eax], bl
inc eax
dec ecx
jne 0x43f22c
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x14]
add ecx, 8
mov ebx, edi
sub ebp, 8
mov dword [esp + 0x20], edx
mov dword [esp + 0x14], ecx
mov edi, eax
xor esi, esi
cmp dword [esp + 0x10], 8
jl 0x43f1d1
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
mov dword [ecx], eax
pop ebx
add esp, 0x20
ret