Function at 0x438840
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x68
mov dword [esp + 0x20], ecx
mov ebp, dword [esp + 0x7c]
mov dword [ebp + 8], 0
mov dword [ebp + 4], 0
mov dword [ebp], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x1c], 0x100000
mov dword [esp + 4], 0
mov dword [esp + 0x34], 0x55565768
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x34]
mov ecx, eax
neg ecx
lea esi, [ecx + ecx]
and esi, 0xe1a6cac2
xor ecx, 0x8f2c9a9e
sub ecx, esi
inc ecx
xor ecx, edx
lea edx, [ecx + ecx]
mov esi, edx
not esi
and esi, 2
or edx, 0xfd
add edx, ecx
add edx, esi
add dl, 9
mov byte [esp + eax + 0x34], dl
lea ecx, [eax + eax]
and ecx, 2
sub eax, ecx
inc eax
mov edx, eax
and edx, ecx
xor eax, ecx
lea eax, [eax + edx*2]
cmp eax, 4
jb 0x438890
mov eax, dword [esp + 0x34]
mov ecx, dword [0x448580]
test ecx, ecx
je 0x43893e
xor edx, edx
mov esi, dword [0x448584]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xa8f779e4
je 0x438910
inc edx
cmp ecx, edx
jne 0x438900
jmp 0x43893e
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43893e
lea eax, [esp + 0x1c]
lea edx, [esp + 4]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 0x18
push ecx
push dword [0x448588]
call fcn.00439ae0
add esp, 0x24
test eax, eax
js 0x43904a
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 8], 0xf9f9f7f6
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 8]
lea edx, [eax - 0x7c7313a]
lea esi, [eax*2 - 0xf8e6274]
neg esi
add esi, eax
add esi, 0xc5
xor esi, edx
and esi, ecx
xor esi, edx
mov ecx, esi
and ecx, 0x4f
xor esi, 0xcf
lea ecx, [esi + ecx*2]
inc cl
mov byte [esp + eax + 8], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x438990
mov ebx, dword [esp + 8]
cmp ebx, 0x7ffffffe
ja 0x438f93
mov dword [esp + 0x14], 0
xor esi, esi
xor edi, edi
jmp 0x438a24
mov dword [ebp + 4], edi
mov dword [ebp], esi
mov eax, dword [esp + 0x14]
mov dword [ebp + 8], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 0x40]
add ebx, dword [esp + 0x34]
cmp ebx, 0x7fffffff
jae 0x438f93
mov ecx, dword [esp + 0x20]
push 0
push 0x1c
lea eax, [esp + 0x3c]
push eax
push 0
push ebx
call fcn.00438680
cmp eax, 0xbfffffff
ja 0x438f93
test eax, eax
js 0x438a10
cmp dword [esp + 0x44], 0x1000
jne 0x438a10
test byte [esp + 0x48], 0x66
je 0x438a10
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x1c]
cmp eax, edx
mov dword [esp + 0x2c], ebx
jbe 0x438c0d
mov dword [esp], esi
mov dword [esp + 8], 0x55565768
xor ecx, ecx
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 8]
mov edx, ecx
neg edx
lea ebx, [edx + edx]
and ebx, 0xe1a6cac2
xor edx, 0x8f2c9a9e
sub edx, ebx
inc edx
xor edx, esi
lea ebx, [edx + edx]
mov esi, ebx
not esi
and esi, 2
or ebx, 0xfd
add ebx, edx
add ebx, esi
add bl, 9
mov byte [esp + ecx + 8], bl
lea edx, [ecx + ecx]
and edx, 2
sub ecx, edx
inc ecx
mov esi, ecx
and esi, edx
xor ecx, edx
lea ecx, [ecx + esi*2]
cmp ecx, 4
jb 0x438a80
mov ecx, dword [0x448580]
test ecx, ecx
je 0x438b2e
mov edx, dword [esp + 8]
xor esi, esi
mov ebx, dword [0x448584]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebx + esi*8], 0x6a2d3ea3
je 0x438b00
inc esi
cmp ecx, esi
jne 0x438af0
jmp 0x438b2e
mov ecx, dword [ebx + esi*8 + 4]
cmp ecx, edx
je 0x438b2e
push 0x8000
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0xc]
push eax
push 0xffffffffffffffff
push 0x10
push ecx
push dword [0x448588]
call fcn.00439ae0
add esp, 0x1c
mov eax, dword [esp + 0x40]
mov dword [esp + 4], 0
mov dword [esp + 0x1c], eax
mov dword [esp + 8], 0x55565768
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 8]
mov ecx, eax
neg ecx
lea esi, [ecx + ecx]
and esi, 0xe1a6cac2
xor ecx, 0x8f2c9a9e
sub ecx, esi
inc ecx
xor ecx, edx
lea edx, [ecx + ecx]
mov esi, edx
not esi
and esi, 2
or edx, 0xfd
add edx, ecx
add edx, esi
add dl, 9
mov byte [esp + eax + 8], dl
lea ecx, [eax + eax]
and ecx, 2
sub eax, ecx
inc eax
mov edx, eax
and edx, ecx
xor eax, ecx
lea eax, [eax + edx*2]
cmp eax, 4
jb 0x438b50
mov eax, dword [esp + 8]
mov ecx, dword [0x448580]
test ecx, ecx
mov ebx, dword [esp + 0x2c]
je 0x438bfe
xor edx, edx
mov esi, dword [0x448584]
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xa8f779e4
je 0x438bd0
inc edx
cmp ecx, edx
jne 0x438bc0
jmp 0x438bfe
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x438bfe
push 4
push 0x3000
lea eax, [esp + 0x24]
push eax
push 0
lea eax, [esp + 0x14]
push eax
push 0xffffffffffffffff
push 0x18
push ecx
push dword [0x448588]
call fcn.00439ae0
add esp, 0x24
test eax, eax
mov esi, dword [esp]
js 0x438f93
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x64]
push eax
push edx
push dword [esp + 0xc]
push ebx
call fcn.00438760
test eax, eax
jns 0x438cae
mov dword [esp], esi
mov dword [esp + 8], 0x6ae9e80a
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 8]
mov edx, ecx
and edx, 2
mov ebx, ecx
or ebx, 2
imul ebx, edx
xor edx, 2
mov ebp, ecx
and ebp, 1
neg ebp
and ebp, edx
mov edx, ecx
xor edx, 0x3fcb118f
add edx, ebp
add edx, ebx
xor edx, esi
mov esi, edx
and esi, 0x85
mov ebx, edx
and ebx, 2
mov ebp, ebx
xor ebp, 2
imul ebp, esi
or esi, 2
imul esi, ebx
xor edx, 0x87
add edx, ebp
add edx, esi
inc dl
mov byte [esp + ecx + 8], dl
inc ecx
cmp ecx, 4
jne 0x438c40
cmp eax, dword [esp + 8]
mov ebp, dword [esp + 0x7c]
mov esi, dword [esp]
jne 0x438a10
push dword [esp + 0x88]
push dword [esp + 0x88]
push dword [esp + 0x88]
push dword [esp + 0x70]
push dword [esp + 0x14]
lea eax, [esp + 0x1c]
push eax
call fcn.00439060
add esp, 0x18
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x28], ecx
cmp eax, ecx
je 0x4389f4
mov dword [esp + 0x50], eax
mov ebp, eax
jmp 0x438d51
push esi
call fcn.00407fd0
add esp, 4
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
lea eax, [ecx + eax*4]
mov dword [esp + 0x14], eax
mov edi, ecx
mov edx, dword [esp + 0x18]
add edi, edx
mov esi, ecx
mov ecx, dword [esp + 0x60]
mov eax, ebx
not eax
and eax, ecx
not ecx
and ecx, ebx
mov ebx, ecx
mov ecx, dword [esp + 0x2c]
sub ecx, eax
add ecx, ebx
mov dword [esi + edx], ecx
add edi, 4
add ebp, 4
cmp ebp, dword [esp + 0x28]
je 0x438f56
mov ebx, dword [ebp]
mov ecx, dword [esp + 4]
mov edx, edi
sub edx, esi
cmp edi, dword [esp + 0x14]
jne 0x438d2a
mov dword [esp + 0x60], ecx
mov dword [esp + 0x18], edx
mov ecx, edx
sar ecx, 2
lea eax, [ecx + 1]
mov edx, ecx
shr edx, 1
add edx, ecx
cmp edx, eax
ja 0x438d7e
mov edx, eax
mov dword [esp + 0x14], edx
lea eax, [edx*4]
push eax
call fcn.00407fc0
add esp, 4
mov ecx, eax
test esi, esi
je 0x438d11
mov dword [esp + 0x5c], ebx
cmp ecx, esi
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], ecx
jbe 0x438e62
cmp edi, ecx
jbe 0x438e62
test eax, eax
je 0x438d00
mov dword [esp], esi
mov edx, dword [esp + 0x18]
lea eax, [esi + edx]
dec eax
mov ecx, dword [esp + 0x24]
add ecx, edx
dec ecx
mov esi, edx
and esi, 7
je 0x438df4
neg esi
xor edx, edx
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp esi, edx
jne 0x438de0
add eax, edx
add ecx, edx
add edx, dword [esp + 0x18]
mov ebx, dword [esp]
mov esi, ebx
sub esi, edi
cmp esi, 0xfffffff8
mov esi, ebx
ja 0x438d00
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 0x438e10
jmp 0x438d00
mov edx, esi
mov dword [esp], esi
mov esi, eax
mov ebx, ecx
mov ecx, eax
shr ecx, 2
mov eax, edx
mov edi, ebx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edx, esi
and edx, 0xfffffffc
lea eax, [ebx + edx]
add edx, dword [esp]
and esi, 3
mov ecx, esi
shr ecx, 1
mov ebx, edx
mov edi, eax
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ecx, dword [esp]
lea edi, [esi + 1]
mov dword [esp + 0x58], esi
mov ebx, esi
mov esi, ecx
not ebx
or ebx, 1
mov ecx, ebx
add ecx, edi
je 0x438d00
mov esi, dword [esp + 0x18]
not esi
or esi, 0xfffffffe
add edi, esi
add edx, edi
add eax, edi
mov esi, ecx
and esi, 7
je 0x438ee6
mov dword [esp + 0x54], ecx
xor edi, edi
nop
nop
movzx ecx, byte [edx + edi]
mov byte [eax + edi], cl
inc edi
cmp esi, edi
jne 0x438ed0
add edx, edi
add eax, edi
mov ecx, dword [esp + 0x54]
sub ecx, edi
add ebx, dword [esp + 0x58]
cmp ebx, 7
mov esi, dword [esp]
jb 0x438d00
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, ecx
movzx ecx, byte [edx + edi]
mov byte [eax + edi], cl
movzx ecx, byte [edx + edi + 1]
mov byte [eax + edi + 1], cl
movzx ecx, byte [edx + edi + 2]
mov byte [eax + edi + 2], cl
movzx ecx, byte [edx + edi + 3]
mov byte [eax + edi + 3], cl
movzx ecx, byte [edx + edi + 4]
mov byte [eax + edi + 4], cl
movzx ecx, byte [edx + edi + 5]
mov byte [eax + edi + 5], cl
movzx ecx, byte [edx + edi + 6]
mov byte [eax + edi + 6], cl
movzx ecx, byte [edx + edi + 7]
mov byte [eax + edi + 7], cl
mov ecx, ebx
add edi, 8
cmp ebx, edi
jne 0x438f00
jmp 0x438d00
mov ebp, dword [esp + 0x7c]
mov dword [ebp + 4], edi
mov dword [ebp], esi
mov eax, dword [esp + 0x14]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x50]
test eax, eax
je 0x438a10
cmp eax, dword [esp + 0x28]
je 0x438a10
push eax
call fcn.00407fd0
add esp, 4
mov dword [esp + 8], 0
jmp 0x438a10
mov dword [esp + 8], 0x55565768
xor eax, eax
nop
nop
nop
movzx edx, byte [esp + eax + 8]
mov ecx, eax
neg ecx
lea esi, [ecx + ecx]
and esi, 0xe1a6cac2
xor ecx, 0x8f2c9a9e
sub ecx, esi
inc ecx
xor ecx, edx
lea edx, [ecx + ecx]
mov esi, edx
not esi
and esi, 2
or edx, 0xfd
add edx, ecx
add edx, esi
add dl, 9
mov byte [esp + eax + 8], dl
lea ecx, [eax + eax]
and ecx, 2
sub eax, ecx
inc eax
mov edx, eax
and edx, ecx
xor eax, ecx
lea eax, [eax + edx*2]
cmp eax, 4
jb 0x438fa0
mov eax, dword [0x448580]
test eax, eax
je 0x43904a
mov ecx, dword [esp + 8]
xor edx, edx
mov esi, dword [0x448584]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x6a2d3ea3
je 0x439020
inc edx
cmp eax, edx
jne 0x439010
jmp 0x43904a
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43904a
lea ecx, [esp + 0x30]
lea edx, [esp + 4]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 0x10
push eax
push dword [0x448588]
call fcn.00439ae0
add esp, 0x1c
mov eax, ebp
add esp, 0x68
pop esi
pop edi
pop ebx
pop ebp
ret 0x10