Function at 0x79d630
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x29c
mov ebx, dword [ebp + 0x10]
mov dword [ebp - 0x26c], eax
mov eax, dword [ebp + 0x18]
imul eax, dword [ecx*4 + 0xb9b0fc]
mov dword [ebp - 0x270], edx
mov dword [ebp - 0x274], ecx
mov dword [ebp - 0x214], 0x1000
sar eax, 6
test ebx, ebx
mov dword [ebp + 0x18], eax
js 0x79d6b0
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x26c]
movzx eax, word [edx + ebx*2]
lea edx, [edx + ebx*2]
cmp word [ecx + eax*2], 0
je 0x79d6a8
jmp 0x79dd5f
movzx eax, word [edx - 2]
sub edx, 2
mov edi, dword [ebp - 0x26c]
cmp word [edi + eax*2], 0
jne 0x79dd5f
sub ebx, 1
cmp ebx, 0xffffffff
jne 0x79d690
mov dword [ebp - 0x224], 3
lea eax, [ebp - 0x214]
mov dword [ebp - 0x264], 0xffffffff
mov dword [ebp - 0x220], 0x1000
mov dword [ebp - 0x260], 0xffffffff
mov dword [ebp - 0x25c], 0
mov dword [ebp - 0x258], 0
mov word [ebp - 0x234], 0
mov word [ebp - 0x232], 0
mov dword [ebp - 0x288], eax
lea esi, [esi]
mov ecx, dword [ebp - 0x258]
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
movzx edx, word [ebx + ecx*2]
movzx eax, word [edi + edx*2]
imul eax, dword [ebp - 0x274]
sar eax, 4
lea esi, [eax - 1]
lea ecx, [eax + eax]
mov eax, dword [ebp - 0x270]
or esi, 1
movsx ebx, word [eax + edx*2]
mov eax, dword [ebp - 0x26c]
movzx edi, word [eax + edx*2]
mov eax, ebx
imul eax, ebx
imul eax, dword [ebp + 0x18]
add dword [ebp - 0x25c], eax
movsx edx, di
mov dword [ebp - 0x254], edx
add edx, 1
cmp edx, 2
mov dword [ebp - 0x250], eax
mov dword [ebp - 0x23c], edx
ja 0x79d8fe
test ebx, ebx
lea eax, [esi + ecx]
js 0x79dc95
mov edx, dword [ebp - 0x258]
lea edi, [ebp - 0x110]
sub eax, ebx
mov dword [ebp - 0x280], edi
mov word [ebp + edx*4 - 0x10e], 1
imul eax, eax
mov ecx, dword [ebp - 0x258]
imul eax, dword [ebp + 0x18]
mov ebx, dword [ebp - 0x280]
mov dword [ebp - 0x248], eax
mov eax, dword [ebp + ecx*4 - 0x214]
mov word [ebx + ecx*4], 1
add eax, 0x1800
add eax, dword [ebp - 0x248]
mov dword [ebp - 0x24c], eax
mov eax, ecx
sub eax, dword [ebp - 0x264]
test eax, eax
jle 0x79d899
mov ecx, eax
mov eax, dword [ebp - 0x258]
lea edi, [ecx + 0xb9b180]
lea esi, [ecx + 0xb9b1c0]
sub eax, ecx
lea eax, [ebp + eax*4 - 0x214]
mov dword [ebp - 0x230], eax
nop
mov edx, dword [ebp - 0x230]
mov eax, dword [ebp - 0x248]
add eax, dword [edx + 4]
movzx edx, byte [edi - 1]
shl edx, 0xb
lea ebx, [eax + edx]
movzx edx, byte [esi - 1]
shl edx, 0xb
add eax, edx
cmp ebx, dword [ebp - 0x24c]
mov dword [ebp - 0x28c], eax
jae 0x79d856
mov eax, dword [ebp - 0x258]
mov edx, dword [ebp - 0x280]
mov dword [ebp - 0x24c], ebx
mov word [edx + eax*4], cx
mov ebx, dword [ebp - 0x25c]
cmp dword [ebp - 0x28c], ebx
jae 0x79d883
mov eax, dword [ebp - 0x258]
mov edx, dword [ebp - 0x28c]
mov word [ebp - 0x232], cx
mov dword [ebp - 0x260], eax
mov dword [ebp - 0x25c], edx
add dword [ebp - 0x230], 4
sub edi, 1
sub esi, 1
sub ecx, 1
jne 0x79d810
mov ecx, dword [ebp - 0x258]
cmp dword [ebp - 0x260], ecx
je 0x79dc7b
mov edi, dword [ebp - 0x24c]
mov esi, dword [ebp - 0x220]
mov ebx, dword [ebp - 0x258]
add esi, dword [ebp - 0x250]
cmp edi, esi
mov dword [ebp + ebx*4 - 0x210], edi
jae 0x79db59
mov dword [ebp - 0x264], ebx
mov esi, edi
add dword [ebp - 0x258], 1
mov ebx, dword [ebp - 0x224]
cmp dword [ebp - 0x258], ebx
jg 0x79dcb8
mov dword [ebp - 0x220], esi
jmp 0x79d710
mov eax, dword [ebp - 0x254]
add eax, 0x19
cmp eax, 0x32
ja 0x79dbcc
cmp dword [ebp - 0x254], 1
jle 0x79dd84
mov eax, dword [ebp - 0x254]
mov edi, dword [ebp - 0x254]
mov dword [ebp - 0x244], 0xb9b260
imul eax, ecx
sub edi, 1
mov dword [ebp - 0x23c], edi
lea edx, [esi + eax]
sub edx, ebx
cmp dword [ebp - 0x254], 0x18
jg 0x79d95a
mov eax, dword [edi*4 + 0xb9b200]
mov dword [ebp - 0x244], eax
cmp dword [ebp - 0x23c], 0x18
mov edi, 0xb9b260
jg 0x79d975
mov ebx, dword [ebp - 0x23c]
mov edi, dword [ebx*4 + 0xb9b1fc]
cmp dword [ebp - 0x254], 6
mov ebx, 0xb9b260
jg 0x79d990
mov eax, dword [ebp - 0x23c]
mov ebx, dword [eax*4 + 0xb9b2a0]
cmp dword [ebp - 0x23c], 6
mov dword [ebp - 0x240], 0xb9b260
jg 0x79d9b6
mov eax, dword [ebp - 0x23c]
mov eax, dword [eax*4 + 0xb9b29c]
mov dword [ebp - 0x240], eax
mov eax, edx
sub eax, ecx
imul edx, edx
mov esi, dword [ebp - 0x258]
imul eax, eax
imul edx, dword [ebp + 0x18]
imul eax, dword [ebp + 0x18]
sub esi, dword [ebp - 0x264]
mov dword [ebp - 0x238], edx
sub eax, edx
test esi, esi
mov dword [ebp - 0x268], eax
jle 0x79de23
mov edx, dword [ebp - 0x288]
lea eax, [esi*4]
add edi, esi
lea ebx, [esi + ebx]
mov dword [ebp - 0x24c], 0xf0000000
mov dword [ebp - 0x22c], 0
sub edx, eax
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x27c], edi
mov dword [ebp - 0x278], ebx
mov dword [ebp - 0x284], edx
nop
mov ecx, dword [ebp - 0x284]
mov eax, dword [ebp - 0x258]
add eax, dword [ebp - 0x22c]
mov ebx, dword [ebp - 0x238]
mov edi, dword [ebp - 0x268]
add ebx, dword [ecx + eax*4 + 4]
mov eax, dword [ebp - 0x244]
add eax, dword [ebp - 0x228]
add edi, ebx
mov ecx, dword [ebp - 0x228]
movzx eax, byte [esi + eax - 1]
mov dword [ebp - 0x290], edi
mov edi, dword [ebp - 0x27c]
shl eax, 0xb
lea edx, [ebx + eax]
movzx eax, byte [ecx + edi - 1]
mov edi, dword [ebp - 0x254]
shl eax, 0xb
add eax, dword [ebp - 0x290]
cmp edx, eax
jbe 0x79da9d
mov edi, dword [ebp - 0x23c]
mov edx, eax
cmp edx, dword [ebp - 0x24c]
jae 0x79daca
mov ecx, dword [ebp - 0x258]
mov eax, esi
sub ax, word [ebp - 0x22c]
mov dword [ebp - 0x24c], edx
mov word [ebp + ecx*4 - 0x110], ax
mov word [ebp + ecx*4 - 0x10e], di
mov edi, dword [ebp - 0x228]
mov edx, dword [ebp - 0x278]
movzx eax, byte [edi + edx - 1]
shl eax, 0xb
lea edx, [ebx + eax]
mov eax, edi
mov ebx, dword [ebp - 0x254]
add eax, dword [ebp - 0x240]
movzx eax, byte [esi + eax - 1]
shl eax, 0xb
add eax, dword [ebp - 0x290]
cmp edx, eax
jbe 0x79db09
mov ebx, dword [ebp - 0x23c]
mov edx, eax
cmp edx, dword [ebp - 0x25c]
jae 0x79db3a
mov word [ebp - 0x234], bx
mov ebx, dword [ebp - 0x258]
mov ecx, esi
sub cx, word [ebp - 0x22c]
mov dword [ebp - 0x25c], edx
mov word [ebp - 0x232], cx
mov dword [ebp - 0x260], ebx
add dword [ebp - 0x22c], 1
sub dword [ebp - 0x228], 1
cmp dword [ebp - 0x22c], esi
jne 0x79da30
jmp 0x79d8ab
mov ebx, dword [ebp - 0x220]
mov eax, dword [ebp - 0x264]
add ebx, 0x800
cmp dword [ebp + eax*4 - 0x210], ebx
jbe 0x79db91
lea edx, [ebp + eax*4 - 0x214]
nop
lea esi, [esi]
mov eax, dword [edx + 8]
add edx, 4
add dword [ebp - 0x264], 1
cmp eax, ebx
ja 0x79db80
mov edx, dword [ebp - 0x264]
cmp dword [ebp - 0x258], edx
jle 0x79d8da
lea eax, [ebp + edx*4 - 0x214]
lea esi, [esi]
mov ecx, dword [ebp - 0x250]
add edx, 1
add dword [eax + 4], ecx
add eax, 4
cmp edx, dword [ebp - 0x258]
jne 0x79dbb0
jmp 0x79d8da
mov esi, dword [ebp - 0x258]
sub esi, dword [ebp - 0x264]
test esi, esi
jle 0x79de23
mov edx, dword [ebp - 0x288]
lea eax, [esi*4]
xor ebx, ebx
mov dword [ebp - 0x24c], 0xf0000000
sub edx, eax
mov dword [ebp - 0x290], edx
mov eax, dword [ebp - 0x258]
mov ecx, dword [ebp - 0x290]
add eax, ebx
mov edx, dword [ecx + eax*4 + 4]
add edx, 0xf000
cmp edx, dword [ebp - 0x24c]
jae 0x79dc42
mov ecx, dword [ebp - 0x258]
mov eax, esi
sub ax, bx
mov dword [ebp - 0x24c], edx
mov word [ebp + ecx*4 - 0x110], ax
mov word [ebp + ecx*4 - 0x10e], di
cmp edx, dword [ebp - 0x25c]
jae 0x79dc6f
mov ecx, dword [ebp - 0x258]
mov eax, esi
sub ax, bx
mov word [ebp - 0x232], ax
mov dword [ebp - 0x25c], edx
mov dword [ebp - 0x260], ecx
mov word [ebp - 0x234], di
add ebx, 1
cmp esi, ebx
jne 0x79dc01
jmp 0x79d8ab
mov ebx, dword [ebp - 0x260]
movzx ebx, word [ebp + ebx*4 - 0x10e]
mov word [ebp - 0x234], bx
jmp 0x79d8ab
mov ecx, dword [ebp - 0x258]
lea edx, [ebp - 0x110]
add eax, ebx
mov dword [ebp - 0x280], edx
mov word [ebp + ecx*4 - 0x10e], 0xffff
jmp 0x79d7a4
mov eax, dword [ebp - 0x260]
test eax, eax
js 0x79dd51
mov dword [esp + 8], pe_nt_image_headers32
mov dword [esp + 4], 0
mov edi, dword [ebp - 0x26c]
mov dword [esp], edi
call sub.msvcrt.dll_memset
mov edx, dword [ebp - 0x260]
mov ecx, dword [ebp + 8]
movzx ebx, word [ebp - 0x234]
movzx eax, word [ecx + edx*2]
movsx ecx, word [ebp - 0x232]
mov word [edi + eax*2], bx
movsx eax, bx
mov edi, dword [ebp - 0x260]
mov edx, eax
sar edx, 0x1f
xor eax, edx
sub eax, edx
sub edi, ecx
mov dword [ebp + 0x14], eax
mov ecx, edi
js 0x79dd51
nop
mov ebx, dword [ebp + 8]
movsx eax, word [ebp + ecx*4 - 0x10e]
mov edi, dword [ebp - 0x26c]
movzx edx, word [ebx + ecx*2]
mov word [edi + edx*2], ax
mov edx, eax
sar edx, 0x1f
xor eax, edx
sub eax, edx
add dword [ebp + 0x14], eax
movsx eax, word [ebp + ecx*4 - 0x110]
sub ecx, eax
jns 0x79dd20
mov eax, dword [ebp + 0x14]
add esp, 0x29c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp ebx, 2
mov dword [ebp - 0x224], ebx
jle 0x79d6b0
test ebx, ebx
jns 0x79d6ba
mov eax, dword [ebp + 0x14]
add esp, 0x29c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebp - 0x254]
mov dword [ebp - 0x244], 0xb9b260
imul edx, ecx
sub edx, ebx
sub edx, esi
cmp dword [ebp - 0x254], 0xffffffe8
jl 0x79ddb9
mov eax, dword [ebp - 0x254]
not eax
mov eax, dword [eax*4 + 0xb9b200]
mov dword [ebp - 0x244], eax
cmp dword [ebp - 0x23c], 0xffffffe8
mov edi, 0xb9b260
jl 0x79ddd6
mov eax, dword [ebp - 0x23c]
not eax
mov edi, dword [eax*4 + 0xb9b200]
cmp dword [ebp - 0x254], 0xfffffffa
mov ebx, 0xb9b260
jl 0x79ddf3
mov eax, dword [ebp - 0x254]
not eax
mov ebx, dword [eax*4 + 0xb9b2a0]
cmp dword [ebp - 0x23c], 0xfffffffa
mov dword [ebp - 0x240], 0xb9b260
jl 0x79de1b
mov eax, dword [ebp - 0x23c]
not eax
mov eax, dword [eax*4 + 0xb9b2a0]
mov dword [ebp - 0x240], eax
lea eax, [edx + ecx]
jmp 0x79d9ba
mov dword [ebp - 0x24c], 0xf0000000
jmp 0x79d8ab