Function at 0x439f10
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov eax, dword [esp + 0x3c]
mov ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
add ecx, ebp
sub ecx, dword [esp + 0x4c]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x20], ecx
cmp ecx, ebp
jbe 0x43a249
mov esi, dword [esp + 0x50]
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [esp + 0xc], 0
jmp 0x439f78
add ebp, ecx
dec ebp
mov eax, dword [esp + 0x3c]
inc ebp
cmp ebp, dword [esp + 0x20]
jae 0x43a249
test esi, esi
je 0x439fac
movzx eax, byte [esi]
mov byte [esp + 0x18], 0xcb
mov dword [esp + 0x19], 0
xor ecx, ecx
nop
nop
mov edx, ecx
add dl, 0x22
xor dl, byte [esp + ecx + 0x18]
add dl, 0x56
mov byte [esp + ecx + 0x18], dl
inc ecx
cmp ecx, 5
jne 0x439f90
cmp al, byte [esp + 0x18]
je 0x439fb8
movzx eax, byte [ebp]
mov ecx, dword [esp + 0x48]
cmp al, byte [ecx]
jne 0x439f69
cmp dword [esp + 0x4c], 2
jb 0x43a090
mov ecx, 1
mov dword [esp + 0x24], ebp
jmp 0x439fe9
movzx eax, byte [ebp + ecx]
mov edx, dword [esp + 0x48]
cmp al, byte [edx + ecx]
jne 0x439f66
inc ecx
cmp ecx, dword [esp + 0x4c]
je 0x43a090
test esi, esi
je 0x439fd0
movzx eax, byte [esi + ecx]
mov byte [esp + 8], al
mov byte [esp + 0x10], 0x45
lea eax, [esp + 0x11]
mov byte [eax + 2], 0
mov word [eax], 0
mov ebx, 0xf5a70bf
mov eax, 0xa58f40
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ebx - 0xf5a70af]
lea edi, [ebx - 0xf5a7080]
xor esi, 0xe96253d7
mov edx, ebx
or edx, 0x169dac28
and edi, 0x28
xor edi, 0xf9e7dfff
or edi, eax
and edi, edx
not edi
mov ebp, esi
and ebp, edi
add ebp, ebp
add edi, esi
mov edx, edi
sub edx, ebp
and edi, 1
or edx, 1
add edx, edi
add dl, 0x44
mov byte [esp + ebx - 0xf5a70af], dl
inc ebx
dec eax
cmp ebx, 0xf5a70c3
jne 0x43a020
movzx eax, byte [esp + 8]
cmp al, byte [esp + 0x10]
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x50]
jne 0x439fd0
jmp 0x439fde
mov ecx, dword [esp + 4]
mov ebx, ecx
mov edx, dword [esp]
sub ebx, edx
cmp ecx, dword [esp + 0xc]
je 0x43a0aa
mov eax, dword [esp + 0x3c]
jmp 0x43a230
mov eax, ebx
sar eax, 2
mov ecx, ebx
shr ecx, 1
and ecx, 2
mov edi, eax
shr edi, 1
add edi, eax
xor eax, 1
add eax, ecx
cmp edi, eax
ja 0x43a0c7
mov edi, eax
lea eax, [edi*4]
push eax
call fcn.00408770
add esp, 4
mov edx, eax
mov eax, dword [esp]
test eax, eax
je 0x43a215
mov dword [esp + 0xc], edi
cmp edx, eax
mov ecx, dword [esp + 4]
mov dword [esp + 8], ebx
mov dword [esp + 0x14], edx
jbe 0x43a1af
cmp ecx, edx
jbe 0x43a1af
test ebx, ebx
je 0x43a1fe
mov eax, dword [esp]
mov edx, dword [esp + 8]
add eax, edx
dec eax
mov ecx, dword [esp + 0x14]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x43a144
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x43a130
add eax, edx
add ecx, edx
add edx, dword [esp + 8]
mov esi, dword [esp]
sub esi, dword [esp + 4]
cmp esi, 0xfffffff8
mov esi, dword [esp + 0x50]
ja 0x43a1fe
neg edx
xor edi, edi
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 0x43a160
jmp 0x43a1fe
mov ecx, ebx
shr ecx, 2
mov dword [esp], eax
mov esi, edx
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edx, ebx
and edx, 0xfffffffc
lea edi, [esi + edx]
add edx, dword [esp]
mov ecx, ebx
xor ecx, 0xfffffffc
mov eax, ebx
or eax, 3
and eax, ecx
mov ecx, eax
shr ecx, 1
mov esi, edx
mov dword [esp + 4], edi
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov esi, dword [esp + 0x50]
test bl, 1
je 0x43a1fe
and eax, 0xfffffffe
movzx ecx, byte [edx + eax]
mov edx, dword [esp + 4]
mov byte [edx + eax], cl
push dword [esp]
call fcn.00408780
add esp, 4
mov ebx, dword [esp + 8]
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x3c]
mov dword [eax], edx
lea ecx, [edx + edi*4]
mov edi, edx
add edi, ebx
mov dword [esp + 0xc], ecx
mov dword [eax + 8], ecx
mov ecx, edx
mov dword [esp], edx
mov ecx, edi
mov dword [edx + ebx], ebp
add ecx, 4
mov dword [esp + 4], ecx
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x4c]
add ebp, ecx
dec ebp
jmp 0x439f6d
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret