Function at 0x1004e220
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 0x1004e7a1
movq xmm1, qword [0x10364f30]
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 [0x10333054]
jae 0x1004e881
call fcn.100fef20
test eax, eax
je 0x1004e9b4
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 0x1004e2ed
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 0x1004e2e0
mov eax, dword [edi + 0x28]
test eax, eax
je 0x1004e898
mov ebx, dword [edi + 0x20]
imul eax, eax, 0x38
mov dword [esp + 0x14], 0
add eax, ebx
mov dword [esp + 0x68], eax
jmp 0x1004e33a
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 0x1004e898
mov eax, dword [edi]
mov dword [esp + 0x1c], ebx
xor eax, 2
or eax, dword [edi + 4]
jne 0x1004e410
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 0x1004e470
lea esi, [esp + 0x20]
lea edx, [esp + 0x18]
mov dword [esp + 0x18], 1
mov ecx, esi
push 4
call fcn.10018260
add esp, 4
mov edx, dword [ebx + 4]
mov ecx, esi
push dword [ebx + 8]
jmp 0x1004e49c
cmp byte [ebx], 1
jne 0x1004e6a0
mov esi, dword [ebx + 8]
test esi, esi
je 0x1004e6b1
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 0x1004e440
jmp 0x1004e68b
lea esi, [esp + 0x20]
lea edi, [esp + 0x18]
mov dword [esp + 0x18], 0
mov ecx, esi
mov edx, edi
push 4
call fcn.10018260
add esp, 4
movzx eax, byte [ebx + 1]
mov ecx, esi
mov edx, edi
mov dword [esp + 0x18], eax
push 4
call fcn.10018260
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 0x1004e6c0
movzx eax, byte [ebx + 1]
xor eax, 0x13f5
imul edx, eax, 0xffffbc91
jmp 0x1004e6c0
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 0x1004e700
mov esi, dword [esp + 4]
cmp word [esi + edi*4], 0xffff
je 0x1004e310
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 0x1004e740
inc edi
inc ecx
mov ebx, edi
jmp 0x1004e700
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 0x1004e750
movzx eax, word [edx + ecx*4]
cmp ax, 0xffff
je 0x1004e790
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 0x1004e750
mov eax, dword [esp]
mov word [edx + ecx*4], bx
mov word [edx + ecx*4 + 2], ax
jmp 0x1004e320
mov edx, dword [ecx + 0x1c]
mov edi, edx
mov esi, edx
shr edi, 2
sub esi, edi
cmp eax, esi
jne 0x1004e898
test eax, eax
jne 0x1004e891
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 0x1004e9d7
lea ecx, [esp + 0x20]
mov edx, 8
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 8
mov dword [esp + 0x28], 0
call fcn.1004f260
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 0x1004e8a0
lea ebx, [esi*4]
test ebx, ebx
je 0x1004e8a8
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 0x1004e8c6
mov ecx, dword [esp]
jmp 0x1004e9dc
mov edx, dword [ecx + 0x1c]
mov dword [ecx + 4], 0
mov dword [ecx], 0
add edx, edx
call fcn.1004ee90
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, edi
mov edi, dword [esp + 0xc]
jmp 0x1004e8d5
shl eax, 2
mov ebx, 2
test eax, eax
je 0x1004e8c2
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 0x1004e8f7
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 0x1004e9e8
mov eax, dword [edi + 0x28]
test eax, eax
je 0x1004e978
mov ecx, dword [esp + 0xc]
imul ebx, eax, 0x38
mov esi, dword [ecx + 0x20]
add ebx, esi
add esi, 0xc
jmp 0x1004e95d
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 0x1004e978
cmp byte [esi - 0xc], 0
lea edi, [esi - 0xc]
je 0x1004e940
mov eax, dword [esi + 4]
push dword [esi - 4]
push dword [esi - 8]
push esi
call dword [eax + 4]
add esp, 0xc
jmp 0x1004e940
mov edi, dword [esp + 0xc]
mov eax, dword [edi + 0x24]
test eax, eax
je 0x1004e99b
imul eax, eax, 0x38
test eax, eax
je 0x1004e99b
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 0x1004e898
lea eax, [esp + 0x20]
mov ecx, 0x103c9a77
mov edx, 0x46
push 0x103c9ac0
push 0x1037f370
push eax
call fcn.1000aa20
add esp, 0xc
ud2
mov ecx, 0x20
mov edx, 2
call fcn.100067d0
ud2
mov ecx, 0x150
mov edx, 4
call fcn.100067d0
ud2