Function at 0x100568cc
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push esi
push edi
mov ecx, dword [esp + 0x1c]
cmp ecx, 0
je 0x10056a95
call 0x100568e5
pop ebp
pushfd
cld
cmp dword [esp + 0x2c], 0
je 0x10056ae0
lea ebp, [ebp - 0x1495]
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 0x10056935
sub edx, ebx
sub edi, edx
jmp 0x10056948
sub edx, eax
and edx, 0xfff
add edx, 0x140
sub edi, edx
nop
nop
nop
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 0x100569b0
cmp ebx, 0xf0c
jb 0x100569b8
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 0x100569c0
sub ebp, 0x800
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
test ecx, 0xfffffff0
je 0x10056a9c
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.100551d0
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 0x100569f8
test ecx, 0xf
jne 0x10056a9c
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 0x10056a90
mov ecx, 0x3c
xor eax, eax
nop
nop
mov esi, esi
rep stosd dword es:[edi], eax
mov esp, dword [esp + 0x10]
popfd
pop edi
pop esi
pop ebx
pop ebp
ret
mov eax, edi
mov edi, dword [esp + 0x18]
push eax
mov ebx, 0x10
sub ebx, ecx
cmp edi, esi
je 0x10056abd
nop
nop
mov esi, esi
rep movsb byte es:[edi], byte [esi]
jmp 0x10056ac0
lea edi, [ecx + edi]
mov ecx, ebx
xor eax, eax
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 0x100569f8
lea ebp, [ebp - 0x995]
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 0x10056b1f
sub edx, ebx
sub edi, edx
jmp 0x10056b30
sub edx, eax
and edx, 0xfff
add edx, 0x140
sub edi, edx
nop
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 0x10056b98
cmp ebx, 0xf0c
jb 0x10056ba0
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 0x10056ba8
sub ebp, 0x900
cmp esi, dword [esp + 0x18]
je 0x10056c8c
mov edi, dword [esp + 0x24]
mov dword [esp + 0x28], edi
nop
nop
nop
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.10055ce8
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 0x10056c64
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 0x10056bdc
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 0x10056d30
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 0x10056c42
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.10055ce8
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 0x10056d18
mov dword [esp + 0x1c], ecx
jne 0x10056c8c
jmp 0x10056d30
mov edi, dword [esp + 0x18]
lea esi, [esp + 0x2c]
lea edi, [ecx + edi]
lea esi, [ecx + esi + 0x10]
neg ecx
mov esi, esi
rep movsb byte es:[edi], byte [esi]
nop
nop
nop
cmp dword [esp + 0x12c], 0
mov edi, dword [esp + 0x20]
je 0x10056d50
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