Function at 0x43c980
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov edi, ecx
mov dword [esp + 8], 0
mov dword [esp], 0x888b8a8d
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x63
xor cl, byte [esp + eax]
add cl, 0x11
mov byte [esp + eax], cl
inc eax
cmp eax, 7
jne 0x43c9b0
mov ebx, dword [esp]
mov eax, dword [0x44e0c0]
test eax, eax
je 0x43ca16
xor ecx, ecx
mov edx, dword [0x44e0c4]
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x61813e67
je 0x43c9f0
inc ecx
cmp eax, ecx
jne 0x43c9e0
jmp 0x43ca16
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x43ca16
lea ecx, [esp + 8]
push ecx
push 0
push 0
push 5
push 0x10
push eax
push dword [0x44e0c8]
call fcn.0043eca0
add esp, 0x1c
mov ebx, eax
mov dword [esp], 0x41060708
mov dword [esp + 4], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax]
lea esi, [eax + 0x41]
mov ecx, 0xbe
sub ecx, eax
xor ecx, esi
and ecx, edx
xor ecx, esi
add cl, 0xbb
mov byte [esp + eax], cl
add eax, 0x5394ee9e
mov ecx, eax
and ecx, 0x23
or eax, 0xac6b1163
add eax, ecx
cmp eax, 8
jb 0x43ca30
cmp ebx, dword [esp]
jne 0x43cc04
mov dword [esp + 0x10], edi
push dword [esp + 8]
call fcn.0043c7d0
add esp, 4
mov edi, dword [esp + 8]
mov dword [esp], 0x888b8a8d
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, edx
add cl, 0x63
xor cl, byte [esp + edx]
add cl, 0x11
mov byte [esp + edx], cl
inc edx
cmp edx, 7
jne 0x43caa0
mov ebx, dword [esp]
mov edx, dword [0x44e0c0]
test edx, edx
je 0x43cb10
xor ebp, ebp
mov esi, dword [0x44e0c4]
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + ebp*8], 0x61813e67
je 0x43caeb
mov ecx, ebp
and ecx, 1
xor ebp, 1
lea ebp, [ebp + ecx*2]
cmp ebp, edx
jb 0x43cad0
jmp 0x43cb10
mov edx, dword [esi + ebp*8 + 4]
cmp edx, ebx
je 0x43cb10
push 0
push edi
push eax
push 5
push 0x10
push edx
push dword [0x44e0c8]
mov esi, eax
call fcn.0043eca0
add esp, 0x1c
mov ebx, eax
mov eax, esi
test ebx, ebx
js 0x43cbfb
mov dword [esp], 0x83c2c325
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov ecx, 0x45a6df0f
mov edx, 0x45a6de30
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edx - 0x45a6de30]
lea edi, [ebp*2]
not edi
add edi, ebp
mov esi, ebp
and esi, 3
and edi, 0x34
or edi, esi
xor edi, ebp
xor edi, 0x34
lea esi, [ecx - 0x45a6de40]
or esi, ecx
and esi, ebp
not ebp
or ebp, edi
and ebp, edx
or esi, ebp
mov edi, esi
and edi, 0xf
xor esi, 0xf
lea ebx, [esi + edi*2]
inc bl
mov byte [esp + edx - 0x45a6de30], bl
dec ecx
inc edx
cmp ecx, 0x45a6df08
jne 0x43cb40
mov ecx, dword [esp]
mov dword [esp + 0xc], ecx
mov esi, dword [eax]
mov ecx, eax
mov ebx, dword [esp + 0x28]
nop
nop
nop
nop
nop
nop
nop
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 0x43cbd5
add esi, 2
cmp bp, di
je 0x43cbc0
cmp bp, di
je 0x43cbe6
mov esi, dword [ecx]
test esi, esi
jne 0x43cbb0
mov ebx, dword [esp + 0xc]
jmp 0x43cbfb
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 ebx, ebx
push eax
call fcn.0043c860
add esp, 4
mov eax, ebx
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret 4