Function at 0x425700
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
mov dword [esp + 0x10], 0x5b9b5975
mov dword [esp + 0x14], 0x47d645d4
mov dword [esp + 0x18], 0x43a3418c
mov dword [esp + 0x1c], 0x4faf4dd0
mov dword [esp + 0x20], 0x4b4a4965
lea eax, [esp + 0x24]
mov dword [esp + 4], eax
mov dword [esp + 0x24], 0
mov byte [esp + 0x28], 0
xor esi, esi
xor edx, edx
mov dword [esp], esi
movzx ecx, byte [esp + edx + 0x10]
mov edi, edx
xor edi, 0xfac9d58b
mov ebx, dword [esp]
and ebx, 0x7593ab16
add edi, ebx
inc edi
mov esi, ecx
and esi, 2
mov ebx, ecx
or ebx, 2
imul ebx, esi
xor esi, 2
mov eax, ecx
and eax, 0xfffffffd
imul eax, esi
add ebx, eax
not ebx
add ebx, ecx
xor ebx, ecx
and ebx, edi
xor ebx, ecx
mov dword [esp + 0x8c], ebx
mov esi, dword [esp]
mov eax, dword [esp + 0x8c]
mov ecx, 0x1d
sub ecx, eax
or ecx, 0x4a
add ecx, eax
add eax, 0xe2
or eax, 0x4a
add eax, ecx
add al, 0xe3
mov byte [esp + edx + 0x10], al
inc edx
add esi, 2
cmp edx, 0x19
jne 0x425750
lea esi, [esp + 0x122]
lea eax, [esp + 0x10]
mov ecx, 5
mov edi, esi
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0x136]
xor ecx, ecx
mov eax, dword [esp + 4]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
lea edi, [esp + 0x60]
push edi
push 0
push 0
push 9
push esi
push 0
call dword [0x44c2c4]
mov ebx, dword [esp + 0x60]
test ebx, ebx
jns 0x425811
mov eax, 0xffffffff
jmp 0x425814
lea eax, [ebx + ebx]
push eax
call fcn.00408a60
add esp, 4
push edi
push ebx
mov dword [esp + 0x5c], eax
push eax
push 9
push esi
push 0
call dword [0x44c2c4]
mov dword [esp + 0x10], 0xfb63f9c2
mov dword [esp + 0x14], 0xff59fd6f
mov dword [esp + 0x18], 0xf362f16f
mov dword [esp + 0x1c], 0xf7f4f556
mov dword [esp + 0x20], 0
mov word [esp + 0x24], 0
mov eax, 0xc3330f3f
mov ecx, 0xc0
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x3cccf0d1]
mov esi, edx
not esi
or esi, ecx
mov edi, esi
not edi
mov ebx, edi
and ebx, 0xfffffffd
and esi, 2
imul esi, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
sub edx, esi
sub edx, edi
add edx, eax
mov dword [esp + 0x8c], edx
mov edx, dword [esp + 0x8c]
add dl, 0x47
mov byte [esp + eax + 0x3cccf0d1], dl
inc eax
dec ecx
cmp eax, 0xc3330f55
jne 0x425870
lea edi, [esp + 0xdc]
lea edx, [esp + 0x10]
mov ecx, 4
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xec]
lea edx, [esp + 0x20]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov dword [esp + 0x10], 0x43db4d08
mov dword [esp + 0x14], 0x47e141d7
mov dword [esp + 0x18], 0xbb2c45d7
mov dword [esp + 0x1c], 0xbff9b91c
mov dword [esp + 0x20], 0xb320bd1d
mov dword [esp + 0x24], 0xb720b111
mov dword [esp + 0x28], 0xabaab53d
lea esi, [esp + 0x2c]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov word [esp + 0x34], 0
mov ecx, 0xadda8bf6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x5225741a]
xor edx, ecx
mov dword [esp + 0x8c], edx
mov edx, dword [esp + 0x8c]
add dl, 0x46
mov byte [esp + ecx + 0x5225741a], dl
movzx edx, byte [esp + ecx + 0x5225741b]
lea edi, [ecx + 1]
xor edi, edx
mov dword [esp + 0x8c], edi
mov edx, dword [esp + 0x8c]
add dl, 0x46
mov byte [esp + ecx + 0x5225741b], dl
add ecx, 2
cmp ecx, 0xadda8c1c
jne 0x425950
lea edi, [esp + 0x106]
lea ebx, [esp + 0x10]
mov ecx, 7
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x122]
xor ecx, ecx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov dword [esp + 0x10], 0xebabd592
mov dword [esp + 0x14], 0xef8de99f
mov dword [esp + 0x18], 0xe39aed9f
mov dword [esp + 0x1c], 0xe7b0e186
mov dword [esp + 0x20], 0xfba2e5b2
lea ebx, [esp + 0x24]
mov word [esp + 0x24], 0xf9fa
mov dword [esp + 0x26], 0
mov dword [esp + 0x29], 0
mov eax, 0x22
mov esi, 0xd49a4edd
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + esi + 0x2b65b133]
mov ecx, eax
xor ecx, esi
and ecx, edi
xor ecx, esi
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x8c]
add cl, 0xf5
mov byte [esp + esi + 0x2b65b133], cl
cmp eax, 6
je 0x425a81
movzx ecx, byte [esp + esi + 0x2b65b134]
lea edi, [esi + 1]
lea edx, [eax - 1]
xor edx, edi
and edx, ecx
xor edx, edi
mov dword [esp + 0x8c], edx
mov ecx, dword [esp + 0x8c]
add cl, 0xf5
mov byte [esp + esi + 0x2b65b134], cl
add eax, 0xfffffffe
add esi, 2
jmp 0x425a20
lea esi, [esp + 0x136]
lea eax, [esp + 0x10]
mov ecx, 5
mov edi, esi
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0x14a]
mov ecx, 1
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
lea eax, [esp + 0xdc]
mov dword [esp + 0xd0], eax
lea eax, [esp + 0x106]
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], esi
mov eax, dword [esp + 0x54]
add eax, 2
mov dword [esp + 0x64], eax
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x58], 0
cmp ecx, 3
setne al
xor ecx, ecx
jmp dword [eax*4 + 0x448638]
jmp dword [0x448710]
mov dword [esp + 0xc8], ecx
mov ecx, dword [esp + ecx*4 + 0xd0]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
cmp word [ecx + eax + 2], 0
lea eax, [eax + 2]
jne 0x425b50
mov dword [esp + 0x5c], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x10], 0xb3eeb1dc
mov dword [esp + 0x14], 0xb7d5b5cb
mov dword [esp + 0x18], 0xcbb6c9a9
mov dword [esp + 0x1c], 0xcf9dcdec
mov dword [esp + 0x20], 0xc3a3c1b4
mov dword [esp + 0x24], 0xc7a3c5b0
mov word [esp + 0x28], 0xd9d8
mov dword [esp + 0x2e], 0
mov dword [esp + 0x2a], 0
xor eax, eax
xor ecx, ecx
nop
nop
mov dword [esp], eax
movzx edx, byte [esp + ecx + 0x10]
mov eax, dword [esp]
and eax, 0x76ebfc70
mov esi, ecx
xor esi, 0x3b75fe38
add esi, eax
lea ebx, [edx + edx]
mov edi, ebx
not edi
add edi, edx
and ebx, 2
mov eax, edx
xor eax, 1
add eax, ebx
and edx, 0xffffffdf
mov ebx, edx
not ebx
add ebx, eax
sub edx, eax
mov eax, edx
and eax, 0x41aefab1
and ebx, 0xbe51054e
or ebx, eax
and edi, 0x8b6074df
xor ebx, edi
not edx
and edx, edi
mov eax, esi
or eax, 0x749f8b20
xor ebx, 0x41aefab1
or edx, ebx
mov edi, eax
sub edi, esi
add edi, 0x8b6074df
or esi, 0x44880b20
and esi, 0x4fe87fff
xor esi, edi
or edi, eax
not edi
or edi, esi
xor edi, 0x30178000
mov eax, edx
and eax, edi
add edi, edx
add eax, eax
sub edi, eax
mov dword [esp + 0x8c], edi
mov eax, dword [esp + 0x8c]
add al, 0x78
mov byte [esp + ecx + 0x10], al
mov eax, dword [esp]
inc ecx
add eax, 2
cmp ecx, 0x22
jne 0x425bb0
mov edx, dword [esp + 0x5c]
sar edx, 1
lea edi, [esp + 0xec]
lea eax, [esp + 0x10]
mov ecx, 6
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea eax, [esp + 0x28]
mov ecx, 1
lea edi, [esp + 0x104]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, dword [esp + 0x60]
lea ecx, [edx + eax]
mov dword [esp + 0x70], edx
add edx, eax
add edx, 0xd
lea eax, [ecx + ecx]
add eax, 0x1a
test edx, edx
jns 0x425cb2
mov eax, 0xffffffff
push eax
call fcn.00408a60
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x54]
movzx ecx, word [eax]
mov eax, edi
test cx, cx
mov esi, dword [esp + 0x40]
je 0x425cf1
mov edx, dword [esp + 0x64]
mov eax, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x425ce0
mov word [eax], 0x5c
add eax, 2
movzx ecx, word [esi]
test cx, cx
je 0x425d21
lea edx, [esi + 2]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x425d10
mov word [eax], 0
movzx ecx, word [esp + 0xec]
test cx, cx
je 0x425d51
lea edx, [esp + 0xee]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x425d40
mov word [eax], 0
lea eax, [esp + 0x68]
push 0x60
push 3
push 0x120089
push eax
push edi
call fcn.0043f7b0
add esp, 0x14
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x448640]
xor ebx, ebx
jmp dword [0x4486b0]
lea eax, [esp + 0x74]
push 0
push eax
push dword [esp + 0x70]
call fcn.0043fbe0
add esp, 0xc
not eax
shr eax, 0x1f
mov dword [esp + 0xc], 0
jmp dword [eax*4 + 0x448648]
mov esi, dword [esp + 0x74]
lea eax, [esi + 1]
push eax
call fcn.00408a60
add esp, 4
mov ebx, eax
push 0
push esi
push eax
push dword [esp + 0x74]
call fcn.0043fd30
add esp, 0x10
not eax
shr eax, 0x1f
mov dword [esp + 0xc], 0
jmp dword [eax*4 + 0x448650]
mov eax, dword [0x4486a0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov dword [esp + 0x44], edi
mov eax, dword [esp + 0x68]
mov dword [esp + 0x50], eax
mov dword [esp + 0x10], 0x40414e4f
lea eax, [esp + 0x28]
mov dword [eax - 0x11], 0
mov dword [eax - 0x14], 0
mov ecx, 0xf91299b5
mov ebx, 0x6ed664a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x6ed665b]
lea eax, [ecx + 1]
mov dword [esp], eax
and eax, edi
mov esi, ecx
mov dword [esp + 8], ecx
mov edx, eax
and edx, 0xfffffffd
mov ecx, eax
or ecx, 0xfffffffd
inc ecx
imul ecx, edx
mov edx, eax
and edx, 2
or eax, 2
imul eax, edx
add ecx, edi
sub ecx, eax
add ecx, esi
inc ecx
lea eax, [ebx - 1]
mov dword [esp + 4], eax
or ecx, eax
mov edx, ecx
not edx
mov eax, edx
and eax, 2
mov esi, edx
or edx, 2
imul edx, eax
mov eax, ecx
and eax, 2
and esi, 0xfffffffd
imul eax, esi
add eax, edx
add eax, ebx
shr ecx, 1
and ecx, 1
imul ecx, esi
lea ecx, [edx + ecx*2]
mov ebx, dword [esp + 8]
mov edx, ebx
sub edx, ecx
and edx, edi
not edi
and edi, eax
sub edx, edi
mov dword [esp + 0x8c], edx
mov eax, dword [esp + 0x8c]
lea ecx, [eax + eax]
not ecx
add ecx, eax
and eax, 0x307dcc05
lea edx, [eax + eax]
not edx
add edx, eax
mov esi, edx
or esi, 2
xor edx, 0xfffffffd
and edx, esi
not esi
imul esi, edx
and ecx, 0xcf8233fa
or ecx, eax
mov eax, ecx
not eax
and eax, esi
not esi
and esi, ecx
sub eax, esi
mov byte [esp + ebx + 0x6ed665b], al
mov ebx, dword [esp + 4]
mov eax, dword [esp]
mov ecx, eax
cmp eax, 0xf91299c0
jne 0x4262f0
mov eax, dword [0x44c2c8]
test eax, eax
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0xc]
je 0x426410
mov ecx, dword [esp + 0x10]
xor edx, edx
mov esi, dword [0x44c2cc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xa3c1f363
je 0x426400
inc edx
cmp eax, edx
jne 0x4263f0
jmp 0x426410
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
jne 0x426db2
nop
nop
nop
nop
mov esi, dword [esp + 0x40]
jmp dword [0x4486b0]
push dword [esp + 0x50]
push 1
push dword [0x44c2d0]
push eax
call fcn.0043c490
add esp, 0x10
mov esi, dword [esp + 0x40]
jmp dword [0x4486b0]