Function at 0x43c250
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
add eax, esi
sub eax, edi
mov dword [ebp + 8], 0
mov dword [ebp + 4], 0
mov dword [ebp], 0
mov dword [esp + 0x1c], eax
cmp eax, esi
jbe 0x43c5db
mov ebx, dword [esp + 0x48]
xor ecx, ecx
mov dword [esp + 4], 0
mov dword [esp + 8], 0
jmp 0x43c2dd
mov ecx, dword [esp + 0xc]
mov edx, ecx
mov eax, dword [esp + 4]
sub edx, eax
cmp ecx, dword [esp + 8]
je 0x43c439
mov dword [eax + edx], esi
add ecx, 4
mov dword [ebp + 4], ecx
add esi, edi
dec esi
inc esi
cmp esi, dword [esp + 0x1c]
jae 0x43c5db
mov dword [esp + 0xc], ecx
test ebx, ebx
je 0x43c394
movzx eax, byte [ebx]
mov byte [esp], al
mov byte [esp + 0x10], 0xa5
lea eax, [esp + 0x11]
mov word [eax + 4], 0
mov dword [eax], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx + 0x10]
mov edx, ecx
and edx, 5
mov ebx, ecx
and ebx, 2
mov edi, ecx
or edi, 2
imul edi, ebx
xor ebx, 2
imul ebx, edx
mov edx, ecx
xor edx, 0x5ecabd57
add edx, edi
add edx, ebx
mov ebx, edx
and ebx, eax
mov edi, ebx
and edi, 2
mov ebp, ebx
or ebx, 2
imul ebx, edi
xor edi, 2
and ebp, 0xfffffffd
imul ebp, edi
add ebx, ebp
add edx, eax
mov eax, edx
not eax
and eax, ebx
not ebx
and ebx, edx
sub ebx, eax
mov eax, ebx
not eax
and eax, 0xf0
and ebx, 0xf
sub ebx, eax
add bl, 0x3d
mov byte [esp + ecx + 0x10], bl
inc ecx
cmp ecx, 7
jne 0x43c310
movzx eax, byte [esp]
cmp al, byte [esp + 0x10]
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x48]
je 0x43c3a3
movzx eax, byte [esi]
mov ecx, dword [esp + 0x40]
cmp al, byte [ecx]
jne 0x43c430
cmp edi, 2
jb 0x43c2b0
mov ecx, 1
jmp 0x43c3da
movzx eax, byte [esi + ecx]
mov edx, dword [esp + 0x40]
cmp al, byte [edx + ecx]
jne 0x43c53f
inc ecx
cmp ecx, edi
je 0x43c2b0
test ebx, ebx
je 0x43c3c0
movzx eax, byte [ebx + ecx]
mov byte [esp + 0x10], 0x85
lea edx, [esp + 0x11]
mov word [edx + 4], 0
mov dword [edx], 0
xor ebx, ebx
mov edx, ebx
nop
nop
nop
nop
nop
mov ah, bl
add ah, 0x4f
xor ah, byte [esp + ebx + 0x10]
add ah, 0x75
mov byte [esp + ebx + 0x10], ah
and edx, 1
not ebx
or ebx, 1
sub edx, ebx
mov ebx, edx
cmp edx, 7
jb 0x43c400
cmp al, byte [esp + 0x10]
mov ebx, dword [esp + 0x48]
jne 0x43c3c0
jmp 0x43c3d1
mov ecx, dword [esp + 0xc]
jmp 0x43c2d2
mov dword [esp], edx
mov ecx, edx
sar ecx, 2
lea eax, [ecx + 1]
mov edx, ecx
shr edx, 1
add edx, ecx
cmp edx, eax
ja 0x43c450
mov edx, eax
mov dword [esp + 8], edx
lea eax, [edx*4]
push eax
call fcn.00408380
add esp, 4
mov ebp, eax
mov eax, dword [esp + 4]
test eax, eax
mov dword [esp + 0x18], ebp
je 0x43c59f
cmp ebp, eax
mov ebx, eax
mov eax, dword [esp + 0xc]
mov edx, dword [esp]
jbe 0x43c54b
cmp eax, ebp
jbe 0x43c54b
test edx, edx
je 0x43c587
mov ebx, dword [esp + 4]
mov edx, dword [esp]
lea eax, [ebx + edx]
dec eax
mov ecx, dword [esp + 0x18]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x43c4d7
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x43c4c0
add eax, edx
add ecx, edx
add edx, dword [esp]
mov ebx, dword [esp + 4]
mov edi, ebx
sub edi, dword [esp + 0xc]
cmp edi, 0xfffffff8
ja 0x43c587
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x43c4f0
jmp 0x43c587
add esi, ecx
dec esi
mov ecx, dword [esp + 0xc]
jmp 0x43c2d2
mov ecx, edx
shr ecx, 2
mov eax, ebx
mov edi, ebp
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
and edx, 0xfffffffc
lea ecx, [edx + ebp]
add edx, ebx
mov ebx, ecx
mov ecx, eax
shr ecx, 1
and ecx, 1
mov ebp, edx
mov edi, ebx
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
test al, 1
je 0x43c587
mov ecx, dword [esp]
and ecx, 2
movzx edx, byte [edx + ecx]
mov byte [ebx + ecx], dl
push dword [esp + 4]
call fcn.00408390
add esp, 4
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x48]
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x34]
mov dword [eax], ebp
mov eax, dword [esp + 8]
lea eax, [eax*4]
add eax, ebp
mov dword [esp + 8], eax
mov ecx, ebp
mov edx, dword [esp]
add ecx, edx
mov eax, dword [esp + 0x34]
mov ebp, dword [esp + 8]
mov dword [eax + 8], ebp
mov ebp, dword [esp + 0x18]
mov eax, ebp
mov dword [esp + 4], ebp
mov ebp, dword [esp + 0x34]
jmp 0x43c2c6
mov eax, ebp
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret