Function at 0x1004df60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x70
mov edx, dword [ecx]
mov eax, dword [ecx + 0x28]
mov dword [esp + 0xc], ecx
xor edx, 1
or edx, dword [ecx + 4]
jne 0x1004e4e1
movq xmm1, qword [0x103e65a0]
movd xmm2, dword [ecx + 0x1c]
movd xmm0, eax
por xmm0, xmm1
por xmm2, xmm1
subsd xmm0, xmm1
subsd xmm2, xmm1
cvtsd2ss xmm0, xmm0
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm2
divss xmm0, xmm1
ucomiss xmm0, dword [0x103ad3ac]
jae 0x1004e5c1
call fcn.100fec40
test eax, eax
je 0x1004e6f4
mov ecx, dword [eax]
mov edx, dword [eax + 0xc]
mov esi, dword [eax + 8]
mov edi, ecx
add edi, 1
mov dword [eax], edi
mov edi, dword [eax + 4]
mov ebx, edi
adc ebx, 0
mov dword [eax + 4], ebx
mov ebx, dword [esp + 0xc]
mov dword [ebx], 2
mov dword [ebx + 4], 0
mov dword [ebx + 0xc], edi
mov dword [ebx + 8], ecx
mov dword [ebx + 0x10], esi
mov dword [ebx + 0x14], edx
mov edi, ebx
mov ecx, dword [ebx + 0x1c]
test ecx, ecx
je 0x1004e02d
mov eax, dword [edi + 0x18]
lea ecx, [eax + ecx*4]
nop word cs:[eax + eax]
nop
mov dword [eax], 0xffff
add eax, 4
cmp eax, ecx
jne 0x1004e020
mov eax, dword [edi + 0x28]
test eax, eax
je 0x1004e5d8
mov ebx, dword [edi + 0x20]
imul eax, eax, 0x38
mov dword [esp + 0x14], 0
add eax, ebx
mov dword [esp + 0x68], eax
jmp 0x1004e07a
mov eax, dword [esp + 0x14]
mov word [esi + edi*4], ax
mov eax, dword [esp]
mov word [esi + edi*4 + 2], ax
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
cmp ebx, dword [esp + 0x68]
mov dword [esp + 0x14], eax
je 0x1004e5d8
mov eax, dword [edi]
mov dword [esp + 0x1c], ebx
xor eax, 2
or eax, dword [edi + 4]
jne 0x1004e150
mov eax, dword [edi + 8]
mov ecx, dword [edi + 0xc]
mov edx, dword [edi + 0x10]
mov esi, dword [edi + 0x14]
mov edi, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], esi
xor eax, 0x6e657261
xor edi, 0x70736575
mov dword [esp + 0x30], edi
mov edi, ecx
xor ecx, 0x6c796765
xor edi, 0x736f6d65
mov dword [esp + 0x34], edi
mov dword [esp + 0x3c], ecx
mov ecx, edx
mov edi, esi
mov dword [esp + 0x38], eax
xor edx, 0x79746573
xor esi, 0x74656462
xor ecx, 0x6e646f6d
xor edi, 0x646f7261
mov dword [esp + 0x40], ecx
lea ecx, [esp + 0x50]
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], esi
mov dword [ecx + 8], 0
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 0xc], 0
cmp byte [ebx], 1
jne 0x1004e1b0
lea esi, [esp + 0x20]
lea edx, [esp + 0x18]
mov dword [esp + 0x18], 1
mov ecx, esi
push 4
call fcn.10017fe0
add esp, 4
mov edx, dword [ebx + 4]
mov ecx, esi
push dword [ebx + 8]
jmp 0x1004e1dc
cmp byte [ebx], 1
jne 0x1004e3e0
mov esi, dword [ebx + 8]
test esi, esi
je 0x1004e3f1
mov edi, dword [ebx + 4]
mov ebx, 0xad2aca77
mov edx, 0x47985764
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ecx, byte [edi]
imul ebx, ebx, 0x1b3
inc edi
xor ecx, edx
mov edx, 0x1b3
mov eax, ecx
shl ecx, 8
mul edx
add ecx, edx
mov edx, eax
add ebx, ecx
dec esi
jne 0x1004e180
jmp 0x1004e3cb
lea esi, [esp + 0x20]
lea edi, [esp + 0x18]
mov dword [esp + 0x18], 0
mov ecx, esi
mov edx, edi
push 4
call fcn.10017fe0
add esp, 4
movzx eax, byte [ebx + 1]
mov ecx, esi
mov edx, edi
mov dword [esp + 0x18], eax
push 4
call fcn.10017fe0
add esp, 4
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x48]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
shl eax, 0x18
xor ecx, edx
mov dword [esp + 0x64], edx
mov edx, edi
or eax, dword [esp + 0x54]
mov dword [esp + 0x10], eax
xor ebx, eax
mov eax, dword [esp + 0x30]
add eax, edi
mov dword [esp], eax
mov eax, dword [esp + 0x44]
adc esi, eax
shld edx, eax, 0xd
shld eax, edi, 0xd
mov edi, ecx
xor eax, esi
xor edx, dword [esp]
mov dword [esp + 0x60], eax
mov eax, esi
mov esi, dword [esp + 0x38]
add esi, ecx
mov dword [esp + 4], esi
mov esi, dword [esp + 0x3c]
adc esi, ebx
shld edi, ebx, 0x10
shrd ecx, ebx, 0x10
xor edi, dword [esp + 4]
xor ecx, esi
add eax, edi
mov ebx, edi
mov dword [esp + 8], eax
mov eax, dword [esp]
adc eax, ecx
shld ebx, ecx, 0x15
shrd edi, ecx, 0xb
mov ecx, edx
mov dword [esp], eax
xor edi, eax
xor ebx, dword [esp + 8]
add dword [esp + 4], edx
mov eax, dword [esp + 0x60]
adc esi, eax
shld ecx, eax, 0x11
shrd edx, eax, 0xf
mov eax, dword [esp]
xor ecx, dword [esp + 4]
xor edx, esi
xor esi, 0xff
xor eax, dword [esp + 0x10]
mov dword [esp + 0x10], esi
mov dword [esp], eax
mov eax, dword [esp + 8]
mov esi, dword [esp]
xor eax, dword [esp + 0x64]
add eax, ecx
mov dword [esp + 8], eax
mov eax, ecx
adc esi, edx
shrd ecx, edx, 0x13
shld eax, edx, 0xd
mov dword [esp], esi
xor ecx, esi
mov esi, dword [esp + 4]
mov edx, ebx
xor eax, dword [esp + 8]
add dword [esp + 0x10], ebx
adc esi, edi
shld edx, edi, 0x10
shrd ebx, edi, 0x10
xor edx, dword [esp + 0x10]
xor ebx, esi
mov dword [esp + 4], esi
mov esi, dword [esp + 8]
add dword [esp], edx
mov edi, edx
adc esi, ebx
shld edi, ebx, 0x15
shrd edx, ebx, 0xb
mov ebx, eax
mov dword [esp + 8], esi
xor edx, esi
xor edi, dword [esp]
add dword [esp + 0x10], eax
mov esi, dword [esp + 4]
adc esi, ecx
shld ebx, ecx, 0x11
shrd eax, ecx, 0xf
xor ebx, dword [esp + 0x10]
xor eax, esi
mov dword [esp + 4], esi
mov esi, dword [esp + 8]
add dword [esp], ebx
mov ecx, ebx
adc esi, eax
shld ecx, eax, 0xd
shrd ebx, eax, 0x13
mov eax, dword [esp + 0x10]
xor ebx, esi
xor ecx, dword [esp]
add dword [esp + 4], edi
mov dword [esp + 8], esi
mov esi, edi
adc eax, edx
shld esi, edx, 0x10
shrd edi, edx, 0x10
xor esi, dword [esp + 4]
xor edi, eax
mov dword [esp + 0x10], eax
mov eax, dword [esp]
add dword [esp + 8], esi
mov edx, esi
adc eax, edi
shrd esi, edi, 0xb
shld edx, edi, 0x15
mov edi, ecx
mov dword [esp], eax
xor esi, eax
mov eax, dword [esp + 4]
xor edx, dword [esp + 8]
add eax, ecx
adc dword [esp + 0x10], ebx
shld edi, ebx, 0x11
shrd ecx, ebx, 0xf
mov dword [esp + 4], eax
mov ebx, dword [esp + 0x10]
xor edi, eax
mov eax, edi
xor ecx, ebx
add dword [esp + 8], edi
adc dword [esp], ecx
shld eax, ecx, 0xd
shrd edi, ecx, 0x13
mov ecx, dword [esp + 4]
xor eax, dword [esp + 8]
xor edi, dword [esp]
add ebx, edx
adc ecx, esi
shrd edx, esi, 0x10
xor edx, ecx
shr edx, 0xb
add ebx, eax
adc ecx, edi
shr edi, 0xf
xor edi, edx
mov edx, edi
xor edx, ecx
xor edx, ebx
mov edi, dword [esp + 0xc]
jmp 0x1004e400
movzx eax, byte [ebx + 1]
xor eax, 0x13f5
imul edx, eax, 0xffffbc91
jmp 0x1004e400
mov dx, 0x5764
nop word cs:[eax + eax]
nop
mov eax, dword [esp + 0x14]
and edx, 0x7fff
movzx ebx, word [edi + 0x38]
xor ecx, ecx
mov dword [esp], edx
inc eax
and ebx, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
mov word [eax + 0x34], dx
add eax, 0x38
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x18]
mov edx, dword [edi + 0x1c]
mov dword [esp + 4], eax
movzx eax, word [edi + 0x38]
movzx eax, ax
mov dword [esp + 8], eax
nop
mov edi, ebx
cmp ebx, edx
mov ebx, 0
jae 0x1004e440
mov esi, dword [esp + 4]
cmp word [esi + edi*4], 0xffff
je 0x1004e050
movzx ebx, word [esi + edi*4 + 2]
mov esi, dword [esp + 8]
mov eax, esi
and eax, ebx
mov ebx, edi
sub ebx, eax
and ebx, esi
cmp ebx, ecx
jb 0x1004e480
inc edi
inc ecx
mov ebx, edi
jmp 0x1004e440
mov esi, edx
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 4]
nop word [eax + eax]
mov ecx, edi
xor edi, edi
cmp ecx, esi
jae 0x1004e490
movzx eax, word [edx + ecx*4]
cmp ax, 0xffff
je 0x1004e4d0
mov edi, ebx
mov ebx, dword [esp]
movzx edi, di
shl ebx, 0x10
or edi, ebx
movzx ebx, word [edx + ecx*4 + 2]
mov dword [edx + ecx*4], edi
inc ecx
mov edi, ebx
mov ebx, eax
mov dword [esp], edi
mov edi, ecx
jmp 0x1004e490
mov eax, dword [esp]
mov word [edx + ecx*4], bx
mov word [edx + ecx*4 + 2], ax
jmp 0x1004e060
mov edx, dword [ecx + 0x1c]
mov edi, edx
mov esi, edx
shr edi, 2
sub esi, edi
cmp eax, esi
jne 0x1004e5d8
test eax, eax
jne 0x1004e5d1
mov word [ecx + 0x38], 7
call sub.KERNEL32.dll_GetProcessHeap
push 0x20
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x1004e717
lea ecx, [esp + 0x20]
mov edx, 8
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 8
mov dword [esp + 0x28], 0
call fcn.1004efa0
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x28]
mov dword [edi + esi*4], 0xffff
mov dword [edi + esi*4 + 4], 0xffff
mov dword [edi + esi*4 + 8], 0xffff
mov dword [edi + esi*4 + 0xc], 0xffff
mov dword [edi + esi*4 + 0x10], 0xffff
mov dword [edi + esi*4 + 0x14], 0xffff
mov dword [edi + esi*4 + 0x18], 0xffff
mov dword [edi + esi*4 + 0x1c], 0xffff
add esi, 8
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x24]
cmp eax, esi
jbe 0x1004e5e0
lea ebx, [esi*4]
test ebx, ebx
je 0x1004e5e8
call sub.KERNEL32.dll_GetProcessHeap
mov dword [esp], ebx
push ebx
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapReAlloc
mov edi, dword [esp + 0xc]
mov ebx, eax
test eax, eax
jne 0x1004e606
mov ecx, dword [esp]
jmp 0x1004e71c
mov edx, dword [ecx + 0x1c]
mov dword [ecx + 4], 0
mov dword [ecx], 0
add edx, edx
call fcn.1004ebd0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, edi
mov edi, dword [esp + 0xc]
jmp 0x1004e615
shl eax, 2
mov ebx, 2
test eax, eax
je 0x1004e602
call sub.KERNEL32.dll_GetProcessHeap
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov edi, dword [esp + 0xc]
mov eax, esi
mov dword [esp + 0x20], ebx
and eax, 0x3fffffff
mov dword [esp + 0x24], eax
test dword [edi + 0x1c], 0x3fffffff
je 0x1004e637
mov eax, dword [esp + 0xc]
mov edi, dword [eax + 0x18]
call sub.KERNEL32.dll_GetProcessHeap
push edi
mov edi, dword [esp + 0x10]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov dword [edi + 0x18], ebx
mov dword [edi + 0x1c], esi
call sub.KERNEL32.dll_GetProcessHeap
push 0x150
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
mov dword [esp], eax
je 0x1004e728
mov eax, dword [edi + 0x28]
test eax, eax
je 0x1004e6b8
mov ecx, dword [esp + 0xc]
imul ebx, eax, 0x38
mov esi, dword [ecx + 0x20]
add ebx, esi
add esi, 0xc
jmp 0x1004e69d
mov eax, dword [esi + 0x14]
lea ecx, [edi + 0x1c]
push dword [esi + 0xc]
push dword [esi + 8]
push ecx
call dword [eax + 4]
add esp, 0xc
add edi, 0x38
add esi, 0x38
cmp edi, ebx
je 0x1004e6b8
cmp byte [esi - 0xc], 0
lea edi, [esi - 0xc]
je 0x1004e680
mov eax, dword [esi + 4]
push dword [esi - 4]
push dword [esi - 8]
push esi
call dword [eax + 4]
add esp, 0xc
jmp 0x1004e680
mov edi, dword [esp + 0xc]
mov eax, dword [edi + 0x24]
test eax, eax
je 0x1004e6db
imul eax, eax, 0x38
test eax, eax
je 0x1004e6db
mov esi, dword [edi + 0x20]
call sub.KERNEL32.dll_GetProcessHeap
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp]
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], 6
mov dword [edi + 0x28], 0
jmp 0x1004e5d8
lea eax, [esp + 0x20]
mov ecx, 0x1044ace7
mov edx, 0x46
push 0x1044ad30
push 0x104005e0
push eax
call fcn.1000a790
add esp, 0xc
ud2
mov ecx, 0x20
mov edx, 2
call fcn.10006540
ud2
mov ecx, 0x150
mov edx, 4
call fcn.10006540
ud2