Function at 0x44e080
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x58
push ebx
push esi
mov esi, ecx
mov eax, edx
mov ecx, dword [ebp + 8]
add ecx, dword [ebp + 0xc]
cmp dword [ebp + 0xc], 0x12c
lea ebx, [esi + eax]
mov dword [ebp - 0x40], eax
push edi
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x4c], ecx
jb 0x44e6a4
cmp esi, 0x10001
ja 0x44e0c7
pop edi
pop esi
mov eax, 0xc00000bb
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
mov edi, dword [ebp + 0x14]
push 0x20000
push 0
push edi
call sub.msvcrt.dll_memset
mov eax, dword [ebp + 8]
add esp, 0xc
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x50], eax
xor eax, eax
mov dword [ebp - 0x2c], eax
lea eax, [edi + 0xa4b10]
mov dword [ebp - 0x18], esi
mov dword [edi + 0x20000], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0
mov dword [ebp - 0xc], eax
nop
push 0x800
lea eax, [edi + 0xa4210]
mov dword [ebp - 0x34], 0
push 0
push eax
mov dword [ebp - 0x38], 0
call sub.msvcrt.dll_memset
lea eax, [esi + 0x10000]
add esp, 0xc
mov dword [ebp - 0x30], eax
cmp eax, ebx
jbe 0x44e146
mov eax, ebx
mov dword [ebp - 0x30], ebx
lea edx, [eax - 5]
mov eax, dword [ebp - 0x40]
add eax, esi
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x28], eax
cmp edx, eax
jae 0x44e15b
mov dword [ebp - 0x28], edx
mov edi, dword [ebp - 0xc]
mov ecx, 1
mov eax, dword [ebp - 0x10]
add edi, 4
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edi
cmp esi, eax
jne 0x44e197
movzx eax, byte [esi]
mov ecx, dword [ebp + 0x14]
inc dword [ecx + eax*4 + 0xa4210]
mov ecx, 2
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x18], esi
mov dword [ebp - 4], edi
mov dword [ebp - 8], ecx
cmp esi, edx
jae 0x44e5c4
mov edi, esi
mov ebx, esi
sub edi, eax
and edi, 0x8001ffff
jns 0x44e1c0
dec edi
or edi, 0xfffe0000
inc edi
jmp 0x44e1c0
movzx eax, byte [ebx + 2]
mov esi, dword [ebp + 0x14]
movzx ecx, word [eax*2 + 0x409950]
movzx eax, byte [ebx + 1]
movzx eax, word [eax*2 + 0x409750]
xor ecx, eax
movzx eax, byte [ebx]
movzx eax, word [eax*2 + 0x409550]
xor ecx, eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + ecx*4]
mov dword [esi + ecx*4], ebx
mov ecx, esi
inc ebx
mov dword [ecx + edi*4 + 0x20000], eax
inc edi
mov eax, dword [ebp - 0x20]
and edi, 0x1ffff
cmp ebx, eax
jb 0x44e1c0
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 4]
mov ebx, dword [ebp - 8]
cmp esi, dword [ebp - 0x28]
jb 0x44e232
cmp esi, eax
jae 0x44e5be
push esi
mov edx, eax
lea ecx, [ebp - 0x58]
call fcn.0044c700
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x28], eax
mov eax, esi
sub eax, dword [ebp - 0x10]
and eax, 0x8001ffff
jns 0x44e245
dec eax
or eax, 0xfffe0000
inc eax
mov ecx, dword [ecx + eax*4 + 0x20000]
mov edx, dword [esi]
mov dword [ebp - 0x44], edx
lea eax, [ecx + 0x10000]
cmp eax, esi
jbe 0x44e49a
mov eax, dword [ecx]
xor eax, edx
jne 0x44e284
lea eax, [esi - 0x10000]
mov dword [ebp - 0x1c], 3
mov dword [ebp - 0x24], eax
mov edi, esi
xor eax, eax
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x18], eax
jmp 0x44e353
test eax, 0xffffff
je 0x44e303
sub ecx, dword [ebp - 0x10]
and ecx, 0x8001ffff
jns 0x44e29e
dec ecx
or ecx, 0xfffe0000
inc ecx
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + ecx*4 + 0x20000]
lea eax, [ecx + 0x10000]
cmp eax, esi
jbe 0x44e49a
mov eax, dword [ecx]
xor eax, edx
je 0x44e265
test eax, 0xffffff
je 0x44e303
sub ecx, dword [ebp - 0x10]
and ecx, 0x8001ffff
jns 0x44e2d6
dec ecx
or ecx, 0xfffe0000
inc ecx
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + ecx*4 + 0x20000]
lea eax, [ecx + 0x10000]
cmp eax, esi
jbe 0x44e49a
mov eax, dword [ecx]
xor eax, edx
je 0x44e265
test eax, 0xffffff
jne 0x44e49a
mov edi, esi
mov dword [ebp - 0x2c], ecx
lea eax, [esi - 0x10000]
mov dword [ebp - 0x14], edi
mov esi, dword [ebp + 0x14]
xor edx, edx
mov ebx, 3
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x1c], ebx
sub ecx, dword [ebp - 0x10]
and ecx, 0x8001ffff
jns 0x44e337
dec ecx
or ecx, 0xfffe0000
inc ecx
mov ecx, dword [esi + ecx*4 + 0x20000]
cmp ecx, eax
jbe 0x44e477
mov eax, dword [ebp - 0x44]
cmp eax, dword [ecx]
jne 0x44e467
mov esi, edi
mov ebx, dword [ebp - 0x3c]
mov eax, esi
add eax, 0x24
add esi, 4
add ecx, 4
cmp eax, ebx
jae 0x44e3d0
mov edx, dword [ecx]
mov eax, dword [esi]
cmp eax, edx
jne 0x44e434
mov edx, dword [ecx + 4]
mov eax, dword [esi + 4]
cmp eax, edx
jne 0x44e42e
mov edx, dword [ecx + 8]
mov eax, dword [esi + 8]
cmp eax, edx
jne 0x44e426
mov edx, dword [ecx + 0xc]
mov eax, dword [esi + 0xc]
cmp eax, edx
jne 0x44e41e
mov edx, dword [ecx + 0x10]
mov eax, dword [esi + 0x10]
cmp eax, edx
jne 0x44e416
mov edx, dword [ecx + 0x14]
mov eax, dword [esi + 0x14]
cmp eax, edx
jne 0x44e40e
mov edx, dword [ecx + 0x18]
mov eax, dword [esi + 0x18]
cmp eax, edx
jne 0x44e406
mov edx, dword [ecx + 0x1c]
mov eax, dword [esi + 0x1c]
cmp eax, edx
jne 0x44e3fe
add esi, 0x20
add ecx, 0x20
lea eax, [esi + 0x20]
cmp eax, ebx
jb 0x44e365
cmp esi, ebx
jae 0x44e3e0
mov al, byte [esi]
cmp al, byte [ecx]
jne 0x44e3e0
inc esi
inc ecx
cmp esi, ebx
jb 0x44e3d4
mov ebx, dword [ebp - 0x1c]
sub esi, edi
mov eax, ecx
sub ecx, esi
cmp esi, ebx
jbe 0x44e45f
mov dword [ebp - 0x2c], ecx
mov ebx, esi
mov dword [ebp - 0x1c], ebx
cmp eax, edi
ja 0x44e477
mov edx, dword [ebp - 0x18]
jmp 0x44e464
add esi, 0x1c
add ecx, 0x1c
jmp 0x44e434
add esi, 0x18
add ecx, 0x18
jmp 0x44e434
add esi, 0x14
add ecx, 0x14
jmp 0x44e434
add esi, 0x10
add ecx, 0x10
jmp 0x44e434
add esi, 0xc
add ecx, 0xc
jmp 0x44e434
add esi, 8
add ecx, 8
jmp 0x44e434
add esi, 4
add ecx, 4
cmp al, dl
jne 0x44e3e0
mov al, byte [esi + 1]
mov edi, dword [ebp - 0x14]
cmp al, byte [ecx + 1]
je 0x44e447
inc esi
inc ecx
jmp 0x44e3e0
mov al, byte [esi + 2]
cmp al, byte [ecx + 2]
je 0x44e457
add esi, 2
add ecx, 2
jmp 0x44e3e0
add esi, 3
add ecx, 3
jmp 0x44e3e0
mov edx, dword [ebp - 0x18]
add edx, esi
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp - 0x24]
inc edx
mov dword [ebp - 0x18], edx
cmp edx, 0xc
jb 0x44e324
mov edx, edi
lea esi, [edi + ebx]
sub edx, dword [ebp - 0x2c]
mov dword [ebp - 0x18], esi
cmp ebx, 3
jne 0x44e4e3
cmp edx, 0x1000
jbe 0x44e4e3
mov edx, dword [ebp - 0x44]
mov esi, edi
mov edi, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov ecx, dword [ebp + 0x14]
inc esi
movzx eax, dl
mov dword [ebp - 0x18], esi
inc dword [ecx + eax*4 + 0xa4210]
lea eax, [ebx + ebx]
mov byte [edi], dl
inc edi
mov dword [ebp - 4], edi
test ebx, ebx
jle 0x44e4c5
mov ebx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 8], ebx
jmp 0x44e214
mov edx, dword [ebp - 0xc]
mov ebx, 1
mov dword [ebp - 0xc], edi
add edi, 4
mov dword [ebp - 8], ebx
mov dword [ebp - 4], edi
mov dword [edx], eax
mov eax, dword [ebp - 0x20]
jmp 0x44e214
cmp edx, 0x100
jb 0x44e4fc
mov eax, edx
shr eax, 8
movzx ecx, byte [eax + 0x409b50]
add ecx, 8
jmp 0x44e503
movzx ecx, byte [edx + 0x409b50]
add dword [ebp - 0x34], ecx
or eax, 0xffffffff
shl eax, cl
add edx, eax
shl cl, 4
lea eax, [ebx - 3]
mov ebx, dword [ebp - 4]
lea edi, [ebx + 1]
cmp eax, 0xf
jb 0x44e582
mov ebx, eax
add cl, 0xf
mov dword [ebp - 0x44], ebx
sub eax, 0xf
mov ebx, dword [ebp - 4]
mov byte [ebx], cl
lea ebx, [edi + 1]
mov dword [ebp - 4], ebx
mov ebx, dword [ebp - 0x44]
cmp eax, 0xff
jae 0x44e54d
mov byte [edi], al
mov eax, 1
mov edi, dword [ebp - 4]
add dword [ebp - 0x38], eax
jmp 0x44e586
mov eax, dword [ebp - 4]
mov byte [edi], 0xff
add edi, 3
cmp ebx, 0x10000
jae 0x44e56b
mov word [eax], bx
mov eax, 3
add dword [ebp - 0x38], eax
jmp 0x44e586
xor esi, esi
mov dword [edi], ebx
mov word [eax], si
add edi, 4
mov esi, dword [ebp - 0x18]
mov eax, 7
add dword [ebp - 0x38], eax
jmp 0x44e586
add cl, al
mov byte [ebx], cl
movzx eax, cl
mov ecx, dword [ebp + 0x14]
inc dword [ecx + eax*4 + 0xa4610]
mov ecx, dword [ebp - 8]
mov word [edi], dx
add edi, 2
test ecx, ecx
mov dword [ebp - 4], edi
lea eax, [ecx*2 + 1]
mov ecx, dword [ebp + 0x14]
jle 0x44e4c5
mov ebx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 8], ebx
jmp 0x44e214
mov ebx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp + 0x14]
cmp esi, dword [ebp - 0x30]
jae 0x44e606
lea esp, [esp]
movzx eax, byte [esi]
inc dword [edx + eax*4 + 0xa4210]
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
lea eax, [ecx + ecx]
test ecx, ecx
jle 0x44e5eb
mov ecx, eax
jmp 0x44e5fb
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0xc], edi
add edi, 4
mov dword [ecx], eax
mov ecx, 1
cmp esi, dword [ebp - 0x30]
jb 0x44e5d0
mov dword [ebp - 4], edi
mov dword [ebp - 0x18], esi
test ecx, ecx
jle 0x44e61b
lea ebx, [ebx]
lea ecx, [ecx*2 + 1]
test ecx, ecx
jg 0x44e610
lea eax, [ecx*2 + 1]
mov ecx, dword [ebp - 0xc]
mov dword [ecx], eax
cmp esi, ebx
jb 0x44e638
inc dword [edx + 0xa4610]
mov edi, 1
jmp 0x44e63a
xor edi, edi
lea ebx, [edx + 0xa0000]
mov ecx, ebx
call fcn.0044d320
mov ecx, dword [ebp - 0x34]
add ecx, 0x1f
add eax, ecx
mov ecx, dword [ebp - 0x38]
shr eax, 5
lea eax, [ecx + eax*4]
mov ecx, dword [ebp - 0x48]
add eax, 0x102
add eax, ecx
cmp eax, dword [ebp - 0x4c]
jae 0x44e6a4
mov eax, dword [ebp + 0x14]
push edi
push ecx
push dword [ebp - 4]
add eax, 0xa4b10
mov ecx, ebx
mov edx, eax
mov dword [ebp - 0xc], eax
call fcn.0044d6e0
mov ebx, dword [ebp - 0x3c]
test edi, edi
mov edi, dword [ebp + 0x14]
mov dword [ebp - 0x48], eax
je 0x44e110
mov ecx, dword [ebp + 0x10]
sub eax, dword [ebp + 8]
pop edi
pop esi
mov dword [ecx], eax
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
pop edi
pop esi
mov eax, 0xc0000023
pop ebx
mov esp, ebp
pop ebp
ret 0x1c