Function at 0x43be20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov ebp, ecx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0xc], 0
mov dword [esp], 0x282b2a25
xor eax, eax
xor ecx, ecx
movzx edi, byte [esp + ecx]
mov esi, edi
not esi
mov edx, ecx
xor edx, 0xd1271dc7
add edx, eax
and esi, 0x68
xor edi, 0x89eb3f68
or edi, esi
xor edx, 0x89eb3f68
mov esi, edi
and esi, edx
add edx, edi
add esi, esi
sub edx, esi
add dl, 0x1d
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 4
jne 0x43be40
mov edi, dword [esp]
mov eax, dword [0x44cdac]
test eax, eax
je 0x43bec6
xor ecx, ecx
mov edx, dword [0x44cdb0]
cmp dword [edx + ecx*8], 0x61813e67
je 0x43bea0
inc ecx
cmp eax, ecx
jne 0x43be90
jmp 0x43bec6
mov eax, dword [edx + ecx*8 + 4]
cmp eax, edi
je 0x43bec6
lea ecx, [esp + 0xc]
push ecx
push 0
push 0
push 5
push 0x10
push eax
push dword [0x44cdb4]
call fcn.0043e5b0
add esp, 0x1c
mov edi, eax
mov dword [esp], 0x83c2c1c4
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov eax, 0x7d41eb30
nop
nop
movzx ecx, byte [esp + eax - 0x7d41eb30]
xor ecx, eax
mov edx, ecx
not edx
and ecx, 0xf
and edx, 0xf0
sub ecx, edx
mov byte [esp + eax - 0x7d41eb30], cl
inc eax
cmp eax, 0x7d41eb37
jne 0x43bee0
cmp edi, dword [esp]
jne 0x43c094
mov dword [esp + 0x10], ebp
push dword [esp + 0xc]
call fcn.0043bcb0
add esp, 4
mov ecx, dword [esp + 0xc]
mov dword [esp + 8], ecx
mov dword [esp], 0x282b2a25
xor edx, edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edi]
mov ebp, esi
not ebp
mov ecx, edi
xor ecx, 0xd1271dc7
add ecx, edx
and ebp, 0x68
xor esi, 0x89eb3f68
or esi, ebp
xor ecx, 0x89eb3f68
mov ebp, esi
and ebp, ecx
add ecx, esi
add ebp, ebp
sub ecx, ebp
add cl, 0x1d
mov byte [esp + edi], cl
inc edi
add edx, 2
cmp edi, 4
jne 0x43bf40
mov edi, dword [esp]
mov ecx, dword [0x44cdac]
test ecx, ecx
je 0x43bfd8
xor edx, edx
mov esi, dword [0x44cdb0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x61813e67
je 0x43bfb0
inc edx
cmp ecx, edx
jne 0x43bfa0
jmp 0x43bfd8
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, edi
je 0x43bfd8
push 0
push dword [esp + 0xc]
push eax
push 5
push 0x10
push ecx
push dword [0x44cdb4]
mov esi, eax
call fcn.0043e5b0
add esp, 0x1c
mov edi, eax
mov eax, esi
test edi, edi
js 0x43c08b
mov dword [esp], 0x5312133d
mov byte [esp + 4], 0
mov esi, 0xc4
mov edx, 0x3b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
and edi, 0x33
mov ecx, esi
and ecx, 0x8c
or ecx, edi
xor cl, byte [esp + esi - 0xc4]
xor cl, 0x73
add cl, 0x2c
mov byte [esp + esi - 0xc4], cl
inc esi
dec edx
cmp esi, 0xc9
jne 0x43c000
mov ecx, dword [esp]
mov dword [esp + 8], ecx
mov esi, dword [eax]
mov ecx, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [ecx + esi + 0x3c]
add ecx, esi
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, word [edx + esi]
movzx edi, word [ebx + esi]
test bp, bp
je 0x43c065
add esi, 2
cmp bp, di
je 0x43c050
cmp bp, di
je 0x43c076
mov esi, dword [ecx]
test esi, esi
jne 0x43c040
mov edi, dword [esp + 8]
jmp 0x43c08b
mov edx, dword [ecx + 0x44]
mov esi, dword [esp + 0x10]
mov dword [esi + 8], edx
mov ecx, dword [ecx + 0xdc]
mov dword [esi + 0xc], ecx
xor edi, edi
push eax
call fcn.0043bda0
add esp, 4
mov eax, edi
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret 4