Function at 0x9f0520
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xec
mov edx, dword [ebp + 8]
movzx ecx, word [ebp + 0x18]
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov eax, dword [edx + 0x130]
mov word [ebp - 0xde], cx
mov dword [esp], ebx
mov dword [ebp - 0xcc], eax
call fcn.009cfc50
mov esi, dword [ebp + 8]
mov dword [esp], esi
mov dword [ebp - 0xc8], eax
call fcn.009cfc60
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x28]
mov esi, dword [ecx + 0x8c]
mov dword [ebp - 0xc4], eax
mov dword [ebp - 0xdc], edx
call fcn.009d00b0
mov ecx, dword [ebp + 8]
mov byte [ebp - 0xb8], 0xff
fild dword [ecx + 0xa0]
fmul qword [0xbff710]
mov dword [ebp - 0xc0], eax
fld dword [0xbff718]
fcomp st(1)
fnstsw ax
sahf
jb 0x9f05d6
fnstcw word [ebp - 0x2a]
mov ecx, dword [ebp + 8]
fadd dword [0xbff71c]
movzx eax, word [ebp - 0x2a]
mov ah, 0xc
mov word [ebp - 0x2c], ax
fldcw word [ebp - 0x2c]
fistp word [ebp - 0x32]
fldcw word [ebp - 0x2a]
movzx ebx, word [ebp - 0x32]
mov byte [ebp - 0xb8], bl
jmp 0x9f05d8
fstp st(0)
mov eax, dword [ecx + 0x130]
mov ebx, dword [ebp + 8]
mov ecx, dword [eax + 0x7ce0]
mov dword [ebp - 0xd8], ecx
mov ecx, dword [ebx + 0x70]
mov edx, dword [eax + 0xcec8]
mov ebx, dword [eax + 0x21d2c]
mov dword [ebp - 0xd0], ecx
mov ecx, dword [eax + 0x21d28]
mov eax, dword [ebp + 8]
mov dword [ebp - 0xd4], edx
movzx edx, byte [eax + 0xc8]
mov byte [ebp - 0x99], dl
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x88]
test eax, eax
jne 0x9f0afe
mov edx, dword [edx + 0x44]
mov dword [ebp - 0x98], edx
mov byte [ebp - 0x1f], 1
mov byte [ebp - 0x1e], 5
mov byte [ebp - 0x1d], 3
mov byte [ebp - 0x1c], 2
mov byte [ebp - 0x1b], 4
mov byte [ebp - 0x1a], 0
mov byte [ebp - 0x19], 3
movzx eax, byte [ebp + eax - 0x1f]
mov byte [ebp - 0xb9], al
mov eax, dword [ebp - 0xcc]
mov byte [ebp - 0x88], 0
mov byte [ebp - 0x33], 0
test byte [eax + 0x21d30], 2
je 0x9f06b2
mov edx, eax
mov eax, dword [eax + 0x21d38]
cmp eax, 0x1fe
jle 0x9f0b55
mov dword [edx + 0x21d38], 0x1fe
mov eax, 0x2dfe
movzx eax, ax
mov edx, eax
mov byte [ebp - 0x33], al
mov eax, dword [ebp - 0xcc]
shr edx, 8
mov byte [ebp - 0x88], dl
test byte [eax + 0x21d30], 4
jne 0x9f0aaa
mov byte [ebp - 0x78], 0
mov byte [ebp - 0x68], 0
mov byte [ebp - 0x58], 0
mov byte [ebp - 0x34], 0
cmp ecx, 0xffffffff
mov byte [ebp - 0x39], 0
mov byte [ebp - 0x38], 0
je 0x9f06f6
test ebx, ebx
lea eax, [ecx - 1]
setg dl
cmp ebx, eax
jge 0x9f0b4a
shl edx, 7
mov byte [ebp - 0x38], dl
mov byte [ebp - 0x39], 0x40
lea ebx, [esi + esi*4]
mov ecx, dword [ebp + 8]
mov esi, 0x64
add ebx, ebx
sub esi, ebx
sub esi, dword [ebp - 0xdc]
mov eax, dword [ecx + 0x2c]
mov ebx, esi
sar ebx, 0x1f
not ebx
and ebx, esi
cmp eax, 1
je 0x9f0ba0
jae 0x9f0b27
mov byte [ebp - 0x37], 4
mov esi, dword [ebp + 8]
mov byte [ebp - 0x36], 0
mov edx, dword [esi + 8]
cmp edx, 0x7d00
jle 0x9f075f
cmp edx, 0xbb80
mov byte [ebp - 0x36], pe_nt_image_headers32
je 0x9f075f
cmp edx, 0xbb81
setl al
sub eax, 1
and eax, 0xffffff80
lea esi, [eax + 0x40]
mov ecx, esi
mov byte [ebp - 0x36], cl
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 0xe4]
sub esi, 2
cmp esi, 1
jbe 0x9f07a7
cmp dword [ecx + 0xa0], 0xffffffff
je 0x9f0b8e
mov esi, dword [ebp + 8]
fld dword [esi + 0x14]
fcomp dword [esi + 0x18]
fnstsw ax
sahf
jne 0x9f07a7
mov ecx, dword [esi + 0x60]
test ecx, ecx
jne 0x9f0bb4
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 0xc4]
test esi, esi
je 0x9f0bc6
mov byte [ebp - 0x35], 0x20
mov esi, dword [ebp + 0xc]
mov dword [esp + 8], 2
mov dword [esp + 4], 0
mov dword [esp], esi
call sub.msvcrt.dll_fseek
mov dword [esp], esi
call sub.msvcrt.dll_ftell
and dword [ebp - 0xd4], 9
mov esi, eax
sub esi, dword [ebp + 0x14]
cmp dword [ebp - 0xd4], 1
je 0x9f0b86
mov eax, dword [ebp - 0xcc]
mov ecx, ebx
sar ecx, 0x18
movzx edx, word [eax + 0xcee8]
lea eax, [edi + 1]
mov dword [ebp - 0xa0], edx
mov edx, ebx
mov byte [edi], cl
sar edx, 0x10
mov dword [ebp - 0x90], eax
mov eax, ebx
sar eax, 8
lea ecx, [edi + 2]
mov byte [edi + 1], dl
mov dword [ebp - 0x94], ecx
lea ecx, [edi + 4]
mov byte [edi + 3], bl
mov byte [edi + 2], al
mov edx, dword [ebp - 0xc0]
mov dword [esp], ecx
mov dword [esp + 8], 9
mov dword [esp + 4], edx
call sub.msvcrt.dll_strncpy
movzx ebx, byte [ebp - 0xb9]
mov byte [edi + 0xd], bl
movzx eax, byte [ebp - 0xb8]
mov byte [edi + 0xe], al
movzx edx, byte [ebp - 0x78]
lea eax, [edi + 0xf]
mov byte [edi + 0xf], dl
movzx ecx, byte [ebp - 0x68]
mov byte [eax + 1], cl
movzx ebx, byte [ebp - 0x58]
mov byte [eax + 2], bl
movzx edx, byte [ebp - 0x34]
mov byte [eax + 3], dl
movzx ecx, byte [ebp - 0x88]
mov byte [edi + 0x13], cl
movzx ebx, byte [ebp - 0x33]
mov byte [edi + 0x15], 0
mov byte [edi + 0x16], 0
mov byte [edi + 0x14], bl
movzx eax, byte [ebp - 0xd0]
shr dword [ebp - 0xd0], 1
movzx edx, byte [ebp - 0xd0]
and eax, 1
shl eax, 4
and edx, 1
shl edx, 5
add eax, edx
add al, byte [ebp - 0x99]
add al, byte [ebp - 0x39]
add al, byte [ebp - 0x38]
mov byte [edi + 0x17], al
cmp dword [ebp - 0x98], 0xff
setl cl
sub ecx, 1
or cl, byte [ebp - 0x98]
mov byte [edi + 0x18], cl
mov ebx, dword [ebp - 0xc8]
sar ebx, 4
mov byte [edi + 0x19], bl
mov edx, dword [ebp - 0xc4]
movzx eax, byte [ebp - 0xc8]
mov ecx, dword [ebp - 0x90]
sar edx, 8
shl eax, 4
add eax, edx
mov byte [ecx + 0x19], al
movzx ebx, byte [ebp - 0xc4]
mov edx, dword [ebp - 0x94]
mov byte [edx + 0x19], bl
movzx ecx, byte [ebp - 0x37]
add cl, byte [ebp - 0xd8]
add cl, byte [ebp - 0x36]
add cl, byte [ebp - 0x35]
mov byte [edi + 0x1d], 0
mov byte [edi + 0x1c], cl
mov eax, dword [ebp + 8]
mov ecx, esi
sar ecx, 0x18
mov edx, dword [eax + 0x84]
mov eax, esi
mov byte [edi + 0x20], cl
sar eax, 0x10
mov ecx, esi
mov ebx, edx
sar ebx, 8
mov byte [edi + 0x1e], bl
mov ebx, esi
mov byte [edi + 0x1f], dl
sar ebx, 8
lea edx, [edi + 0x20]
mov byte [edx + 1], al
mov byte [edx + 2], bl
mov byte [edx + 3], cl
mov ebx, dword [ebp - 0xa0]
movzx ecx, byte [edi]
mov eax, ebx
sar eax, 8
mov byte [edi + 0x25], bl
movzx ebx, byte [edi + 1]
mov byte [edi + 0x24], al
movzx esi, word [ebp - 0xde]
xor ecx, esi
movzx edx, cl
movzx eax, word [edx*4 + 0xaebe70]
sar esi, 8
xor eax, esi
movzx eax, ax
xor ebx, eax
movzx ecx, bl
sar eax, 8
xor ax, word [ecx*4 + 0xaebe70]
mov ecx, 2
movzx ebx, byte [ecx + edi]
movzx edx, ax
xor ebx, edx
movzx esi, bl
movzx ebx, byte [ecx + edi + 1]
movzx eax, word [esi*4 + 0xaebe70]
sar edx, 8
xor eax, edx
movzx edx, byte [ecx + edi + 2]
movzx eax, ax
xor ebx, eax
movzx esi, bl
sar eax, 8
xor ax, word [esi*4 + 0xaebe70]
movzx esi, ax
xor edx, esi
movzx ebx, dl
movzx edx, byte [ecx + edi + 3]
sar esi, 8
xor si, word [ebx*4 + 0xaebe70]
movzx eax, si
xor edx, eax
movzx ebx, dl
movzx edx, byte [ecx + edi + 4]
sar eax, 8
xor ax, word [ebx*4 + 0xaebe70]
movzx ebx, ax
xor edx, ebx
movzx esi, dl
movzx edx, byte [ecx + edi + 5]
sar ebx, 8
xor bx, word [esi*4 + 0xaebe70]
movzx eax, bx
movzx ebx, byte [ecx + edi + 6]
xor edx, eax
movzx esi, dl
sar eax, 8
xor ax, word [esi*4 + 0xaebe70]
movzx esi, ax
xor ebx, esi
movzx edx, bl
movzx ebx, byte [ecx + edi + 7]
sar esi, 8
xor si, word [edx*4 + 0xaebe70]
movzx eax, si
xor ebx, eax
movzx edx, bl
movzx ebx, byte [ecx + edi + 8]
add ecx, 9
sar eax, 8
xor ax, word [edx*4 + 0xaebe70]
movzx eax, ax
xor ebx, eax
movzx esi, bl
sar eax, 8
xor ax, word [esi*4 + 0xaebe70]
cmp ecx, 0x26
jne 0x9f09a7
movzx ebx, ax
mov eax, 0x28
mov edx, ebx
sar edx, 8
mov byte [edi + 0x26], dl
mov byte [edi + 0x27], bl
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
fld qword [0xbff720]
fmul dword [eax + 0x21d34]
fnstcw word [ebp - 0x2a]
movzx eax, word [ebp - 0x2a]
fadd dword [0xbff71c]
mov ah, 0xc
mov word [ebp - 0x2c], ax
fldcw word [ebp - 0x2c]
fistp dword [ebp - 0x30]
fldcw word [ebp - 0x2a]
mov eax, dword [ebp - 0x30]
mov edx, eax
sar edx, 0x1f
xor eax, edx
sub eax, edx
mov edx, eax
shr edx, 0x18
mov byte [ebp - 0x78], dl
mov edx, eax
shr edx, 0x10
mov byte [ebp - 0x68], dl
mov edx, eax
shr edx, 8
mov byte [ebp - 0x58], dl
mov byte [ebp - 0x34], al
jmp 0x9f06cf
cmp eax, 3
je 0x9f0b75
mov edx, dword [ebp + 8]
cmp eax, 6
mov byte [ebp - 0xb9], 0
mov edx, dword [edx + 0x94]
mov dword [ebp - 0x98], edx
ja 0x9f065f
jmp 0x9f0638
cmp eax, 2
mov byte [ebp - 0x37], 8
je 0x9f072a
cmp eax, 3
mov byte [ebp - 0x37], 0x1c
jne 0x9f072a
mov byte [ebp - 0x37], 0
jmp 0x9f072a
shl edx, 7
mov byte [ebp - 0x38], dl
jmp 0x9f06f6
cmp eax, 0xfffffe02
jl 0x9f0bf8
test eax, eax
jns 0x9f0c12
neg eax
or ah, 0x2e
lea esi, [esi]
jmp 0x9f069b
mov edx, dword [edx + 0x90]
mov dword [ebp - 0x98], edx
jmp 0x9f0638
add esi, 0xffffff80
jmp 0x9f07e7
cmp dword [ecx + 0xa4], 0xffffffff
jne 0x9f077d
jmp 0x9f07a7
cmp dword [ecx + 0x34], 1
sbb edx, edx
and edx, 0xfffffffc
lea ecx, [edx + 0x10]
mov byte [ebp - 0x37], cl
jmp 0x9f072a
cmp dword [esi + 0x44], 0x13f
jle 0x9f07a7
jmp 0x9f0796
mov eax, dword [ecx + 0xbc]
test eax, eax
nop
jne 0x9f07a7
cmp byte [ebp - 0x99], 0
je 0x9f07a7
cmp edx, 0x7d00
mov byte [ebp - 0x35], 0
jg 0x9f07ab
jmp 0x9f07a7
mov edx, dword [ebp - 0xcc]
mov eax, 0x2ffe
mov dword [edx + 0x21d38], 0xfffffe02
jmp 0x9f069b
or ah, 0x2c
jmp 0x9f069b