Function at 0x43e1c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, dword [esp + 0x3c]
xor ecx, ecx
test eax, eax
je 0x43e1f3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx], 0
lea ecx, [ecx + 2]
jne 0x43e1e0
add ecx, 0xfffffffe
and ecx, 0xfffe
mov word [esp + 0x1c], cx
mov edx, eax
test eax, eax
je 0x43e203
add ecx, 2
mov edx, ecx
mov word [esp + 0x1e], dx
mov dword [esp + 0x20], eax
mov dword [esp], 0x686b6a65
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov eax, 0x808c0e63
mov ecx, 0x20230498
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x7f73f19d]
lea edx, [eax + 0x5f50ee04]
and edx, edi
add edx, edx
mov esi, edx
sub esi, edi
add esi, ecx
not esi
and esi, 0xfc
add esi, edi
mov ebx, edi
sub ebx, edx
lea edi, [eax + ebx]
add ebx, eax
add ebx, 0x5f50ee04
or edi, ebx
and ebx, 0xa0af11fc
sub esi, ebx
sub esi, edx
add esi, eax
and edi, 1
xor esi, 1
lea edx, [esi + edi*2]
mov byte [esp + eax + 0x7f73f19d], dl
inc eax
dec ecx
cmp eax, 0x808c0e6a
jne 0x43e230
mov ebx, dword [esp]
mov eax, dword [0x44a87c]
test eax, eax
je 0x43e2df
xor ecx, ecx
mov edx, dword [0x44a880]
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0xc0a4c970
je 0x43e2b0
inc ecx
cmp eax, ecx
jne 0x43e2a0
jmp 0x43e2df
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x43e2df
lea ecx, [esp + 0x10]
lea edx, [esp + 0x1c]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x4c]
push 0x18
push eax
push dword [0x44a884]
call fcn.004395d0
add esp, 0x24
mov ebx, eax
mov dword [esp], 0xe3222143
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor eax, eax
mov ecx, 0x77
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x46
mov edx, eax
and edx, 1
or edx, esi
xor dl, byte [esp + eax]
xor dl, 0x4e
add dl, 0xd8
mov byte [esp + eax], dl
inc eax
dec ecx
cmp eax, 7
jne 0x43e300
cmp ebx, dword [esp]
jne 0x43e51c
push dword [esp + 0x10]
call fcn.00436690
add esp, 4
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], 0x313e3f3e
mov dword [esp + 0x18], 0
mov edx, 0xaccc3eb5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx + 0x5333c15f]
mov ecx, eax
and ecx, edx
add cl, cl
sub al, cl
movzx eax, al
add eax, edx
add al, 0x77
mov byte [esp + edx + 0x5333c15f], al
inc edx
cmp edx, 0xaccc3ebd
jne 0x43e360
mov edx, dword [esp + 0x14]
mov dword [esp], 0x686b6a65
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov ebx, 0x808c0e63
mov esi, 0x20230498
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebx + 0x7f73f19d]
lea edi, [ebx + 0x5f50ee04]
and edi, ecx
add edi, edi
mov ebp, edi
sub ebp, ecx
add ebp, esi
not ebp
and ebp, 0xfc
add ebp, ecx
sub ecx, edi
lea eax, [ebx + ecx]
add ecx, ebx
add ecx, 0x5f50ee04
or eax, ecx
and ecx, 0xa0af11fc
sub ebp, ecx
sub ebp, edi
add ebp, ebx
and eax, 1
xor ebp, 1
lea eax, [eax*2]
add eax, ebp
mov byte [esp + ebx + 0x7f73f19d], al
inc ebx
dec esi
cmp ebx, 0x808c0e6a
jne 0x43e3b0
mov ebx, dword [esp]
mov eax, dword [0x44a87c]
test eax, eax
je 0x43e440
xor ecx, ecx
mov esi, dword [0x44a880]
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x44]
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + ecx*8], 0xc0a4c970
je 0x43e44a
inc ecx
cmp eax, ecx
jne 0x43e430
jmp 0x43e47d
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x44]
jmp 0x43e47d
mov esi, dword [esi + ecx*8 + 4]
cmp esi, ebx
je 0x43e47d
lea eax, [esp + 0x10]
lea ecx, [esp + 0x1c]
push eax
push dword [esp + 0x10]
mov eax, dword [esp + 0x10]
push eax
push edx
push ecx
push dword [esp + 0x4c]
push 0x18
push esi
push dword [0x44a884]
call fcn.004395d0
add esp, 0x24
mov ebx, eax
test ebx, ebx
js 0x43e510
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x43e496
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
mov dword [ecx], eax
test edi, edi
je 0x43e510
test ebp, ebp
je 0x43e507
mov eax, dword [edi]
mov ecx, dword [esp + 8]
mov ecx, dword [ecx + 8]
cmp eax, ecx
jb 0x43e4ad
mov eax, ecx
mov edx, dword [esp + 8]
lea esi, [edx + 0xc]
mov ecx, eax
shr ecx, 2
mov edi, ebp
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, eax
not ecx
or ecx, 0xfffffffc
add ecx, eax
lea edi, [ecx + ebp]
inc edi
lea esi, [edx + ecx]
add esi, 0xd
mov ecx, eax
xor ecx, 0xfffffffc
mov edx, eax
or edx, 3
and edx, ecx
mov ecx, edx
shr ecx, 1
mov ebp, esi
mov dword [esp + 0xc], edi
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
test al, 1
mov edi, dword [esp + 0x48]
je 0x43e507
and edx, 0xfffffffe
movzx eax, byte [esi + edx]
mov ecx, dword [esp + 0xc]
mov byte [ecx + edx], al
mov eax, dword [esp + 8]
mov eax, dword [eax + 8]
mov dword [edi], eax
push dword [esp + 8]
call fcn.00436720
add esp, 4
mov eax, ebx
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret