Function at 0x103e76b3
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push esi
push edi
mov ecx, dword [esp + 0x1c]
cmp ecx, 0
je 0x103e7849
call 0x103e76c9
pop ebp
pushfd
cld
cmp dword [esp + 0x2c], 0
je 0x103e788c
lea ebp, [ebp - 0x1489]
lea edi, [esp - 0x134]
and edi, 0xffffffc0
mov eax, ebp
lea ebx, [ebp + 0x800]
mov edx, edi
and eax, 0xfff
and ebx, 0xfff
and edx, 0xfff
cmp edx, ebx
jb 0x103e770c
sub edx, ebx
sub edi, edx
jmp 0x103e771c
sub edx, eax
and edx, 0xfff
add edx, 0x140
sub edi, edx
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
xchg edi, esp
add esp, 4
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], esi
mov dword [esp + 0x12c], 0
mov ebx, edx
mov ecx, 0x3d
sub ebx, ebp
mov esi, edx
and ebx, 0xfff
lea edi, [esp + 0x3c]
cmp ebx, 0x800
jb 0x103e777c
cmp ebx, 0xf0c
jb 0x103e7784
lea ecx, [ecx]
mov dword [esp + 0x20], edi
mov esi, esi
rep movsd dword es:[edi], dword [esi]
mov esi, eax
mov edi, 0x10
nop
mov eax, dword [ebp]
mov ebx, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x40]
mov edx, dword [ebp + 0x60]
lea ebp, [ebp + 0x80]
dec edi
jne 0x103e778c
sub ebp, 0x800
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
test ecx, 0xfffffff0
je 0x103e7850
mov eax, dword [edi]
mov ebx, dword [edi + 4]
mov ecx, dword [edi + 8]
mov edx, dword [edi + 0xc]
xor eax, dword [esi]
xor ebx, dword [esi + 4]
xor ecx, dword [esi + 8]
xor edx, dword [esi + 0xc]
mov edi, dword [esp + 0x20]
call fcn.103e6000
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
mov ecx, dword [esp + 0x1c]
lea esi, [esi + 0x10]
mov dword [esp + 0x14], esi
lea edx, [edi + 0x10]
mov dword [esp + 0x18], edx
sub ecx, 0x10
test ecx, 0xfffffff0
mov dword [esp + 0x1c], ecx
jne 0x103e77c0
test ecx, 0xf
jne 0x103e7850
mov esi, dword [esp + 0x24]
mov ecx, dword [edi + 8]
mov edx, dword [edi + 0xc]
mov dword [esi], eax
mov dword [esi + 4], ebx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edx
cmp dword [esp + 0x12c], 0
mov edi, dword [esp + 0x20]
je 0x103e7844
mov ecx, 0x3c
xor eax, eax
mov esi, esi
rep stosd dword es:[edi], eax
mov esp, dword [esp + 0x10]
popfd
pop edi
pop esi
pop ebx
pop ebp
ret
push edi
mov edi, dword [esp + 0x18]
mov ebx, 0x10
sub ebx, ecx
cmp edi, esi
je 0x103e7866
mov esi, esi
rep movsb byte es:[edi], byte [esi]
jmp 0x103e7869
lea edi, [edi + ecx]
mov ecx, ebx
xor eax, eax
lea ecx, [ecx]
mov esi, esi
rep stosb byte es:[edi], al
pop edi
mov esi, dword [esp + 0x18]
mov eax, dword [edi]
mov ebx, dword [edi + 4]
mov dword [esp + 0x1c], 0x10
jmp 0x103e77c0
lea ebp, [ebp - 0x989]
lea edi, [esp - 0x134]
and edi, 0xffffffc0
mov eax, ebp
lea ebx, [ebp + 0x900]
mov edx, edi
and eax, 0xfff
and ebx, 0xfff
and edx, 0xfff
cmp edx, ebx
jb 0x103e78c1
sub edx, ebx
sub edi, edx
jmp 0x103e78d4
sub edx, eax
and edx, 0xfff
add edx, 0x140
sub edi, edx
lea ecx, [ecx]
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
xchg edi, esp
add esp, 4
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], esi
mov dword [esp + 0x12c], 0
mov ebx, edx
mov ecx, 0x3d
sub ebx, ebp
mov esi, edx
and ebx, 0xfff
lea edi, [esp + 0x3c]
cmp ebx, 0x900
jb 0x103e7934
cmp ebx, 0xf0c
jb 0x103e793c
lea ecx, [ecx]
mov dword [esp + 0x20], edi
mov esi, esi
rep movsd dword es:[edi], dword [esi]
mov esi, eax
mov edi, 0x12
nop
mov eax, dword [ebp]
mov ebx, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x40]
mov edx, dword [ebp + 0x60]
lea ebp, [ebp + 0x80]
dec edi
jne 0x103e7944
sub ebp, 0x900
cmp esi, dword [esp + 0x18]
je 0x103e7a14
mov edi, dword [esp + 0x24]
mov dword [esp + 0x28], edi
lea ecx, [ecx]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
mov edi, dword [esp + 0x20]
call fcn.103e6acf
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x1c]
xor eax, dword [edi]
xor ebx, dword [edi + 4]
xor ecx, dword [edi + 8]
xor edx, dword [edi + 0xc]
sub esi, 0x10
jb 0x103e79f0
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
mov dword [esp + 0x28], esi
lea esi, [esi + 0x10]
mov dword [esp + 0x14], esi
lea edi, [edi + 0x10]
mov dword [esp + 0x18], edi
jne 0x103e7974
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
mov eax, dword [edi]
mov ebx, dword [edi + 4]
mov ecx, dword [edi + 8]
mov edx, dword [edi + 0xc]
mov dword [esi], eax
mov dword [esi + 4], ebx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edx
jmp 0x103e7aac
lea edi, [esp + 0x2c]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
lea ecx, [esi + 0x10]
mov esi, edi
mov edi, dword [esp + 0x18]
mov esi, esi
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x14]
jmp 0x103e79cf
lea edi, [esp + 0x2c]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
mov edi, dword [esp + 0x20]
call fcn.103e6acf
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x18]
xor eax, dword [edi]
xor ebx, dword [edi + 4]
xor ecx, dword [edi + 8]
xor edx, dword [edi + 0xc]
mov dword [esi], eax
mov dword [esi + 4], ebx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edx
lea esi, [esi + 0x10]
mov dword [esp + 0x18], esi
lea esi, [esp + 0x2c]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
mov esi, dword [esp + 0x14]
lea esi, [esi + 0x10]
mov dword [esp + 0x14], esi
mov ecx, dword [esp + 0x1c]
sub ecx, 0x10
jb 0x103e7a94
mov dword [esp + 0x1c], ecx
jne 0x103e7a14
jmp 0x103e7aac
mov edi, dword [esp + 0x18]
lea esi, [esp + 0x2c]
lea edi, [edi + ecx]
lea esi, [esi + ecx + 0x10]
neg ecx
mov esi, esi
rep movsb byte es:[edi], byte [esi]
lea ecx, [ecx]
cmp dword [esp + 0x12c], 0
mov edi, dword [esp + 0x20]
je 0x103e7ac8
mov ecx, 0x3c
xor eax, eax
lea ecx, [ecx]
mov esi, esi
rep stosd dword es:[edi], eax
mov esp, dword [esp + 0x10]
popfd
pop edi
pop esi
pop ebx
pop ebp
ret