Function at 0x443840
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov ecx, ebx
add ecx, ebp
mov edx, edi
adc edx, 0
xor eax, eax
mov esi, 0xfffffffe
cmp esi, ecx
mov ecx, 0
sbb ecx, edx
mov edx, dword [esp + 0x28]
jb 0x443902
mov ecx, ebx
shr ecx, 2
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
not eax
or eax, 0xfffffffc
add eax, ebx
add edx, eax
inc edx
lea esi, [eax + ebp]
inc esi
mov eax, ebx
xor eax, 0xfffffffc
or ebx, 3
and ebx, eax
mov ecx, ebx
shr ecx, 1
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov edi, ebx
xor edi, 0xfffffffe
mov ebp, ebx
or ebp, 1
xor eax, eax
and ebp, edi
je 0x443acd
and ebx, 0xfffffffe
add esi, ebx
add edx, ebx
mov edi, ebp
and edi, 7
je 0x443a50
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esi + ebx]
mov byte [edx + ebx], cl
inc ebx
cmp edi, ebx
jne 0x4438e0
add esi, ebx
add edx, ebx
mov edi, ebp
sub edi, ebx
cmp ebp, 8
jae 0x443a57
jmp 0x443acd
mov dword [esp], 0x34353a3b
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0xc
mov edx, ecx
xor edx, 0x76
add edx, esi
xor dl, byte [esp + ecx]
add dl, 0xb2
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 7
jne 0x443920
mov eax, dword [esp]
mov ecx, dword [0x45316c]
test ecx, ecx
je 0x44399a
xor edx, edx
mov esi, dword [0x453170]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x7789b0cb
je 0x443970
inc edx
cmp ecx, edx
jne 0x443960
jmp 0x44399a
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x44399a
lea eax, [esp + 8]
push 2
push 0
push 0
push eax
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 7
push dword [0x453174]
push ecx
call fcn.004421f0
add esp, 0x28
test eax, eax
js 0x443acd
push 0x1e03da9a
push dword [0x45b188]
call fcn.00444f40
add esp, 8
push 0
push 0
push ebx
push dword [esp + 0x34]
push edi
push ebp
push dword [esp + 0x20]
call eax
mov ecx, dword [esp + 8]
mov dword [esp], 0x34353a3b
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor edx, edx
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
and edi, 0xc
mov ebx, esi
xor ebx, 0x76
add ebx, edi
xor bl, byte [esp + esi]
add bl, 0xb2
mov byte [esp + esi], bl
inc esi
add edx, 2
cmp esi, 7
jne 0x4439f0
mov edx, dword [0x45316c]
test edx, edx
je 0x443acd
mov esi, dword [esp]
xor edi, edi
mov ebx, dword [0x453170]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebx + edi*8], 0x7e776f1
je 0x443aaf
mov ebp, edi
xor ebp, 1
and edi, 1
lea edi, [edi*2]
add edi, ebp
cmp edi, edx
jb 0x443a30
jmp 0x443acd
mov edi, ebp
cmp ebp, 8
jb 0x443acd
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
movzx ebx, byte [esi + ecx]
mov byte [edx + ecx], bl
movzx ebx, byte [esi + ecx + 1]
mov byte [edx + ecx + 1], bl
movzx ebx, byte [esi + ecx + 2]
mov byte [edx + ecx + 2], bl
movzx ebx, byte [esi + ecx + 3]
mov byte [edx + ecx + 3], bl
movzx ebx, byte [esi + ecx + 4]
mov byte [edx + ecx + 4], bl
movzx ebx, byte [esi + ecx + 5]
mov byte [edx + ecx + 5], bl
movzx ebx, byte [esi + ecx + 6]
mov byte [edx + ecx + 6], bl
movzx ebx, byte [esi + ecx + 7]
mov byte [edx + ecx + 7], bl
add ecx, 8
cmp edi, ecx
jne 0x443a60
jmp 0x443acd
mov edx, dword [ebx + edi*8 + 4]
cmp edx, esi
je 0x443acd
push ecx
push 1
push dword [0x453174]
push edx
mov esi, eax
call fcn.004421f0
mov eax, esi
add esp, 0x10
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret