Function at 0x3022d80
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x138
mov esi, esp
push eax
sub esp, 0x18
mov dword [esi + 0x24], esp
sub esp, 0x28
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xcc], eax
mov esp, eax
push eax
mov dword [esi + 0x28], esp
push eax
mov dword [esi + 0x64], esp
push eax
mov dword [esi + 0x9c], esp
push eax
mov dword [esi + 0xb8], esp
push eax
mov dword [esi + 0xb4], esp
sub esp, 0x20
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xc4], eax
mov esp, eax
push eax
mov dword [esi + 0xb0], esp
sub esp, 8
mov dword [esi + 0x88], esp
sub esp, 8
mov dword [esi + 0xac], esp
sub esp, 0x10
mov dword [esi + 0x84], esp
sub esp, 0x18
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xd4], eax
mov esp, eax
push eax
sub esp, 0x2c
mov dword [esi + 0x94], esp
sub esp, 0x38
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xec], eax
mov esp, eax
push eax
mov dword [esi + 0xc0], esp
sub esp, 0x14
mov dword [esi + 0x90], esp
sub esp, 0x20
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xe8], eax
mov esp, eax
push eax
mov dword [esi + 0xbc], esp
sub esp, 0x10
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xe4], eax
mov esp, eax
mov dword [esi + 0x38], 0xf3b3cde9
mov dword [esi + 0x3c], 0xf766f160
mov dword [esi + 0x40], 0xfb9bf5b0
mov dword [esi + 0x44], 0xff9ff96c
mov dword [esi + 0x48], 0xe3e2fdd9
lea eax, [esi + 0x4c]
mov dword [esi + 0x4c], 0
mov word [esi + 0x50], 0
mov dword [esi + 0x6c], 0
mov ecx, dword [esi + 0x6c]
cmp ecx, 0x19
ja 0x3022ee0
nop
nop
nop
nop
nop
nop
mov ecx, dword [esi + 0x6c]
mov edx, dword [esi + 0x6c]
movzx edx, byte [esi + edx + 0x38]
lea edi, [ecx + 0xde]
and edi, edx
add ecx, edx
add edi, edi
sub ecx, edi
add ecx, 0x6d9ec5de
mov dword [esi + 0xf0], ecx
mov ecx, dword [esi + 0xf0]
add cl, 0xee
mov edx, dword [esi + 0x6c]
mov byte [esi + edx + 0x38], cl
inc dword [esi + 0x6c]
mov ecx, dword [esi + 0x6c]
cmp ecx, 0x1a
jb 0x3022ea0
lea ebx, [esi + 0x11c]
lea edx, [esi + 0x38]
mov ecx, 5
mov edi, ebx
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esi + 0x130]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
lea edi, [esi + 0x68]
push edi
push 0
push 0
push 9
push ebx
push 0
call dword [0x3049b34]
mov ebx, dword [esi + 0x68]
test ebx, ebx
jns 0x3022f24
mov eax, 0xffffffff
jmp 0x3022f27
lea eax, [ebx + ebx]
push eax
call fcn.03008c00
add esp, 4
push edi
push ebx
mov dword [esi + 0x1c], eax
push eax
push 9
lea eax, [esi + 0x11c]
push eax
push 0
call dword [0x3049b34]
mov dword [esi + 0x38], 0xf35b0dc8
mov dword [esi + 0x3c], 0xf751f167
mov dword [esi + 0x40], 0xfb6cf567
mov dword [esi + 0x44], 0xfffef95c
mov dword [esi + 0x6c], 0
mov eax, dword [esi + 0x6c]
cmp eax, 0xf
ja 0x3022fbc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi + 0x6c]
movzx ecx, byte [esi + ecx + 0x38]
lea edx, [eax + 0x2608dfe]
add eax, 0xfe
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esi + 0xf0], edx
mov eax, dword [esi + 0xf0]
add al, 0xe
mov ecx, dword [esi + 0x6c]
mov byte [esi + ecx + 0x38], al
inc dword [esi + 0x6c]
mov eax, dword [esi + 0x6c]
cmp eax, 0x10
jb 0x3022f80
lea edi, [esi + 0x10c]
lea ebx, [esi + 0x38]
mov eax, ebx
mov ecx, 4
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esi + 0x11c]
lea eax, [esi + 0x48]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esi + 0x38], 0x2b832de0
mov dword [esi + 0x3c], 0x17b929b7
mov dword [esi + 0x40], 0x138c1587
mov dword [esi + 0x44], 0x1fd111bc
mov dword [esi + 0x48], 0x1b881dbd
mov dword [esi + 0x4c], 0x79819b9
mov dword [esi + 0x50], 0x302059d
lea eax, [esi + 0x54]
mov dword [esi + 0x54], 0
mov dword [esi + 0x58], 0
mov dword [esi + 0x5c], 0
mov dword [esi + 0x6c], 0
mov ecx, dword [esi + 0x6c]
cmp ecx, 0x27
ja 0x302307b
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esi + 0x6c]
mov edx, dword [esi + 0x6c]
movzx edx, byte [esi + edx + 0x38]
lea edi, [ecx + 0x2253fc5a]
add ecx, 0x5a
and ecx, edx
or edi, edx
sub edi, ecx
mov dword [esi + 0xf0], edi
mov ecx, dword [esi + 0xf0]
add cl, 0x8a
mov edx, dword [esi + 0x6c]
mov byte [esi + edx + 0x38], cl
inc dword [esi + 0x6c]
mov ecx, dword [esi + 0x6c]
cmp ecx, 0x28
jb 0x3023040
lea edi, [esi + 0xf0]
mov edx, ebx
mov ecx, 7
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esi + 0x10c]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esi + 0x38], 0x5be35904
mov dword [esi + 0x3c], 0x57f555e7
mov dword [esi + 0x40], 0x53e051e7
mov dword [esi + 0x44], 0xaffead10
mov dword [esi + 0x48], 0xabe8a904
lea edx, [esi + 0x4c]
mov dword [esi + 0x4c], 0xa5a4
mov dword [esi + 0xa0], 0
mov eax, dword [esi + 0xa0]
cmp eax, 0x17
ja 0x3023132
nop
nop
nop
mov ecx, dword [esi + 0xa0]
mov eax, dword [esi + 0xa0]
movzx edi, byte [esi + eax + 0x38]
lea eax, [ecx + 0xfe90cf4]
and eax, edi
add eax, eax
add ecx, edi
add ecx, 0xfe90cf4
mov edi, eax
xor edi, ecx
not eax
and eax, ecx
add eax, eax
sub eax, edi
mov dword [esi + 0x6c], eax
mov eax, dword [esi + 0x6c]
add al, 0x54
mov ecx, dword [esi + 0xa0]
mov byte [esi + ecx + 0x38], al
inc dword [esi + 0xa0]
mov eax, dword [esi + 0xa0]
cmp eax, 0x18
jb 0x30230e0
lea eax, [esi + 0x6c]
mov ecx, 5
mov edi, eax
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esi + 0x80]
mov ecx, 1
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
lea ecx, [esi + 0x10c]
mov dword [esi + 0xa0], ecx
lea ecx, [esi + 0xf0]
mov dword [esi + 0xa4], ecx
mov dword [esi + 0xa8], eax
mov eax, dword [0x30449f0]
mov ecx, 0xf6513c61
xor ecx, dword [0x30449f8]
add eax, ecx
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax