Function at 0x416843
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x11c4
call fcn.00431b90
or dword [ebp - 0x24], 0xffffffff
or dword [ebp - 0x20], 0xffffffff
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov ebx, edx
xor edx, edx
push edi
mov edi, ecx
mov dword [ebp - 0x14], ebx
xor ecx, ecx
mov dword [ebp - 0x10], edi
inc edx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x34], edx
mov esi, ecx
mov dword [ebp - 4], esi
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x28], edi
test eax, eax
je 0x416db1
mov dword [eax], ecx
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x416d5d
mov dword [eax], ecx
mov dword [ebp - 0xd0], 0x4a4710
mov dword [ebp - 0xcc], 0x4a4810
mov dword [ebp - 0xc8], 0x4a4910
mov dword [ebp - 0xc4], 0x4a4a50
test ebx, 0xd8008580
jne 0x416d64
test ebx, 0x10000
jne 0x416d70
push 0x28
pop edx
mov dword [ebp - 0x6c], ecx
cmp word [edi], dx
je 0x4514f9
test ebx, 0x800
je 0x416d7f
cmp dword [ebp - 0x18], 0
mov dword [ebp - 4], 1
jne 0x416d78
test ebx, 0x2000
je 0x4517b7
mov ecx, 0x1800000
mov eax, ebx
and eax, ecx
cmp eax, ecx
je 0x416d87
mov eax, ebx
push 2
pop ecx
and eax, 0x700000
jne 0x4517d3
mov dword [ebp - 0x50], ecx
xor edx, edx
lea eax, [ebp - 0x11c0]
mov dword [ebp - 0x84], edx
mov ecx, edx
mov dword [ebp - 0xbc], eax
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xc0], eax
lea eax, [ebp - 0x1c0]
mov dword [ebp - 0xa8], eax
mov eax, edi
mov dword [ebp - 0x80], edx
mov dword [ebp - 0x8c], edx
mov dword [ebp - 0x90], edx
mov dword [ebp - 0xa0], edx
mov dword [ebp - 0x9c], edx
mov dword [ebp - 0xa4], edx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x94], 0x800
mov dword [ebp - 0x98], 0x14
mov dword [ebp - 0xb8], edi
cmp word [edi], dx
je 0x4169b3
lea eax, [eax + 2]
inc ecx
cmp word [eax], dx
jne 0x4169aa
lea eax, [edi + ecx*2]
mov dword [ebp - 0x68], edx
mov dword [ebp - 0xb4], eax
mov ecx, ebx
lea eax, [edi + esi*2]
mov dword [ebp - 0x78], edx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x11c0]
mov dword [ebp - 0x18], eax
mov eax, 0x83
mov word [ebp - 0x11c0], ax
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0xd0]
mov dword [ebp - 0x74], edx
push eax
push edx
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x88], edx
push eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0xac], edx
push eax
lea eax, [ebp - 0xc]
mov dword [ebp - 0x70], ebx
push eax
lea eax, [ebp - 0x3c]
push eax
push edx
push edx
push edx
push edx
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x28]
push eax
lea edx, [ebp - 0x18]
call fcn.00416db8
mov esi, dword [ebp - 8]
add esp, 0x34
test esi, esi
jne 0x4519e4
cmp dword [ebp - 0x34], 0x10000
jg 0x416d8b
mov eax, dword [ebp - 0x9c]
imul eax, dword [ebp - 0xa0]
add eax, dword [ebp - 0x34]
lea esi, [eax*2 + 0x38]
push esi
call dword [0x4a574c]
mov ebx, eax
pop ecx
test ebx, ebx
je 0x416d68
mov dword [ebx + 4], esi
xor esi, esi
mov dword [ebx], 0x50435245
mov eax, dword [ebp - 0x70]
mov dword [ebx + 8], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 0x24]
mov dword [ebx + 0x10], eax
mov eax, dword [ebp - 0x20]
mov dword [ebx + 0x14], eax
xor eax, eax
mov dword [ebx + 0x18], eax
push 0x1c
pop eax
mov word [ebx + 0x22], ax
mov ax, word [ebp - 0x9c]
mov word [ebx + 0x24], ax
mov ax, word [ebp - 0xa0]
mov word [ebx + 0x26], ax
xor eax, eax
mov dword [ebx + 0x28], eax
mov dword [ebx + 0x2c], eax
mov dword [ebx + 0x30], esi
mov dword [ebx + 0x34], esi
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x78], esi
mov dword [ebp - 0x74], esi
mov dword [ebp - 0x90], esi
mov dword [ebp - 0x88], esi
movzx eax, word [ebx + 0x22]
lea edx, [ebx + eax*2]
mov dword [ebp - 0xa4], edx
movzx eax, word [ebx + 0x24]
movzx ecx, word [ebx + 0x26]
imul ecx, eax
mov eax, dword [ebp - 0xc0]
mov dword [ebp - 0xb0], eax
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x60], esi
mov dword [ebp - 0x5c], esi
lea edi, [edx + ecx*2]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0xbc], edi
mov dword [ebp - 0xac], esi
test eax, eax
jg 0x451842
mov eax, dword [ebp - 0x38]
lea edx, [ebp - 0x18]
mov dword [ebp - 0x28], eax
mov eax, 0x83
push esi
mov word [edi], ax
lea eax, [ebp - 0xd0]
push eax
push esi
mov ecx, dword [ebx + 8]
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x18], edi
push eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x3c]
push eax
push esi
push esi
push esi
push esi
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.00416db8
mov ax, word [ebp - 0x90]
add esp, 0x34
mov word [ebx + 0x1e], ax
mov ax, word [ebp - 0x84]
mov word [ebx + 0x20], ax
mov ax, word [ebp - 0x88]
mov word [ebx + 0x1c], ax
mov eax, dword [ebp - 0x6c]
or eax, 2
mov dword [ebx + 0xc], eax
cmp dword [ebp - 0x64], 0
jne 0x451894
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x30], eax
mov esi, dword [ebp - 8]
xor edx, edx
mov dword [ebp - 8], esi
test esi, esi
jne 0x416bc8
mov eax, dword [ebp - 0x28]
cmp word [eax], dx
jne 0x4518a4
mov eax, dword [ebp - 0x18]
xor ecx, ecx
mov word [eax], cx
add eax, 2
mov dword [ebp - 0x18], eax
sub eax, edi
sar eax, 1
cmp eax, dword [ebp - 0x34]
jg 0x4518af
mov eax, dword [ebp - 0xb0]
mov ecx, dword [ebp - 0xc0]
cmp eax, ecx
ja 0x4518ba
cmp dword [ebp - 0x94], 0x800
jg 0x45192e
xor eax, eax
mov dword [ebp - 0xc0], eax
test esi, esi
jne 0x416c21
mov ax, word [ebx + 0x20]
cmp ax, word [ebx + 0x1e]
ja 0x45193b
test dword [ebp - 0x14], 0x20000
mov esi, dword [ebp - 4]
jne 0x416c3e
lea eax, [ebp - 0xd0]
mov edx, esi
push eax
mov ecx, edi
call fcn.0041878e
pop ecx
cmp dword [ebp - 0x5c], 0
jne 0x451946
mov esi, dword [ebp - 8]
test esi, esi
jne 0x4519dc
mov eax, dword [ebx + 8]
mov esi, 0x80
mov dword [ebp - 0x38], eax
mov dword [ebp + 0xc], esi
lea ecx, [esi + 0x7f]
test al, 0x10
jne 0x416cc4
xor esi, esi
lea eax, [ebp - 0xd0]
push esi
push eax
xor edx, edx
mov ecx, edi
call fcn.0041674e
pop ecx
pop ecx
test eax, eax
jne 0x451a12
mov eax, dword [ebp - 0xc]
test eax, eax
jns 0x416d05
push esi
lea edx, [ebp - 0xc]
mov ecx, edi
call fcn.00418eb5
mov edx, eax
mov eax, dword [ebp - 0xc]
pop ecx
test eax, eax
jns 0x416d08
lea eax, [ebp - 0xd0]
xor edx, edx
push esi
push eax
mov ecx, edi
call fcn.00418f7d
pop ecx
pop ecx
test eax, eax
jne 0x451a20
mov esi, 0x80
lea ecx, [esi + 0x7f]
mov eax, dword [ebp - 0x24]
test eax, eax
jns 0x416d22
mov esi, dword [ebp - 0x18]
xor eax, eax
mov edx, esi
push eax
lea eax, [ebp - 0xd0]
mov ecx, edi
push eax
push dword [ebp - 4]
call fcn.00418481
add esp, 0xc
test eax, eax
jne 0x416da5
movzx eax, word [edi + 2]
lea edi, [edi + eax*2]
cmp word [edi], 0x77
je 0x416cce
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x3c]
mov word [ebx + 0x18], dx
test al, 1
jne 0x451a2c
mov esi, 0x80
lea ecx, [esi + 0x7f]
or dword [ebx + 0xc], 0x10
jmp 0x416cc4
test byte [ebx + 8], 0x10
jne 0x416d8f
mov edx, dword [ebp - 0x30]
mov word [ebx + 0x1a], dx
test al, 1
je 0x416d54
cmp dword [ebp - 4], 0
je 0x416d99
cmp dx, si
jae 0x451aa3
mov eax, dword [ebp - 0xcc]
movzx ecx, dx
movzx eax, byte [ecx + eax]
cmp ax, dx
jne 0x416da0
or dword [ebx + 0xc], 0x40
jmp 0x416ccb
push 0x10
jmp 0x4514f3
push 0x11
jmp 0x416d6a
push 0x15
pop esi
jmp 0x4519e4
mov dword [ebp - 0x18], edx
jmp 0x4168d5
push 0x4e
jmp 0x4514f3
mov dword [ebp - 4], ecx
jmp 0x41690d
push 0x38
jmp 0x416d6a
push 0x14
jmp 0x416d6a
test al, 2
je 0x416ccb
jmp 0x416d28
cmp dx, cx
ja 0x416d54
jmp 0x416d42
or dword [ebx + 0xc], esi
jmp 0x416d54
or dword [ebx + 0xc], 0x8000
jmp 0x416cfc
xor eax, eax
jmp 0x416cfe
jge 0x4514f7
shl edx, cl
je 0x451545
or al, 0xb
push ebp
cld
jmp 0x451502
push edi
mov ecx, esi
call 0x89846776
pop ecx
pop ecx
cmp word [ebx], 0xff84
push ebx
push ebx
add al, 0xe9
cmp al, 0x53
push ebx
add al, 0x6a
dec edx
pop esi
jmp 0x3cc81a19
adc eax, dword [ebx + 0x3eb08c6]
add esi, 6
or ebx, 0x800
jmp 0x44517ba
dec byte [ebx]
fmul dword [ecx + 0x7d8bec5d]
invalid
cld
cmp word [edi + esi*2], ax
je 0xc1ba1521
jmp 0x4517d5
jge 0x4517c5
mov eax, dword [ebp + 0x10]
xor ecx, ecx
jmp 0x8984690c
mov dword [ebp - 0x4c], ecx
mov word [ebp - 0x46], ax
jmp 0xfc67695b
invalid
jle 0x89846b54
push dword [ebp - 0x2e3dd4a8]
mov esi, dword [ebx]
leave
jmp 0xe99eddfc
ror dword [ebx + 0x44e9c933], 1
lds ebx, [ecx - 0x17]
cwde
push edx
push ebx
add al, 0x8b
invalid
inc ecx
jbe 0x89b76c1f
invalid
je 0x45194b
movzx edx, sp
lodsd eax, dword [esi]
retf 0xcf2b
or al, 0x47
mov eax, dword [ebp + 0x80ff50]
mov ecx, dword [ebp + 0x80ff40]
jmp 0x4518ee
inc dword [eax + 0x6aa3eb00]
xor eax, 0xf875895e
push 0x35
pop esi
mov dword [ebp - 8], esi
jmp 0x4986c1f
mov dword [eax + 2], ecx
push 0xffffffffffffffff
lea ecx, [eax + 4]
mov edx, esi
call 0xf148db79
mov dword [ebp - 0x1c], eax
pop ecx
xor word [ebp - 0x6c], 0xff8b
jne 0x4519ee
jmp 0x451a32
push 0x46
pop esi
push ebx
mov esi, dword [ebx]
leave
jmp 0xe49edf51
sub eax, dword [ebp - 0x10]
sar eax, 1
mov dword [ecx], eax
mov ecx, esi
call fcn.0048e18b
add byte [ebp + 0xc], cl
mov dword [ecx], eax
jmp 0x89b76dd9
cld
je 0x451a01
push 0x19
pop esi
mov edi, dword [ebp - 0x20]
jmp 0x4986c73
add dword [esi + 0x3b], esp
ret 0xfb9