Function at 0x3779b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x98
mov dword [esp + 8], 0x69a66b8f
mov dword [esp + 0xc], 0x6dcb6ff9
mov dword [esp + 0x10], 0x51fe53cb
mov dword [esp + 0x14], 0x55c65797
mov dword [esp + 0x18], 0x599e5bc4
mov dword [esp + 0x1c], 0x5dca5fff
mov dword [esp + 0x20], 0x41a943fb
lea eax, [esp + 0x24]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x24], 0x4740
mov byte [esp + 0x28], 0
mov ecx, 0x16f59c17
mov esi, 0xa4298fa3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp], ecx
movzx eax, byte [esp + ecx - 0x16f59c0f]
mov ecx, dword [esp]
and ecx, eax
mov edi, eax
mov eax, ecx
or eax, 0xfffffffd
mov ebx, ecx
and ebx, 0x7d
lea edx, [eax + 1]
imul edx, ebx
inc al
mul bl
mov byte [esp + 7], al
mov eax, edi
add edx, edi
mov ebx, dword [esp]
add bl, al
and bl, 1
add bl, al
mov edi, ecx
and edi, 2
add bl, byte [esp + 7]
mov ebp, ecx
or ebp, 2
imul edi, ebp
shr cl, 1
and cl, 1
mov eax, ecx
mov ecx, ebp
mul cl
mov ecx, edx
sub ecx, edi
add ecx, dword [esp]
add cl, 0x8c
xor cl, 1
add cl, bl
add al, al
sub cl, al
add edx, esi
sub edx, edi
and dl, 0xfe
sub cl, dl
movzx eax, cl
mov ecx, dword [esp]
add eax, ecx
add al, 0x8c
mov byte [esp + ecx - 0x16f59c0f], al
inc ecx
inc esi
cmp ecx, 0x16f59c38
jne 0x377a20
lea ebx, [esp + 0x7a]
lea eax, [esp + 8]
mov edi, ebx
mov ecx, 7
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0x96]
mov ecx, 1
mov eax, dword [esp + 0x6c]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
lea ebp, [esp + 0x58]
push ebp
push 0
push 0
push 0xe
push ebx
push 0
call dword [0x3a0370]
mov esi, dword [esp + 0x58]
mov edi, 0xffffffff
test esi, esi
jns 0x377aff
mov eax, 0xffffffff
jmp 0x377b02
lea eax, [esi + esi]
push eax
call fcn.0035c880
add esp, 4
push ebp
push esi
mov dword [esp + 8], eax
push eax
push 0xe
push ebx
push 0
call dword [0x3a0370]
mov eax, dword [esp + 0x58]
mov ecx, eax
and ecx, 9
xor eax, 9
lea eax, [eax + ecx*2]
test eax, eax
js 0x377b34
add eax, eax
mov edi, eax
push edi
call fcn.0035c880
add esp, 4
mov edi, eax
mov dword [esp + 8], 0xcf7ec964
mov dword [esp + 0xc], 0xc365cd6d
mov dword [esp + 0x10], 0xc767c15f
mov dword [esp + 0x14], 0xbb1fc55f
mov dword [esp + 0x18], 0xbfbeb92f
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 8]
mov ebx, ecx
xor ebx, 0x1c34004e
mov edx, eax
and edx, 0x22
sub edx, ebx
lea ebx, [esi + esi]
not ebx
add ebx, esi
and esi, 0x2a
and ebx, 0x5eaf42d5
or ebx, esi
xor edx, 0x5eaf42d5
mov esi, ebx
and esi, edx
add edx, ebx
add esi, esi
sub edx, esi
mov ebx, edx
xor ebx, 0x7a
or edx, 0x85
and ebx, edx
add ebx, edx
inc bl
mov byte [esp + ecx + 8], bl
inc ecx
add eax, 2
cmp ecx, 0x14
jne 0x377b70
mov ebx, dword [esp]
movzx ecx, word [ebx]
mov eax, edi
test cx, cx
je 0x377bf1
lea edx, [ebx + 2]
mov eax, edi
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 0x377be0
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x377c21
lea edx, [esp + 0xa]
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 0x377c10
mov word [eax], 0
lea eax, [esp + 0x74]
push eax
push edi
call fcn.003946d0
add esp, 8
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x39bf70]