Function at 0x441810
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov ebx, dword [ebp + 0xc]
cmp ebx, 0x10
jb 0x441e02
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp + 8]
lea eax, [ecx + ebx]
sub eax, dword [ebp + 0x10]
mov dword [esp + 0x2c], eax
mov eax, ebx
mov dword [esp + 8], ecx
mov edi, ecx
nop word cs:[eax + eax]
nop
mov ecx, dword [edi]
test ecx, ecx
je 0x441877
add eax, 0xfffffff0
movzx ecx, cl
lea esi, [ecx + 3]
and esi, 0xfffffffc
sub eax, esi
jb 0x441e0e
add ecx, 0x13
and ecx, 0xfffffffc
add edi, ecx
cmp eax, 0xf
ja 0x441850
cmp ebx, 0x10
jb 0x441e02
mov dword [esp + 0x24], edx
add edi, 4
mov dword [esp + 0x20], edi
jmp 0x4418ae
add dword [edi + 0x10], 1
movzx eax, byte [edx]
add eax, 0x13
and eax, 0xfffffffc
add edx, eax
mov dword [esp + 8], edx
xor esi, esi
cmp ebx, 0xf
jbe 0x441e04
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 8]
mov ebx, dword [eax]
test ebx, ebx
je 0x441e02
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x10]
cmp ecx, dword [eax + 0xc]
jne 0x441940
lea eax, [ecx + 4]
mov esi, 0x7f2bb746
cmp eax, 0xaaaaaaa
ja 0x441e04
mov dword [esp + 0xc], ecx
shl eax, 3
lea eax, [eax + eax*2]
push eax
push 1
call sub.api_ms_win_crt_heap_l1_1_0.dll_calloc
add esp, 8
test eax, eax
je 0x441e04
mov edi, eax
mov ebx, dword [esp + 0x1c]
mov esi, dword [ebx + 8]
mov eax, dword [esp + 0xc]
shl eax, 3
lea eax, [eax + eax*2]
push eax
push esi
push edi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
push esi
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
add dword [ebx + 0xc], 4
mov dword [ebx + 8], edi
mov ecx, dword [ebx + 0x10]
mov eax, dword [esp + 8]
mov bl, byte [eax]
mov bh, byte [eax + 1]
jmp 0x441943
mov edi, dword [eax + 8]
mov dword [esp + 0x18], edi
add bh, 0xff
xor esi, esi
cmp bh, 9
mov dword [esp + 0xc], ecx
mov al, 1
ja 0x441990
mov dword [esp + 0x10], eax
movzx eax, bh
xor esi, esi
mov ecx, 0x2ef
bt ecx, eax
mov edi, 0
jae 0x441996
movsx eax, bh
mov esi, dword [eax*4 + 0x4a72f0]
mov dword [esp + 0x10], 0
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
mov edi, eax
jmp 0x441996
mov dword [esp + 0x10], eax
xor edi, edi
mov dword [esp + 0x28], esi
movzx ebx, bl
lea eax, [ebx + edi]
add eax, 1
push eax
push 1
call sub.api_ms_win_crt_heap_l1_1_0.dll_calloc
add esp, 8
mov esi, 0x7f2bb746
test eax, eax
je 0x441e04
add ebx, 3
and ebx, 0xfffffffc
mov ecx, dword [esp + 0xc]
lea edx, [ecx + ecx*2]
mov ecx, dword [esp + 0x18]
lea esi, [ecx + edx*8]
add esi, 4
mov dword [esi], eax
cmp byte [esp + 0x10], 0
mov dword [esp + 0xc], edx
jne 0x4419f1
push edi
push dword [esp + 0x2c]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0x18]
add esp, 0xc
mov eax, dword [esp + 0x14]
sub eax, ebx
mov ebx, eax
mov ecx, dword [esp + 8]
movzx eax, byte [ecx]
test eax, eax
je 0x441a22
mov ecx, dword [esi]
add ecx, edi
mov edx, dword [esp + 8]
add edx, 0x10
push eax
push edx
push ecx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
add esp, 0xc
add edi, dword [esi]
add ebx, 0xfffffff0
mov esi, dword [esp + 0x18]
mov dword [esi + edx*8 + 8], edi
movzx eax, byte [ecx + 1]
mov dword [esi + edx*8], eax
mov edi, dword [esp + 0x1c]
mov eax, dword [edi + 4]
mov eax, dword [eax + 0x10]
test byte [eax + 0x61], 4
mov eax, dword [ecx + 4]
jne 0x441a60
test eax, eax
jne 0x441e20
lea eax, [ecx + 4]
mov dword [esp + 0x10], eax
jmp 0x441b60
lea edx, [ecx + 4]
mov dword [esp + 0x10], edx
test eax, eax
je 0x441b60
mov dword [esp + 0x30], 0
cmp word [ecx + 2], 0
jne 0x441e27
mov eax, dword [ecx + 8]
cmp eax, 0x10000
ja 0x441e15
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
test eax, eax
je 0x441e2e
mov ecx, edi
mov edx, dword [esp + 0xc]
lea edi, [esi + edx*8]
add edi, 0xc
mov dword [edi], eax
lea eax, [esp + 0x30]
push eax
push 0
mov eax, dword [esp + 0x18]
push dword [eax]
push dword [ecx + 4]
call fcn.0042a5a0
add esp, 0x10
test eax, eax
jne 0x441e1c
push dword [esp + 0x30]
call fcn.0042a5e0
add esp, 4
mov ecx, dword [eax + 0x20]
mov edx, 0x10200000
and ecx, edx
mov esi, 0x7f2bb7b2
cmp ecx, 0x200000
jne 0x441e3a
cmp word [eax + 0x1a], 0
je 0x441e3a
push dword [esp + 0x30]
call fcn.0042b360
add esp, 4
mov edx, eax
sar edx, 0x1f
mov ecx, dword [esp + 8]
mov ecx, dword [ecx + 8]
xor eax, ecx
or eax, edx
jne 0x441e35
mov dword [esp + 0x14], ebx
push 0
push ecx
push dword [edi]
push dword [esp + 0x3c]
call fcn.0042a7d0
add esp, 0x10
mov esi, eax
push dword [esp + 0x30]
call fcn.0042a790
add esp, 4
test esi, esi
mov edi, dword [esp + 8]
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0xc]
je 0x441bd4
jmp 0x441e04
mov edi, dword [esp + 0x20]
mov eax, dword [ecx + 8]
sub ebx, eax
jb 0x441e15
movzx ecx, word [ecx + 2]
lea edx, [eax + ecx]
mov esi, 0x7f2bb7aa
cmp edx, dword [esp + 0x2c]
ja 0x441e04
test eax, eax
je 0x441b94
add ecx, dword [ebp + 0x10]
cmp ecx, edi
jb 0x441e04
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov esi, 0x7f2bb746
test eax, eax
je 0x441e04
mov dword [esp + 0x14], ebx
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0xc]
mov dword [esi + ebx*8 + 0xc], eax
mov edi, dword [esp + 8]
movzx ecx, word [edi + 2]
add ecx, dword [ebp + 0x10]
push dword [edi + 8]
push ecx
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov ecx, esi
add esp, 0xc
mov eax, dword [edi + 4]
mov dword [ecx + ebx*8 + 0x14], eax
mov eax, dword [edi + 8]
mov dword [ecx + ebx*8 + 0x10], eax
mov eax, dword [edi + 0xc]
test eax, eax
mov edx, edi
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
je 0x441890
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
xor edi, edi
mov ecx, 0
mov dword [esp + 0x18], eax
test eax, eax
jne 0x441c17
movzx ecx, word [edx + 2]
add ecx, dword [ebp + 0x10]
movzx ebx, byte [edx]
test ebx, ebx
je 0x441c90
mov eax, dword [esp + 8]
lea esi, [eax + 0x10]
lea edx, [ebx - 1]
mov eax, ebx
and eax, 3
xor edi, edi
cmp edx, 3
jb 0x441c6b
and ebx, 0xfffffffc
xor edi, edi
nop dword [eax]
rol edi, 5
movsx edx, byte [esi]
xor edx, edi
rol edx, 5
movsx edi, byte [esi + 1]
xor edi, edx
rol edi, 5
movsx edx, byte [esi + 2]
xor edx, edi
rol edx, 5
movsx edi, byte [esi + 3]
add esi, 4
xor edi, edx
add ebx, 0xfffffffc
jne 0x441c40
test eax, eax
je 0x441c90
xor ebx, ebx
nop word cs:[eax + eax]
nop dword [eax + eax]
rol edi, 5
movsx edx, byte [esi + ebx]
xor edi, edx
add ebx, 1
cmp eax, ebx
jne 0x441c80
mov edx, dword [esp + 0x18]
test edx, edx
je 0x441d01
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 4]
xorps xmm0, xmm0
movaps xmmword [esp + 0xa0], xmm0
movaps xmmword [esp + 0x90], xmm0
movaps xmmword [esp + 0x80], xmm0
movaps xmmword [esp + 0x70], xmm0
movaps xmmword [esp + 0x60], xmm0
movaps xmmword [esp + 0x50], xmm0
movaps xmmword [esp + 0x40], xmm0
movaps xmmword [esp + 0x30], xmm0
lea ecx, [esp + 0x30]
push ecx
push edx
push eax
call fcn.0041afb0
add esp, 0xc
test eax, eax
jne 0x441e1c
rol edi, 0x10
xor edi, dword [esp + 0x38]
mov edx, dword [esp + 8]
mov eax, dword [edx + 0xc]
mov ebx, dword [esp + 0x14]
jmp 0x441d80
mov eax, dword [esp + 8]
mov edx, dword [eax + 8]
test edx, edx
je 0x441d74
add edx, 3
cmp edx, 4
mov ebx, dword [esp + 0x14]
jb 0x441d78
shr edx, 2
lea eax, [edx - 1]
mov esi, edx
and esi, 3
je 0x441d45
xor ebx, ebx
nop word [eax + eax]
rol edi, 0x10
xor edi, dword [ecx]
add ecx, 4
add ebx, 1
cmp esi, ebx
jne 0x441d30
sub edx, ebx
mov ebx, dword [esp + 0x14]
cmp eax, 3
jb 0x441d78
xor eax, eax
nop dword [eax]
rol edi, 0x10
xor edi, dword [ecx + eax*4]
rol edi, 0x10
xor edi, dword [ecx + eax*4 + 4]
rol edi, 0x10
xor edi, dword [ecx + eax*4 + 8]
rol edi, 0x10
xor edi, dword [ecx + eax*4 + 0xc]
add eax, 4
cmp edx, eax
jne 0x441d50
jmp 0x441d78
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 8]
mov eax, dword [esp + 0xc]
cmp eax, edi
mov edi, dword [esp + 0x1c]
je 0x441890
xorps xmm0, xmm0
movaps xmmword [esp + 0xa0], xmm0
movaps xmmword [esp + 0x90], xmm0
movaps xmmword [esp + 0x80], xmm0
movaps xmmword [esp + 0x70], xmm0
movaps xmmword [esp + 0x60], xmm0
movaps xmmword [esp + 0x50], xmm0
movaps xmmword [esp + 0x40], xmm0
movaps xmmword [esp + 0x30], xmm0
lea eax, [esp + 0x30]
push eax
mov eax, dword [esp + 0x14]
push dword [eax]
push dword [edi + 4]
call fcn.0041afb0
add esp, 0xc
test eax, eax
jne 0x441e1c
mov eax, dword [esp + 0x40]
cmp eax, dword [edi + 0x18]
jne 0x441dfb
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x24]
cmp eax, dword [ecx + 0x64]
mov edx, dword [esp + 8]
je 0x441890
mov esi, 0x7f2bb7a0
jmp 0x441e04
xor esi, esi
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, 0x7f2bb79e
jmp 0x441e04
mov esi, 0x7f2bb79f
jmp 0x441e04
mov esi, eax
jmp 0x441e04
mov esi, 0x7f2bb75a
jmp 0x441e04
mov esi, 0x7f2bb7aa
jmp 0x441e04
mov esi, 0x7f2bb746
jmp 0x441e04
mov esi, 0x7f2bb79f
push dword [esp + 0x30]
call fcn.0042a790
add esp, 4
jmp 0x441e04