Function at 0x395670
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, dword [esp + 0x34]
xor ecx, ecx
test eax, eax
je 0x3956a3
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 0x395690
add ecx, 0xfffffffe
and ecx, 0xfffe
mov word [esp + 0x10], cx
mov edx, eax
test eax, eax
je 0x3956b3
add ecx, 2
mov edx, ecx
mov word [esp + 0x12], dx
mov dword [esp + 0x14], eax
mov dword [esp], 0x80b0a0d
mov eax, 0xd6cad183
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x29352e7d]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
not edx
and edx, 0x9a
and ecx, 0x65
sub ecx, edx
add cl, 0xb
mov byte [esp + eax + 0x29352e7d], cl
inc eax
cmp eax, 0xd6cad187
jne 0x3956d0
mov ebx, dword [esp]
mov eax, dword [0x3a0374]
test eax, eax
je 0x39575f
xor ecx, ecx
mov edx, dword [0x3a0378]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0xc0a4c970
je 0x395730
inc ecx
cmp eax, ecx
jne 0x395720
jmp 0x39575f
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x39575f
lea ecx, [esp + 0xc]
lea edx, [esp + 0x10]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x44]
push 6
push dword [0x3a037c]
push eax
call fcn.00390f10
add esp, 0x24
mov ebx, eax
mov dword [esp], 0x511e1f39
mov byte [esp + 4], 0
xor eax, eax
mov cl, 0xba
nop
movzx edx, byte [esp + eax]
xor dl, cl
mov ch, 0xa6
sub ch, dl
mov byte [esp + eax], ch
inc eax
dec cl
cmp eax, 5
jne 0x395770
cmp ebx, dword [esp]
jne 0x3958f7
push dword [esp + 0xc]
call fcn.0038e1b0
add esp, 4
mov esi, dword [esp + 0xc]
mov dword [esp + 8], 0x191a1b12
xor edx, edx
mov bl, 0x7c
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edx + 8]
xor cl, bl
xor cl, 7
add cl, 0x99
mov byte [esp + edx + 8], cl
inc edx
dec bl
cmp edx, 4
jne 0x3957b0
mov edx, dword [esp + 8]
mov dword [esp], 0x80b0a0d
mov ebx, 0xd6cad183
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebx + 0x29352e7d]
mov edi, ebx
and edi, ecx
add edi, edi
sub ecx, edi
add ecx, ebx
mov edi, ecx
not edi
and edi, 0x9a
and ecx, 0x65
sub ecx, edi
add cl, 0xb
mov byte [esp + ebx + 0x29352e7d], cl
inc ebx
cmp ebx, 0xd6cad187
jne 0x3957e0
mov ebx, dword [esp]
mov ecx, dword [0x3a0374]
test ecx, ecx
je 0x395870
xor ebp, ebp
mov edi, dword [0x3a0378]
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + ebp*8], 0xc0a4c970
je 0x395840
inc ebp
cmp ecx, ebp
jne 0x395830
jmp 0x395870
mov ebp, dword [edi + ebp*8 + 4]
cmp ebp, ebx
je 0x395870
lea ecx, [esp + 0xc]
lea edi, [esp + 0x10]
push ecx
push esi
push eax
push edx
push edi
push dword [esp + 0x44]
push 6
push dword [0x3a037c]
push ebp
mov edi, eax
call fcn.00390f10
add esp, 0x24
mov ebx, eax
mov eax, edi
test ebx, ebx
mov edx, dword [esp + 0x3c]
js 0x3958ee
mov esi, dword [esp + 0x38]
test esi, esi
je 0x395885
mov ecx, dword [eax + 4]
mov dword [esi], ecx
cmp dword [esp + 0x40], 0
je 0x3958ee
test edx, edx
je 0x3958e5
mov esi, edx
mov ecx, dword [esp + 0x40]
mov edx, dword [ecx]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x3958a1
mov edx, ecx
lea ebp, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov edi, esi
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
mov ecx, edx
and ecx, 0xfffffffc
add esi, ecx
lea ebp, [eax + ecx]
add ebp, 0xc
mov ecx, edx
shr ecx, 1
and ecx, 1
mov dword [esp + 0x18], ebp
mov edi, esi
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
test dl, 1
je 0x3958e5
and edx, 2
mov ecx, dword [esp + 0x18]
movzx ecx, byte [ecx + edx]
mov byte [esi + edx], cl
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x40]
mov dword [edx], ecx
push eax
call fcn.0038e210
add esp, 4
mov eax, ebx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret