Function at 0x854df0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x278
mov eax, dword [0x6d7a68]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
push ebx
mov ebx, dword [ebp + 0x1c]
push esi
push edi
push 0x84
mov dword [ebp - 0x270], eax
lea eax, [ebp - 0xf8]
push 0
push eax
mov dword [ebp - 0x274], ecx
mov dword [ebp - 0x278], edx
call fcn.0067e0a0
mov eax, dword [ebp + 0x10]
mov ecx, 8
mov esi, fcn.006e6a70
lea edi, [ebp - 0xf8]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x270]
mov ecx, 8
lea edi, [ebp - 0xd8]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp + 0x18]
mov ecx, eax
mov edx, eax
mov byte [ebp - 0xb8], al
shr eax, 0x18
shr ecx, 8
mov byte [ebp - 0xb5], al
mov eax, dword [ebp - 0x278]
push esi
mov byte [ebp - 0xb7], cl
push eax
lea ecx, [ebp - 0xb4]
shr edx, 0x10
push ecx
mov byte [ebp - 0xb6], dl
call fcn.0067cc20
add esp, 0x18
add esi, 0x44
push esi
lea edx, [ebp - 0xf8]
push edx
lea ecx, [ebp - 0x268]
call fcn.008cf4a0
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x268]
call fcn.008cf520
cmp byte [ebp + 0x24], 3
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
mov dword [ebx], ecx
mov ecx, dword [ebp - 8]
mov dword [ebx + 4], edx
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], ecx
jb 0x854f33
movzx edi, byte [ebp + 0x20]
mov esi, 0x32
lea esp, [esp]
lea ecx, [ebp - 0x268]
call fcn.008ce400
push edi
push ebx
lea ecx, [ebp - 0x268]
call fcn.008cf2f0
lea edx, [ebp - 0x14]
push edx
lea ecx, [ebp - 0x268]
call fcn.008cf520
sub esi, 1
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
mov dword [ebx], eax
mov eax, dword [ebp - 8]
mov dword [ebx + 4], ecx
mov dword [ebx + 8], edx
mov dword [ebx + 0xc], eax
jne 0x854ef0
cmp byte [ebp + 0x24], 3
mov byte [ebp - 0x269], 0
mov byte [ebp - 0x26b], 0
jb 0x8550bd
push 0x84
lea ecx, [ebp - 0xf8]
push 0
push ecx
call fcn.0067e0a0
mov edx, dword [ebp - 0x278]
mov ecx, 8
mov esi, fcn.006e6a70
lea edi, [ebp - 0xf8]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp + 0x18]
push esi
push edx
lea eax, [ebp - 0xd8]
push eax
call fcn.0067cc20
add esp, 0x18
lea ecx, [ebp - 0x268]
call fcn.008ce400
add esi, 0x20
push esi
lea ecx, [ebp - 0xf8]
push ecx
lea ecx, [ebp - 0x268]
call fcn.008cf2f0
lea edx, [ebp - 0x74]
push edx
lea ecx, [ebp - 0x268]
call fcn.008cf520
mov esi, dword [ebp - 0x274]
mov ecx, 8
lea edi, [ebp - 0x64]
rep movsd dword es:[edi], dword [esi]
movzx esi, byte [ebp + 0x20]
mov dl, 0x13
mov byte [ebp - 0x26a], dl
mov dword [ebp - 0x270], esi
jmp 0x854fec
mov dl, byte [ebp - 0x26a]
mov esi, dword [ebp - 0x270]
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x24], eax
mov eax, dword [ebx + 8]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebx + 0xc]
mov dword [ebp - 0x1c], eax
xor eax, eax
test esi, esi
mov dword [ebp - 0x18], ecx
jle 0x85501b
lea esp, [esp]
xor byte [ebp + eax - 0x24], dl
add eax, 1
cmp eax, esi
jl 0x855010
lea edx, [ebp - 0x1f8]
push edx
lea eax, [ebp - 0x24]
push esi
push eax
mov byte [ebp - 0x269], 0
mov byte [ebp - 0x26b], 0
call fcn.008d2d80
add esp, 0xc
xor esi, esi
nop
movzx ecx, byte [ebp + esi - 0x64]
push ecx
lea edx, [ebp - 0x269]
push edx
lea eax, [ebp - 0x26b]
push eax
lea ecx, [ebp - 0x1f8]
push ecx
call fcn.008d2e00
mov byte [ebp + esi - 0x44], al
add esi, 1
add esp, 0x10
cmp esi, 0x20
jl 0x855040
mov al, byte [ebp - 0x26a]
mov dl, al
add al, 0xff
test dl, dl
mov ecx, 8
lea esi, [ebp - 0x44]
lea edi, [ebp - 0x64]
rep movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x26a], al
jne 0x854fe0
mov eax, 0x10
lea ecx, [ebp - 0x74]
lea edx, [ebp - 0x64]
nop
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x855138
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x8550a0
jmp 0x855134
movzx eax, byte [ebp + 0x20]
lea edx, [ebp - 0x1f8]
push edx
push eax
push ebx
call fcn.008d2d80
mov ebx, dword [ebp - 0x274]
lea ecx, [ebp - 0x44]
add esp, 0xc
xor esi, esi
sub ebx, ecx
nop
lea edi, [ebp + esi - 0x44]
movzx edx, byte [ebx + edi]
push edx
lea eax, [ebp - 0x269]
push eax
lea ecx, [ebp - 0x26b]
push ecx
lea edx, [ebp - 0x1f8]
push edx
call fcn.008d2e00
add esi, 1
add esp, 0x10
cmp esi, 0x20
mov byte [edi], al
jl 0x8550e0
mov eax, 0x20
mov ecx, fcn.006e6a70
lea edx, [ebp - 0x44]
lea ecx, [ecx]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x855138
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x855120
test eax, eax
je 0x855195
movzx edi, byte [ecx]
movzx esi, byte [edx]
sub esi, edi
jne 0x855187
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x855195
movzx edi, byte [ecx]
movzx esi, byte [edx]
sub esi, edi
jne 0x855187
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x855195
movzx edi, byte [ecx]
movzx esi, byte [edx]
sub esi, edi
jne 0x855187
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x855195
movzx eax, byte [ecx]
movzx esi, byte [edx]
sub esi, eax
je 0x855195
test esi, esi
mov eax, 1
jg 0x855197
or eax, 0xffffffff
jmp 0x855197
xor eax, eax
xor ecx, ecx
test eax, eax
sete cl
mov esi, ecx
lea ecx, [ebp - 0x268]
call fcn.008ce3f0
mov ecx, dword [ebp - 4]
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.0067de1d
mov esp, ebp
pop ebp
ret