Function at 0x44a440
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
mov ebx, dword [ebp + 0xc]
mov esi, ecx
test ebx, ebx
je 0x44a19a
push edx
call sub.KERNEL32.dll_GetStdHandle
test eax, eax
je 0x44a1a6
mov edi, eax
cmp eax, 0xffffffff
jne 0x44a1b9
call sub.KERNEL32.dll_GetLastError
jmp 0x44a1ab
mov dword [esi + 4], 0
mov byte [esi], 4
jmp 0x44a1b1
mov eax, 6
mov byte [esi], 0
mov dword [esi + 4], eax
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebp - 0x24], 0
lea eax, [ebp - 0x24]
push eax
push edi
call sub.KERNEL32.dll_GetConsoleMode
test eax, eax
je 0x44a226
mov ecx, dword [ebp + 0x10]
movzx eax, byte [ecx + 4]
test eax, eax
je 0x44a24c
mov ebx, ecx
mov ecx, dword [ebp + 8]
cmp al, 4
jae 0x44a3b1
movzx ecx, byte [ecx]
mov edx, ecx
and dl, 0xc0
cmp dl, 0x80
jne 0x44a2ae
mov byte [ebx + eax], cl
mov edx, ebx
movzx eax, byte [ebx + 4]
inc al
mov byte [ebx + 4], al
movzx ecx, byte [ebx]
movzx ebx, byte [ecx + 0x4a235c]
cmp al, bl
mov dword [ebp - 0x3c], ebx
jae 0x44a2b4
mov dword [esi + 4], 1
mov byte [esi], 4
jmp 0x44a1b1
sub esp, 8
mov edx, edi
lea ecx, [ebp - 0x24]
push 0
push 0
push ebx
push dword [ebp + 8]
call fcn.00440f80
add esp, 0x18
movsd xmm0, qword [ebp - 0x24]
movsd qword [esi], xmm0
jmp 0x44a1b1
cmp ebx, 0x1000
mov eax, 0x1000
cmovb eax, ebx
lea ecx, [ebp - 0x30]
push eax
push dword [ebp + 8]
push ecx
call fcn.00484a40
add esp, 0xc
cmp dword [ebp - 0x30], 0
je 0x44a2e9
mov edx, dword [ebp - 0x2c]
test edx, edx
je 0x44a302
xor ecx, ecx
push 0x4a24b8
push ebx
push dword [ebp + 8]
call fcn.00402f20
add esp, 0xc
push edx
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.00484a40
add esp, 0xc
cmp dword [ebp - 0x24], 0
jne 0x44a3ef
mov eax, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x1c]
jmp 0x44a2ef
mov byte [ebx + 4], 0
jmp 0x44a2da
movzx ecx, al
cmp al, 5
jae 0x44a3e2
lea eax, [ebp - 0x30]
push ecx
push edx
push eax
call fcn.00484a40
add esp, 0xc
mov eax, dword [ebp + 0x10]
cmp dword [ebp - 0x30], 0
mov byte [eax + 4], 0
je 0x44a331
mov byte [esi], 2
mov dword [esi + 4], 0x4a24ac
jmp 0x44a1b1
mov eax, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x28]
mov ecx, esi
mov edx, edi
push ebx
push eax
call 0x44a440
add esp, 8
jmp 0x44a1b1
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
movzx ecx, byte [eax + 0x4a235c]
cmp ecx, 2
jb 0x44a385
cmp ecx, ebx
jbe 0x44a385
mov ecx, dword [ebp + 0x10]
mov dword [esi + 4], 1
mov byte [ecx], al
mov byte [ecx + 4], 1
mov cl, 4
mov byte [esi], cl
jmp 0x44a1b1
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
cmp ecx, ebx
mov dword [ebp - 0x38], ecx
jne 0x44a413
lea ecx, [ebp - 0x24]
mov edx, edi
push ebx
push eax
call 0x44a440
add esp, 8
movzx eax, byte [ebp - 0x24]
cmp al, 4
jne 0x44a395
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x38], ebx
cmp eax, ebx
mov dword [ebp - 0x40], eax
je 0x44a21a
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x40]
lea edx, [ebp - 0x38]
push 0x4a254c
lea eax, [ebp - 0x24]
push eax
call fcn.00407c40
mov al, 2
mov dword [esi + 4], 0x4a24ac
mov byte [esi], al
jmp 0x44a1b1
movzx ecx, byte [ebp - 0x21]
movzx edi, word [ebp - 0x23]
mov edx, dword [ebp - 0x20]
mov byte [esi + 3], cl
mov word [esi + 1], di
mov byte [esi], al
mov dword [esi + 4], edx
jmp 0x44a1b1
mov dword [ebp - 0x24], 0x4a2514
mov dword [ebp - 0x20], 1
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x1c], 0x49e4b0
mov dword [ebp - 0x18], 0
push 0x4a251c
lea eax, [ebp - 0x24]
push eax
call fcn.0047ec60
push 0x4a252c
push 4
push ecx
call fcn.004847e0
movsd xmm0, qword [ebp - 0x20]
movsd qword [ebp - 0x38], xmm0
lea eax, [ebp - 0x38]
push 0x4a24c8
push 0x49eb60
push eax
push 0x2b
push 0x49eb14
call fcn.0047f190
mov dword [ebp - 0x24], 0
lea ecx, [ebp - 0x3c]
lea edx, [ebp - 0x38]
push 0x4a253c
lea eax, [ebp - 0x24]
push eax
call fcn.00407c40
mov esi, eax
push edi
call sub.KERNEL32.dll_CloseHandle
push esi
call fcn.00496790
nop dword [eax]
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x2050
call fcn.00499c80
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dword [esp + 0x20], edx
mov dword [esp], ecx
cmp ebx, 0x1001
jb 0x44a496
cmp byte [eax + 0x1000], 0xbf
mov ebx, 0x1000
jg 0x44a496
cmp byte [eax + 0xfff], 0xbf
mov ebx, 0xfff
jg 0x44a496
xor ebx, ebx
cmp byte [eax + 0xffe], 0xc0
setge bl
add ebx, 0xffd
lea esi, [esp + 0x4c]
push 0x1000
push esi
push ebx
push eax
push 8
push 0xfde9
call sub.KERNEL32.dll_MultiByteToWideChar
test eax, eax
je 0x44a79d
mov edi, eax
cmp eax, 0x1001
jae 0x44a7d4
mov dword [esp + 8], 0
lea eax, [esp + 8]
push 0
push eax
push edi
push esi
push dword [esp + 0x30]
call sub.KERNEL32.dll_WriteConsoleW
test eax, eax
je 0x44a753
mov ecx, dword [esp + 8]
cmp ecx, edi
je 0x44a765
jae 0x44a791
movzx eax, word [esp + ecx*2 + 0x4c]
add eax, 0x2312
movzx eax, ax
cmp eax, 0x312
jae 0x44a537
lea eax, [esp + ecx*2 + 0x4c]
inc ecx
mov dword [esp + 8], 0
mov ebx, ecx
push 0
lea ecx, [esp + 0xc]
push ecx
push 1
push eax
push dword [esp + 0x30]
call sub.KERNEL32.dll_WriteConsoleW
test eax, eax
je 0x44a776
mov ecx, ebx
cmp ecx, edi
ja 0x44a785
test ecx, ecx
je 0x44a763
lea eax, [ecx - 1]
xor ebx, ebx
and eax, 0x7fffffff
cmp eax, 7
jb 0x44a6fb
inc eax
mov dword [esp + 4], ecx
pxor xmm0, xmm0
lea edx, [esp + 0x54]
pxor xmm1, xmm1
mov ecx, eax
and ecx, 0xfffffff8
lea esi, [esp + ecx*2 + 0x4c]
mov edi, ecx
nop word cs:[eax + eax]
movq xmm2, qword [edx]
movdqa xmmword [esp + 0x30], xmm1
movq xmm1, qword [edx - 8]
movdqa xmm3, xmmword [0x49e440]
movdqa xmmword [esp + 0x20], xmm0
add edx, 0x10
add edi, 0xfffffff8
movdqa xmm0, xmm1
movdqa xmm5, xmm2
movdqa xmm7, xmm1
movdqa xmm4, xmm2
paddw xmm5, xmm3
paddw xmm0, xmm3
movdqa xmm3, xmmword [0x49e420]
pxor xmm4, xmmword [0x49e420]
pxor xmm5, xmmword [0x49e420]
pxor xmm0, xmm3
movdqa xmm3, xmmword [0x49e450]
pcmpgtw xmm4, xmmword [0x49e430]
movdqa xmm6, xmm3
pcmpgtw xmm3, xmm5
movdqa xmm5, xmmword [0x49e460]
punpcklwd xmm4, xmm4
pcmpgtw xmm6, xmm0
punpcklwd xmm3, xmm3
punpcklwd xmm6, xmm6
movdqa xmm0, xmm6
pandn xmm0, xmm5
movdqa xmm5, xmmword [0x49e470]
pand xmm6, xmm5
por xmm6, xmm0
movdqa xmm0, xmm3
pand xmm3, xmm5
movdqa xmm5, xmmword [0x49e420]
pandn xmm0, xmmword [0x49e460]
pxor xmm7, xmm5
por xmm3, xmm0
movdqa xmm0, xmmword [0x49e480]
pand xmm3, xmm4
paddw xmm1, xmm0
paddw xmm2, xmm0
movdqa xmm0, xmmword [0x49e490]
pxor xmm1, xmmword [0x49e420]
pxor xmm2, xmm5
pcmpeqd xmm5, xmm5
pcmpgtw xmm0, xmm1
movdqa xmm1, xmmword [0x49e490]
punpcklwd xmm0, xmm0
pcmpgtw xmm1, xmm2
movdqa xmm2, xmmword [0x49e430]
pcmpgtw xmm7, xmm2
movdqa xmm2, xmmword [0x49e470]
punpcklwd xmm7, xmm7
pand xmm6, xmm7
pand xmm0, xmm2
psubd xmm0, xmm5
pandn xmm7, xmm0
movdqa xmm0, xmmword [esp + 0x20]
por xmm7, xmm6
paddd xmm0, xmm7
punpcklwd xmm1, xmm1
pand xmm1, xmm2
psubd xmm1, xmm5
pandn xmm4, xmm1
movdqa xmm1, xmmword [esp + 0x30]
por xmm4, xmm3
paddd xmm1, xmm4
jne 0x44a580
paddd xmm1, xmm0
cmp eax, ecx
mov ecx, dword [esp + 4]
pshufd xmm0, xmm1, 0xee
paddd xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd ebx, xmm1
je 0x44a765
lea eax, [esp + ecx*2 + 0x4c]
jmp 0x44a719
add esi, 2
add ebx, edx
cmp esi, eax
je 0x44a765
movzx ecx, word [esi]
mov edx, 1
cmp ecx, 0x80
jb 0x44a710
movzx edi, cx
mov edx, 2
cmp edi, 0x800
jb 0x44a710
add ecx, 0x2312
xor edx, edx
movzx ecx, cx
cmp ecx, 0x312
setae dl
lea edx, [edx + edx + 1]
jmp 0x44a710
call sub.KERNEL32.dll_GetLastError
mov ecx, dword [esp]
mov byte [ecx], 0
mov dword [ecx + 4], eax
jmp 0x44a76e
xor ebx, ebx
mov eax, dword [esp]
mov dword [eax + 4], ebx
mov byte [eax], 4
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call sub.KERNEL32.dll_GetLastError
mov ecx, ebx
cmp ecx, edi
jbe 0x44a53f
push 0x4a25bc
push edi
push ecx
call fcn.004847e0
push 0x4a25ac
push edi
push ecx
call fcn.0047ee30
mov dword [esp + 8], str.Unexpected_error_in_MultiByteToWideChar
mov dword [esp + 0xc], 1
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], 0x49e4b0
mov dword [esp + 0x14], 0
lea eax, [esp + 8]
push 0x4a258c
push eax
call fcn.0047ec60
push 0x4a259c
push 0x1000
push edi
call fcn.004847e0
nop word cs:[eax + eax]
nop